| 1 | [Files]
|
|---|
| 2 | Source: dist\WikidPad.exe; DestDir: {app}; Flags: replacesameversion ignoreversion
|
|---|
| 3 | Source: dist\appbase.css; DestDir: {app}
|
|---|
| 4 | Source: dist\extensions\*.py; DestDir: {app}\extensions\; Flags: recursesubdirs ignoreversion
|
|---|
| 5 | Source: dist\icons\*.gif; DestDir: {app}\icons\; Flags: onlyifdoesntexist
|
|---|
| 6 | Source: dist\icons\pwiki.ico; DestDir: {app}\icons\; Flags: onlyifdoesntexist
|
|---|
| 7 | Source: dist\WikidPadHelp\*; DestDir: {app}\WikidPadHelp\; Flags: recursesubdirs ignoreversion
|
|---|
| 8 | Source: dist\license.txt; DestDir: {app}
|
|---|
| 9 | Source: dist\python26.dll; DestDir: {app}
|
|---|
| 10 | Source: dist\sqlite3.dll; DestDir: {app}
|
|---|
| 11 | Source: dist\wxmsw28uh_adv_vc.dll; DestDir: {app}; Check: ShouldInstallWxRuntime
|
|---|
| 12 | Source: dist\wxmsw28uh_core_vc.dll; DestDir: {app}; Check: ShouldInstallWxRuntime
|
|---|
| 13 | Source: dist\wxmsw28uh_html_vc.dll; DestDir: {app}; Check: ShouldInstallWxRuntime
|
|---|
| 14 | Source: dist\wxmsw28uh_stc_vc.dll; DestDir: {app}; Check: ShouldInstallWxRuntime
|
|---|
| 15 | Source: dist\wxmsw28uh_xrc_vc.dll; DestDir: {app}; Check: ShouldInstallWxRuntime
|
|---|
| 16 | Source: dist\wxbase28uh_net_vc.dll; DestDir: {app}; Check: ShouldInstallWxRuntime
|
|---|
| 17 | Source: dist\wxbase28uh_vc.dll; DestDir: {app}; Check: ShouldInstallWxRuntime
|
|---|
| 18 | Source: dist\wxbase28uh_xml_vc.dll; DestDir: {app}; Check: ShouldInstallWxRuntime
|
|---|
| 19 | Source: dist\_ctypes.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion
|
|---|
| 20 | Source: dist\_hashlib.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion
|
|---|
| 21 | Source: dist\pyexpat.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion
|
|---|
| 22 | Source: dist\_sqlite3.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion
|
|---|
| 23 | Source: dist\_socket.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion
|
|---|
| 24 | Source: dist\select.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion
|
|---|
| 25 | Source: dist\wx._controls_.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 26 | Source: dist\wx._core_.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 27 | Source: dist\wx._gdi_.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 28 | Source: dist\wx._grid.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 29 | Source: dist\wx._html.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 30 | Source: dist\wx._misc_.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 31 | Source: dist\wx._stc.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 32 | Source: dist\wx._windows_.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 33 | Source: dist\wx._xrc.pyd; DestDir: {app}; Flags: replacesameversion ignoreversion; Check: ShouldInstallWxRuntime
|
|---|
| 34 | Source: dist\WikidPad.xrc; DestDir: {app}
|
|---|
| 35 | Source: dist\WikidPad_*.po; DestDir: {app}; Flags: ignoreversion sortfilesbyextension
|
|---|
| 36 | Source: dist\langlist.txt; DestDir: {app}; Flags: replacesameversion ignoreversion
|
|---|
| 37 | Source: dist\gadfly.zip; DestDir: {app}; Flags: nocompression
|
|---|
| 38 | Source: dist\library.zip; DestDir: {app}; Flags: nocompression
|
|---|
| 39 | Source: WikidPad-winport.config; DestDir: {app}; DestName: WikidPad.config; Flags: onlyifdoesntexist; Check: PortableInstall
|
|---|
| 40 | Source: Microsoft.VC90.CRT.manifest; DestDir: {app}
|
|---|
| 41 | Source: winBinAdditions\msvcp90.dll; DestDir: {app}
|
|---|
| 42 | Source: winBinAdditions\msvcr90.dll; DestDir: {app}
|
|---|
| 43 | Source: winBinAdditions\msvcm90.dll; DestDir: {app}
|
|---|
| 44 | Source: winBinAdditions\gdiplus.dll; DestDir: {app}
|
|---|
| 45 | [Dirs]
|
|---|
| 46 | Name: {app}\extensions
|
|---|
| 47 | Name: {app}\icons
|
|---|
| 48 | Name: {app}\WikidPadHelp
|
|---|
| 49 | Name: {app}\WikidPadHelp\data
|
|---|
| 50 | Name: {app}\WikidPadHelp\files
|
|---|
| 51 | Name: {app}\export
|
|---|
| 52 | [Setup]
|
|---|
| 53 | #define verStr "2.2beta04_1"
|
|---|
| 54 | #define verNo "002.002.104.001"
|
|---|
| 55 |
|
|---|
| 56 | SolidCompression=true
|
|---|
| 57 | AppName=WikidPad
|
|---|
| 58 | AppVerName=WikidPad {#verStr}
|
|---|
| 59 | DefaultDirName={pf}\WikidPad
|
|---|
| 60 | DefaultGroupName=WikidPad
|
|---|
| 61 | AppID={{22A83C29-58A8-4CAB-8EDC-918D74F8429E}
|
|---|
| 62 | VersionInfoVersion={#verNo}
|
|---|
| 63 | VersionInfoTextVersion=WikidPad {#verStr}
|
|---|
| 64 | LicenseFile=license.txt
|
|---|
| 65 | AllowNoIcons=true
|
|---|
| 66 | ShowLanguageDialog=yes
|
|---|
| 67 | Compression=lzma/ultra
|
|---|
| 68 | OutputBaseFilename=WikidPad-{#verStr}
|
|---|
| 69 | InternalCompressLevel=ultra
|
|---|
| 70 | AppCopyright=© 2005-2011 Jason Horman, Michael Butscher, Gerhard Reitmayr
|
|---|
| 71 | UsePreviousAppDir=true
|
|---|
| 72 | PrivilegesRequired=none
|
|---|
| 73 | CreateUninstallRegKey=not PortableInstall
|
|---|
| 74 | Uninstallable=not PortableInstall
|
|---|
| 75 | [INI]
|
|---|
| 76 | Filename: {app}\binInst.ini; Section: Main; Key: CurrVersion; String: {#verNo}; Flags: createkeyifdoesntexist uninsdeleteentry uninsdeletesectionifempty
|
|---|
| 77 | Filename: {app}\binInst.ini; Section: Main; Key: wxVersion; String: 002.008.010.001; Flags: createkeyifdoesntexist uninsdeleteentry uninsdeletesectionifempty; Check: ShouldInstallWxRuntime
|
|---|
| 78 | Filename: {app}\binInst.ini; Section: Main; Key: portableInstall; String: 0; Flags: uninsdeleteentry uninsdeletesectionifempty; Check: not PortableInstall
|
|---|
| 79 | Filename: {app}\binInst.ini; Section: Main; Key: portableInstall; String: 1; Flags: uninsdeleteentry uninsdeletesectionifempty; Check: PortableInstall
|
|---|
| 80 | [Icons]
|
|---|
| 81 | Name: {code:IconDest|Dummy}\WikidPad; Filename: {app}\WikidPad.exe; IconFilename: {app}\icons\pwiki.ico; IconIndex: 0; Check: not PortableInstall
|
|---|
| 82 | Name: {code:IconDest|Dummy}\{cm:UninstallProgram, WikidPad}; Filename: {uninstallexe}; Check: not PortableInstall
|
|---|
| 83 | [Registry]
|
|---|
| 84 | Root: HKCR; SubKey: .wiki; ValueType: string; ValueData: wikidPadFile; Flags: uninsdeletekey; Tasks: assocWiki; Check: GlobalRegClasses
|
|---|
| 85 | Root: HKCR; SubKey: wikidPadFile; ValueType: string; ValueData: WikidPad File; Flags: uninsdeletekey; Tasks: assocWiki; Check: GlobalRegClasses
|
|---|
| 86 | Root: HKCR; SubKey: wikidPadFile\Shell\Open\Command; ValueType: string; ValueData: """{app}\WikidPad.exe"" ""%1"""; Flags: uninsdeletevalue; Tasks: assocWiki; Check: GlobalRegClasses
|
|---|
| 87 | Root: HKCR; Subkey: wikidPadFile\DefaultIcon; ValueType: string; ValueData: {app}\icons\pwiki.ico,0; Flags: uninsdeletevalue; Tasks: assocWiki; Check: GlobalRegClasses
|
|---|
| 88 | Root: HKCR; Subkey: wiki; ValueType: string; ValueData: URL:WikidPad Protocol; Flags: uninsdeletekey; Tasks: assocWikiUrl; Check: GlobalRegClasses
|
|---|
| 89 | Root: HKCR; Subkey: wiki; ValueType: string; ValueName: URL Protocol; Flags: uninsdeletevalue; Tasks: assocWikiUrl; Check: GlobalRegClasses
|
|---|
| 90 | Root: HKCR; Subkey: wiki\shell; ValueType: string; ValueData: open; Flags: uninsdeletevalue; Tasks: assocWikiUrl; Check: GlobalRegClasses
|
|---|
| 91 | Root: HKCR; Subkey: wiki\DefaultIcon; ValueType: string; ValueData: {app}\icons\pwiki.ico,0; Flags: uninsdeletevalue; Tasks: assocWikiUrl; Check: GlobalRegClasses
|
|---|
| 92 | Root: HKCR; Subkey: wiki\shell\open\command; ValueType: string; ValueData: """{app}\WikidPad.exe"" ""%1"""; Flags: uninsdeletevalue; Tasks: assocWikiUrl; Check: GlobalRegClasses
|
|---|
| 93 |
|
|---|
| 94 | Root: HKCU; Subkey: Software\Classes\.wiki; ValueType: string; ValueData: wikidPadFile; Flags: uninsdeletekey; Check: UserRegClasses
|
|---|
| 95 | Root: HKCU; SubKey: Software\Classes\wikidPadFile; ValueType: string; ValueData: WikidPad File; Flags: uninsdeletekey; Tasks: assocWiki; Check: UserRegClasses
|
|---|
| 96 | Root: HKCU; SubKey: Software\Classes\wikidPadFile\Shell\Open\Command; ValueType: string; ValueData: """{app}\WikidPad.exe"" ""%1"""; Flags: uninsdeletevalue; Tasks: assocWiki; Check: UserRegClasses
|
|---|
| 97 | Root: HKCU; Subkey: Software\Classes\wikidPadFile\DefaultIcon; ValueType: string; ValueData: {app}\icons\pwiki.ico,0; Flags: uninsdeletevalue; Tasks: assocWiki; Check: UserRegClasses
|
|---|
| 98 | Root: HKCU; Subkey: Software\Classes\wiki; ValueType: string; ValueData: URL:WikidPad Protocol; Flags: uninsdeletekey; Tasks: assocWikiUrl; Check: UserRegClasses
|
|---|
| 99 | Root: HKCU; Subkey: Software\Classes\wiki; ValueType: string; ValueName: URL Protocol; Flags: uninsdeletevalue; Tasks: assocWikiUrl; Check: UserRegClasses
|
|---|
| 100 | Root: HKCU; Subkey: Software\Classes\wiki\shell; ValueType: string; ValueData: open; Flags: uninsdeletevalue; Tasks: assocWikiUrl; Check: UserRegClasses
|
|---|
| 101 | Root: HKCU; Subkey: Software\Classes\wiki\DefaultIcon; ValueType: string; ValueData: {app}\icons\pwiki.ico,0; Flags: uninsdeletevalue; Tasks: assocWikiUrl; Check: UserRegClasses
|
|---|
| 102 | Root: HKCU; Subkey: Software\Classes\wiki\shell\open\command; ValueType: string; ValueData: """{app}\WikidPad.exe"" ""%1"""; Flags: uninsdeletevalue; Tasks: assocWikiUrl; Check: UserRegClasses
|
|---|
| 103 |
|
|---|
| 104 | [Tasks]
|
|---|
| 105 | Name: assocWiki; Description: Associate WikidPad with .wiki files; Check: not PortableInstall
|
|---|
| 106 | Name: assocWikiUrl; Description: "Handle URLs with ""wiki:"" by WikidPad"; Check: not PortableInstall
|
|---|
| 107 | [InstallDelete]
|
|---|
| 108 | Name: {app}\regexpr.cache; Type: files
|
|---|
| 109 | Name: {app}\zlib.pyd; Type: files
|
|---|
| 110 | Name: {app}\extensions\WikiSyntax.py; Type: files
|
|---|
| 111 |
|
|---|
| 112 | [UninstallDelete]
|
|---|
| 113 | Name: {app}\regexpr.cache; Type: files
|
|---|
| 114 | Name: {app}\binInst.ini; Type: files
|
|---|
| 115 | Name: {app}\WikidPad_*.xrc; Type: files
|
|---|
| 116 | Name: {app}\extensions\*.pyc; Type: filesandordirs
|
|---|
| 117 | Name: {app}\extensions\*.pyo; Type: filesandordirs
|
|---|
| 118 | Name: {app}\extensions\wikidPadParser\*.pyc; Type: filesandordirs
|
|---|
| 119 | Name: {app}\extensions\wikidPadParser\*.pyo; Type: filesandordirs
|
|---|
| 120 | [Run]
|
|---|
| 121 | Filename: {app}\WikidPad.exe; WorkingDir: {app}; Description: Start WikidPad; Flags: postinstall skipifsilent nowait
|
|---|
| 122 | [LangOptions]
|
|---|
| 123 | LanguageID=$0000
|
|---|
| 124 | [Code]
|
|---|
| 125 | var
|
|---|
| 126 | PortableModeQuestion: TInputOptionWizardPage;
|
|---|
| 127 | UserModeQuestion: TInputOptionWizardPage;
|
|---|
| 128 | NotAdminMessage: TOutputMsgWizardPage;
|
|---|
| 129 |
|
|---|
| 130 |
|
|---|
| 131 | function PortableInstall: Boolean;
|
|---|
| 132 | begin
|
|---|
| 133 | result := PortableModeQuestion.SelectedValueIndex = 1
|
|---|
| 134 | end;
|
|---|
| 135 |
|
|---|
| 136 |
|
|---|
| 137 | function ShouldAskForUsermode: Boolean;
|
|---|
| 138 | begin
|
|---|
| 139 | result := UsingWinNT and IsAdminLoggedOn;
|
|---|
| 140 | end;
|
|---|
| 141 |
|
|---|
| 142 | procedure InitializeWizard;
|
|---|
| 143 | begin
|
|---|
| 144 | PortableModeQuestion := CreateInputOptionPage(wpLicense,
|
|---|
| 145 | 'Portable installation?',
|
|---|
| 146 | 'Install in portable mode, e.g. on a USB stick (to uninstall, just delete the created folder)',
|
|---|
| 147 | '',
|
|---|
| 148 | True, False);
|
|---|
| 149 | PortableModeQuestion.Add('Standard installation');
|
|---|
| 150 | PortableModeQuestion.Add('Portable installation (no uninstaller, no file associations)');
|
|---|
| 151 |
|
|---|
| 152 | PortableModeQuestion.SelectedValueIndex := 0;
|
|---|
| 153 |
|
|---|
| 154 |
|
|---|
| 155 | if ShouldAskForUsermode then begin
|
|---|
| 156 | UserModeQuestion := CreateInputOptionPage(PortableModeQuestion.ID,
|
|---|
| 157 | 'Installation mode',
|
|---|
| 158 | 'You install as admin, choose for whom you want to install',
|
|---|
| 159 | 'Install WikidPad for',
|
|---|
| 160 | True, False);
|
|---|
| 161 | UserModeQuestion.Add('All Users');
|
|---|
| 162 | UserModeQuestion.Add('Current User');
|
|---|
| 163 |
|
|---|
| 164 | UserModeQuestion.SelectedValueIndex := 0;
|
|---|
| 165 | end
|
|---|
| 166 | else if UsingWinNT then begin
|
|---|
| 167 | NotAdminMessage := CreateOutputMsgPage(PortableModeQuestion.ID,
|
|---|
| 168 | 'Not in admin mode', 'You should install as admin',
|
|---|
| 169 | 'This program can be installed for all users if you run it as administrator. ' +
|
|---|
| 170 | 'You can now abort the setup and log in as administrator.'#13#13 +
|
|---|
| 171 | 'If you cannot or don''t want to do that, you can just continue and install ' +
|
|---|
| 172 | 'it for current user only.'#13#13 +
|
|---|
| 173 | 'If you continue, be aware that the installer maybe can''t ' +
|
|---|
| 174 | 'install in the suggested default directory. You may receive an ' +
|
|---|
| 175 | 'error message if you try that.');
|
|---|
| 176 | end
|
|---|
| 177 | end;
|
|---|
| 178 |
|
|---|
| 179 | function IsUserModePage(PageID: Integer): Boolean;
|
|---|
| 180 | begin
|
|---|
| 181 | if ShouldAskForUsermode then begin
|
|---|
| 182 | result := UserModeQuestion.ID = PageID;
|
|---|
| 183 | end
|
|---|
| 184 | else if UsingWinNT then
|
|---|
| 185 | result := NotAdminMessage.ID = PageID;
|
|---|
| 186 | end;
|
|---|
| 187 |
|
|---|
| 188 |
|
|---|
| 189 | function ShouldSkipPage(PageID: Integer): Boolean;
|
|---|
| 190 | begin
|
|---|
| 191 | if PortableInstall then begin
|
|---|
| 192 | result := IsUserModePage(PageID) or (PageID = wpSelectProgramGroup);
|
|---|
| 193 | end
|
|---|
| 194 | else
|
|---|
| 195 | result := false;
|
|---|
| 196 | end;
|
|---|
| 197 |
|
|---|
| 198 |
|
|---|
| 199 | function IconDest(Param: String): String;
|
|---|
| 200 | begin
|
|---|
| 201 | if ShouldAskForUsermode() and (UserModeQuestion.SelectedValueIndex = 0) then
|
|---|
| 202 | // All users
|
|---|
| 203 | Result := ExpandConstant('{commonprograms}\{groupname}')
|
|---|
| 204 | else
|
|---|
| 205 | // Current user
|
|---|
| 206 | Result := ExpandConstant('{userprograms}\{groupname}');
|
|---|
| 207 | end;
|
|---|
| 208 |
|
|---|
| 209 |
|
|---|
| 210 | function GlobalRegClasses: Boolean;
|
|---|
| 211 | // Returns true iff registry entries should go to global HK_CR root.
|
|---|
| 212 | // If false, they go to HK_CU\Software\Classes (or nowhere in portable mode)
|
|---|
| 213 | begin
|
|---|
| 214 | if PortableInstall then begin
|
|---|
| 215 | Result := false;
|
|---|
| 216 | exit;
|
|---|
| 217 | end;
|
|---|
| 218 |
|
|---|
| 219 | if ShouldAskForUsermode() and (UserModeQuestion.SelectedValueIndex = 0) then
|
|---|
| 220 | Result := true
|
|---|
| 221 | else
|
|---|
| 222 | Result := not UsingWinNT; // On Win 98/ME, it should always return true
|
|---|
| 223 | end;
|
|---|
| 224 |
|
|---|
| 225 |
|
|---|
| 226 | function UserRegClasses: Boolean;
|
|---|
| 227 | // Returns true iff registry entries should go to HK_CU\Software\Classes
|
|---|
| 228 | begin
|
|---|
| 229 | if PortableInstall then begin
|
|---|
| 230 | Result := false;
|
|---|
| 231 | exit;
|
|---|
| 232 | end;
|
|---|
| 233 |
|
|---|
| 234 | Result := not GlobalRegClasses;
|
|---|
| 235 | end;
|
|---|
| 236 |
|
|---|
| 237 |
|
|---|
| 238 | function ShouldInstallWxRuntime: Boolean;
|
|---|
| 239 | // Returns true iff wxWidgets runtime should be installed.
|
|---|
| 240 | begin
|
|---|
| 241 | Result := not GetIniBool('PreventInstall', 'wxPy2_8_10_1', false,
|
|---|
| 242 | ExpandConstant('{app}\binInst.ini'));
|
|---|
| 243 | end;
|
|---|
| 244 |
|
|---|
| 245 |
|
|---|
| 246 |
|
|---|
| 247 | function MemoAppend(Memo, NewContent, NewLine: String): String;
|
|---|
| 248 | begin
|
|---|
| 249 | if NewContent <> '' then
|
|---|
| 250 | result := Memo + NewContent + NewLine + NewLine
|
|---|
| 251 | else
|
|---|
| 252 | result := Memo;
|
|---|
| 253 | end;
|
|---|
| 254 |
|
|---|
| 255 |
|
|---|
| 256 |
|
|---|
| 257 | function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo,
|
|---|
| 258 | MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
|
|---|
| 259 | var
|
|---|
| 260 | Answer: String;
|
|---|
| 261 |
|
|---|
| 262 | begin
|
|---|
| 263 | Answer := '';
|
|---|
| 264 |
|
|---|
| 265 | Answer := MemoAppend(Answer, MemoUserInfoInfo, NewLine);
|
|---|
| 266 | Answer := MemoAppend(Answer, MemoDirInfo, NewLine);
|
|---|
| 267 | Answer := MemoAppend(Answer, MemoTypeInfo, NewLine);
|
|---|
| 268 | Answer := MemoAppend(Answer, MemoComponentsInfo, NewLine);
|
|---|
| 269 |
|
|---|
| 270 | if not PortableInstall then
|
|---|
| 271 | Answer := MemoAppend(Answer, MemoGroupInfo, NewLine);
|
|---|
| 272 |
|
|---|
| 273 | Answer := MemoAppend(Answer, MemoTasksInfo, NewLine);
|
|---|
| 274 |
|
|---|
| 275 | Result := Answer;
|
|---|
| 276 | end;
|
|---|
| 277 |
|
|---|
| 278 |
|
|---|
| 279 | procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
|---|
| 280 | var
|
|---|
| 281 | resultCode: Integer;
|
|---|
| 282 | begin
|
|---|
| 283 | // Call our function just before the actual uninstall process begins
|
|---|
| 284 | if CurUninstallStep = usUninstall then
|
|---|
| 285 | begin
|
|---|
| 286 | if MsgBox('Do you also want to remove your personal settings?',
|
|---|
| 287 | mbConfirmation, MB_YESNO) = idYes then
|
|---|
| 288 | begin
|
|---|
| 289 | Exec(ExpandConstant('{app}/WikidPad.exe'), '--deleteconfig',
|
|---|
| 290 | ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, resultCode);
|
|---|
| 291 | end;
|
|---|
| 292 | end;
|
|---|
| 293 | end;
|
|---|