|
2 | 2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! |
3 | 3 |
|
4 | 4 | #define MyAppName "NETworkManager" |
5 | | -#define MyAppVersion "2023.1.8.0" |
| 5 | +#define MyAppVersion "2023.2.16.0" |
6 | 6 | #define MyAppPublisher "BornToBeRoot" |
7 | 7 | #define MyAppURL "https://github.com/BornToBeRoot/NETworkManager/" |
8 | 8 | #define MyAppExeName "NETworkManager.exe" |
@@ -69,3 +69,62 @@ Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: de |
69 | 69 | [Run] |
70 | 70 | Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent |
71 | 71 |
|
| 72 | +[Code] |
| 73 | +{ ///////////////////////////////////////////////////////////////////// } |
| 74 | +function GetUninstallString(): String; |
| 75 | +var |
| 76 | + sUnInstPath: String; |
| 77 | + sUnInstallString: String; |
| 78 | +begin |
| 79 | + sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1'); |
| 80 | + sUnInstallString := ''; |
| 81 | + if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then |
| 82 | + RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString); |
| 83 | + Result := sUnInstallString; |
| 84 | +end; |
| 85 | +
|
| 86 | +
|
| 87 | +{ ///////////////////////////////////////////////////////////////////// } |
| 88 | +function IsUpgrade(): Boolean; |
| 89 | +begin |
| 90 | + Result := (GetUninstallString() <> ''); |
| 91 | +end; |
| 92 | +
|
| 93 | +
|
| 94 | +{ ///////////////////////////////////////////////////////////////////// } |
| 95 | +function UnInstallOldVersion(): Integer; |
| 96 | +var |
| 97 | + sUnInstallString: String; |
| 98 | + iResultCode: Integer; |
| 99 | +begin |
| 100 | +{ Return Values: } |
| 101 | +{ 1 - uninstall string is empty } |
| 102 | +{ 2 - error executing the UnInstallString } |
| 103 | +{ 3 - successfully executed the UnInstallString } |
| 104 | +
|
| 105 | + { default return value } |
| 106 | + Result := 0; |
| 107 | +
|
| 108 | + { get the uninstall string of the old app } |
| 109 | + sUnInstallString := GetUninstallString(); |
| 110 | + if sUnInstallString <> '' then begin |
| 111 | + sUnInstallString := RemoveQuotes(sUnInstallString); |
| 112 | + if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then |
| 113 | + Result := 3 |
| 114 | + else |
| 115 | + Result := 2; |
| 116 | + end else |
| 117 | + Result := 1; |
| 118 | +end; |
| 119 | +
|
| 120 | +{ ///////////////////////////////////////////////////////////////////// } |
| 121 | +procedure CurStepChanged(CurStep: TSetupStep); |
| 122 | +begin |
| 123 | + if (CurStep=ssInstall) then |
| 124 | + begin |
| 125 | + if (IsUpgrade()) then |
| 126 | + begin |
| 127 | + UnInstallOldVersion(); |
| 128 | + end; |
| 129 | + end; |
| 130 | +end; |
0 commit comments