给你个我用的例子:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
; 脚本用 Inno Setup 脚本向导生成。; 查阅文档获取创建 INNO SETUP 脚本文件详细资料![Setup]AppName=Common downloaderAppVerName=Common downloaderDefaultDirName={pf}XXXCommon downloaderDefaultGroupName=XXXCommon downloaderDisableProgramGroupPage=yesOutputDir= .SetupOutputBaseFilename=Common downloader setup V1.0.0Compression=lzmaSolidCompression=yesVersionInfoCompany=XXXVersionInfoVersion=1.0.0[Languages]Name: "Chinese"; MessagesFile: "compiler:LanguagesChinese.isl"Name: "English"; MessagesFile: "compiler:LanguagesEnglish.isl"[Tasks]Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: dontinheritcheck[Files]Source: "CMDL.exe"; DestName: "Common downloader.exe"; DestDir: "{app}"; Flags: ignoreversionSource: "DL.dll"; DestDir: "{app}"; Flags: ignoreversionSource: "DM.dll"; DestDir: "{app}"; Flags: ignoreversionSource: "config.ini"; DestDir: "{app}"; Flags: ignoreversionSource: "App*"; DestDir: "{app}\App"; Flags: ignoreversion recursesubdirs createallsubdirsSource: "Boot*"; DestDir: "{app}\Boot"; Flags: ignoreversion recursesubdirs createallsubdirsSource: "Resource_cn*"; DestDir: "{app}Resource"; Languages: Chinese; Flags: ignoreversion recursesubdirs createallsubdirsSource: "Resource_en*"; DestDir: "{app}Resource"; Languages: English; Flags: ignoreversion recursesubdirs createallsubdirs; 注意: 不要在任何共享系统文件中使用“Flags: ignoreversion”[Icons]Name: "{group}Common downloader"; Filename: "{app}Common downloader.exe"Name: "{group}{cm:UninstallProgram,Common downloader}"; Filename: "{uninstallexe}"Name: "{userdesktop}Common downloader"; Filename: "{app}Common downloader.exe"; Tasks: desktopicon[Run]Filename: "{app}Common downloader.exe"; Description: "{cm:LaunchProgram,Common downloader}"; Flags: nowait postinstall skipifsilent[Registry]Root: HKLM; Subkey: "SoftwareXXX"; Flags: createvalueifdoesntexistRoot: HKLM; Subkey: "SoftwareXXXCommon downloader"; Flags: uninsdeletekeyifemptyRoot: HKLM; Subkey: "SoftwareXXXCommon downloader"; ValueType: string; ValueName: "Path"; ValueData: "{app}"Root: HKLM; Subkey: "SoftwareXXXCommon downloader"; ValueType: string; ValueName: "Version"; ValueData: "V1.0.0"Root: HKLM; Subkey: "SoftwareXXXCommon downloader"; ValueType: dword; ValueName: "VersionNum"; ValueData: "100"Root: HKLM; Subkey: "SoftwareXXXCommon downloader"; ValueType: string; ValueName: "Release Date"; ValueData: "2008/09/29"[Code]function InitializeSetup(): Boolean;var Version: string; strPath: string; ResultCode: Integer;begin Result:= TRUE; //read the version if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SoftwareXXXCommon downloader', 'Version', Version) then begin // Successfully read the value Version := Format('Exist the version %s,whether uninstall it?',[Version]); if MsgBox(Version,mbConfirmation,MB_YESNO) = IDYES then begin //read the path if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SoftwareXXXCommon downloader', 'Path', strPath) then begin // Successfully read the value strPath:= strPath + 'unins000.exe'; Exec(ExpandConstant(strPath), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); end; end else Result:= FALSE; end;end; |
这个例子可以在安装之前卸载以前的版本,并提示你卸载之前的版本信息。