1[_ISTool] 2EnableISX=true 3[Defines] 4#define AppVersion GetEnv('LazVersion') 5// LazVersion may be 0.9.30.2RC1 6// A valid file version contains only digits, so drop the RC part 7#if pos('RC',AppVersion)>0 8 #define FileVersion = copy(AppVersion, 1, pos('RC', AppVersion)-1) 9#else 10 #if pos('pre',AppVersion)>0 11 #define FileVersion = copy(AppVersion, 1, pos('pre', AppVersion)-1) 12 #else 13 #define FileVersion = AppVersion 14 #endif 15#endif 16#define FPCVersion GetEnv('FPCVersion') 17#define FPCTargetOS GetEnv('FPCTargetOS') 18#define FPCTargetCPU GetEnv('FPCTARGETCPU') 19#define FPCFullTarget GetEnv('FPCFullTarget') 20#define AppName "Lazarus" 21#define SetupDate GetEnv('DateStamp') 22#define BuildDir GetEnv('BuildDir') 23#define QtInfDir GetEnv('QTINFDIR') 24#define HasQT5 GetEnv('HASQT5') 25#define Qt5InfDir GetEnv('QT5INFDIR') 26#define HasOpenSSL GetEnv('HASOPENSSL') 27#define OpenSSLDir GetEnv('OPENSSLDIR') 28#define IDEWidgetSet GetEnv('IDE_WidgetSet') 29#define OutputFileName GetEnv('OutputFileName') 30#define CHMHELPFILES GetEnv('CHMHELPFILES') 31[Setup] 32AllowNoIcons=yes 33AppName={#AppName} 34; AddId: registry/uninstall info: Max 127 char 35AppId={code:GetAppId} 36AppVersion={#AppVersion} 37AppVerName={#AppName} {#AppVersion} 38AppPublisher=Lazarus Team 39AppPublisherURL=http://www.lazarus.freepascal.org/ 40AppSupportURL=http://www.lazarus.freepascal.org/ 41AppUpdatesURL=http://www.lazarus.freepascal.org/ 42#if FPCTargetCPU=="x86_64" 43ArchitecturesInstallIn64BitMode=x64 44ArchitecturesAllowed=x64 45#endif 46DefaultDirName={code:GetDefDir|{sd}\lazarus} 47DefaultGroupName={#AppName} 48AppendDefaultDirName=no 49DirExistsWarning=no 50OutputBaseFilename={#OutputFileName} 51;InternalCompressLevel=ultra64 52Compression=lzma2/ultra64 53LZMADictionarySize=131072 54;LZMADictionarySize=262144 55LZMAUseSeparateProcess=yes 56LZMANumFastBytes=270 57SolidCompression=yes 58VersionInfoVersion={#FileVersion} 59VersionInfoTextVersion={#AppVersion}-{#SetupDate} 60ShowLanguageDialog=yes 61WizardImageFile=lazarus_install_cheetah.bmp 62WizardSmallImageFile=lazgear.bmp 63WizardImageStretch=false 64ShowTasksTreeLines=true 65TimeStampRounding=0 66PrivilegesRequired=none 67ChangesAssociations=yes 68; prevent checkbox pre-set (for delete user conf). Latest inno supports unchecked checkedonce 69UsePreviousTasks=no 70; since appid can change, UsePreviousLanguage must be off 71UsePreviousLanguage=no 72UninstallDisplayIcon={app}\lazarus.exe 73DisableWelcomePage=no 74DisableDirPage=no 75 76 77[Tasks] 78Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked 79Name: delusersettings; Description: {cm:DelUserConf}; GroupDescription: {cm:CleanUp}; Flags: unchecked 80;unchecked checkedonce 81 82[Components] 83#ifdef CHMHELPFILES 84#if CHMHELPFILES!="" 85Name: installhelp; Description: {cm:InstallChm}; Types: custom full 86#endif 87#endif 88 89#if FPCTargetOS=="win32" 90;// #if IDEWidgetSet!="qt" 91Name: install4qtintfdll; Description: {cm:InstallQtLocal}; Types: custom full; Flags: checkablealone 92;// #else 93;//Name: install4qtintfdll; Description: {cm:InstallQtLocal}; Types: custom full compact; Flags: checkablealone fixed 94;// #endif 95Name: install4qtintfdll/global; Description: {cm:InstallQt}; Types: full; Flags: dontinheritcheck 96#endif 97 98#ifdef HasQT5 99#if HasQT5!="" 100#if IDEWidgetSet!="qt" 101Name: install5qtintfdll; Description: {cm:InstallQt5Local}; Types: custom full; Flags: checkablealone 102#else 103Name: install5qtintfdll; Description: {cm:InstallQt5Local}; Types: custom full compact; Flags: checkablealone fixed 104#endif 105Name: install5qtintfdll/global; Description: {cm:InstallQt5Global}; Types: full; Flags: dontinheritcheck 106#endif 107#endif 108 109#ifdef HasOpenSSL 110#if HasOpenSSL!="" 111Name: installopenssl; Description: {cm:InstallOpenSSL}; Types: custom full compact; Flags: checkablealone 112Name: installopenssl/global; Description: {cm:InstallOpenSSLGlobal}; Types: full; Flags: dontinheritcheck 113#endif 114#endif 115Name: association; Description: {cm:AssociateGroup}; Types: custom full 116Name: association/associatelfm; Description: {code:GetAssociateDesc|.lfm}; Types: custom full 117Name: association/associatelpi; Description: {code:GetAssociateDesc|.lpi}; Types: custom full 118Name: association/associatelpk; Description: {code:GetAssociateDesc|.lpk}; Types: custom full 119Name: association/associatelpr; Description: {code:GetAssociateDesc|.lpr}; Types: custom full 120Name: association/associateinc; Description: {code:GetAssociateDesc|.inc}; Types: custom full 121Name: association/associatepas; Description: {code:GetAssociateDesc|.pas}; Types: custom full 122Name: association/associatepp; Description: {code:GetAssociateDesc|.pp}; Types: custom full 123 124[InstallDelete] 125Name: {code:GetPCPForDelete}*.xml; Type: files; Tasks: delusersettings 126Name: {code:GetPCPForDelete}*.cfg; Type: files; Tasks: delusersettings 127Name: {code:GetPCPForDelete}lazarus.dci; Type: files; Tasks: delusersettings 128Name: {code:GetPCPForDelete}compilertest.pas; Type: files; Tasks: delusersettings 129Name: {code:GetPCPForDelete}easydocklayout.lyt; Type: files; Tasks: delusersettings 130Name: {code:GetPCPForDelete}laz_indentation.pas; Type: files; Tasks: delusersettings 131Name: {code:GetPCPForDelete}staticpackages.inc; Type: files; Tasks: delusersettings 132Name: {code:GetPCPForDelete}unitdictionarycodyunitdictionary*.tmp; Type: files; Tasks: delusersettings 133Name: {code:GetPCPForDelete}projectsessions\*.lps; Type: files; Tasks: delusersettings 134Name: {code:GetPCPForDelete}userschemes\*.xml; Type: files; Tasks: delusersettings 135#if FPCTargetOS=="win32" 136#include "RemovedFiles32.iss" 137#endif 138#if FPCTargetOS=="win64" 139#include "RemovedFiles64.iss" 140#endif 141 142[Files] 143Source: {#BuildDir}\*.*; DestDir: {app}; Flags: recursesubdirs 144Source: environmentoptions.xml; DestDir: {app}; AfterInstall: UpdateEnvironmentOptions; DestName: environmentoptions.xml 145 146#if FPCTargetOS=="win32" 147;//#if IDEWidgetSet=="qt" 148;//Source: {#QtInfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion 149;//#else 150Source: {#QtInfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion; Components: install4qtintfdll/global 151;//#endif 152Source: {#QtInfDir}\*.dll; DestDir: {app}; Components: install4qtintfdll 153#if FPCVersion=="2.2.0" 154Source: {#BuildDir}\fpc\{#FPCVersion}\bin\{#FPCFullTarget}\cpp.exe; DestDir: {app}\ide; MinVersion: 1,0 155#endif 156#endif 157 158#ifdef HasQT5 159#if HasQT5!="" 160#if IDEWidgetSet=="qt" 161Source: {#Qt5InfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion 162#else 163Source: {#Qt5InfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion; Components: install5qtintfdll/global 164#endif 165Source: {#Qt5InfDir}\*.dll; DestDir: {app}; Components: install5qtintfdll 166#endif 167#endif 168 169#ifdef CHMHELPFILES 170#if CHMHELPFILES!="" 171Source: {#CHMHELPFILES}\*.*; DestDir: {app}\docs\chm; Components: installhelp; Flags: recursesubdirs 172Source: {#CHMHELPFILES}\*.*; DestDir: {app}\docs\chm; Components: installhelp; Flags: recursesubdirs 173#endif 174#endif 175 176#ifdef HasOpenSSL 177#if HasOpenSSL!="" 178Source: {#OpenSSLDir}\*.*; DestDir: {app}; Components: installopenssl; Flags: recursesubdirs 179Source: {#OpenSSLDir}\*.*; DestDir: {sys}; Components: installopenssl/global; Flags: sharedfile replacesameversion 180#endif 181#endif 182 183[INI] 184Filename: {app}\Lazarus Home Page.url; Section: InternetShortcut; Key: URL; String: http://www.lazarus.freepascal.org/ 185Filename: {app}\Lazarus Forums.url; Section: InternetShortcut; Key: URL; String: http://www.lazarus.freepascal.org/index.php?action=forum 186Filename: {app}\Lazarus Wiki Help.url; Section: InternetShortcut; Key: URL; String: http://wiki.lazarus.freepascal.org/ 187 188[Icons] 189Name: {group}\{#AppName}; Filename: {app}\lazarus.exe; IconFilename: {app}\images\mainicon.ico; Comment: Open Source IDE for Free Pascal 190Name: {group}\{cm:ProgramOnTheWeb,Lazarus}; Filename: {app}\Lazarus Home Page.url; IconFilename: {app}\images\mainiconproject.ico 191Name: {group}\Lazarus Forums; Filename: {app}\Lazarus Forums.url; IconFilename: {app}\images\mainiconproject.ico 192Name: {group}\Lazarus Wiki Help; Filename: {app}\Lazarus Wiki Help.url; IconFilename: {app}\images\mainiconproject.ico 193Name: {group}\{cm:UninstallProgram,Lazarus}; Filename: {uninstallexe} 194Name: {userdesktop}\Lazarus; Filename: {app}\lazarus.exe; Tasks: desktopicon; IconFilename: {app}\images\mainicon.ico; Comment: Open Source IDE for Free Pascal 195Name: {group}\{#AppName} (debug); Filename: {app}\startlazarus.exe; Parameters: --debug; WorkingDir: {app}; IconFilename: {app}\images\mainicon.ico; Comment: Lazarus --debug 196 197[Run] 198Filename: {app}\fpc\{#FPCVersion}\bin\{#FPCFullTarget}\fpcmkcfg.exe; Parameters: "-d ""basepath={app}\fpc\$FPCVERSION"" -o ""{app}\fpc\{#FPCVersion}\bin\{#FPCFullTarget}\fpc.cfg"""; Flags: runhidden; Languages: ; WorkingDir: {app}\fpc\{#FPCVersion}\bin\{#FPCFullTarget}; Components: 199 200[UninstallDelete] 201Name: {app}\compilertest.pas; Type: files 202Name: {app}\Lazarus Wiki Help.url; Type: files 203Name: {app}\Lazarus Home Page.url; Type: files 204Name: {app}\Lazarus Forums.url; Type: files 205Name: {app}\fpc\{#FPCVersion}\bin\{#FPCFullTarget}\fpc.cfg; Type: files 206Name: {app}\lazarus.old.exe; Type: files 207Name: {app}\lazarus.old2.exe; Type: files 208 209[Registry] 210; HKLM 211Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lfm; ValueType: String; ValueData: Lazarus Form; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelfm 212Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lfm\DefaultIcon; ValueType: String; ValueData: {app}\images\LazarusForm.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelfm 213Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lfm\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\LazarusForm.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelfm 214Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lfm\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelfm 215 216Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpi; ValueType: String; ValueData: Lazarus Project Information; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpi 217Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpi\DefaultIcon; ValueType: String; ValueData: {app}\images\mainiconproject.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpi 218Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpi\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\mainiconproject.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpi 219Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpi\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpi 220 221Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpk; ValueType: String; ValueData: Lazarus Package File; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpk 222Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpk\DefaultIcon; ValueType: String; ValueData: {app}\images\lazaruspackage.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpk 223Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpk\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\lazaruspackage.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpk 224Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpk\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpk 225 226Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpr; ValueType: String; ValueData: Lazarus Project Main Source; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpr 227Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpr\DefaultIcon; ValueType: String; ValueData: {app}\images\lprfile.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpr 228Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpr\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\lprfile.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpr 229Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.lpr\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpr 230 231Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.inc; ValueType: String; ValueData: Object Pascal Include File; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associateinc 232Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.inc\DefaultIcon; ValueType: String; ValueData: {app}\images\includefile.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associateinc 233Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.inc\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\includefile.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associateinc 234Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.inc\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associateinc 235 236Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.pas; ValueType: String; ValueData: Pascal Source Code; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepas 237Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.pas\DefaultIcon; ValueType: String; ValueData: {app}\images\LazarusSource.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepas 238Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.pas\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\LazarusSource.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepas 239Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.pas\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepas 240 241Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.pp; ValueType: String; ValueData: Pascal Source Code; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepp 242Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.pp\DefaultIcon; ValueType: String; ValueData: {app}\images\LazarusSource.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepp 243Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.pp\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\LazarusSource.ico; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepp 244Root: HKLM; Subkey: Software\Classes\Lazarus.AssocFile.pp\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepp 245 246Root: HKLM; Subkey: Software\Classes\.lfm; ValueType: String; ValueData: Lazarus.AssocFile.lfm; Flags: uninsdeletevalue; Check: IsHKLMWriteable; Components: association/associatelfm 247Root: HKLM; Subkey: Software\Classes\.lpi; ValueType: String; ValueData: Lazarus.AssocFile.lpi; Flags: uninsdeletevalue; Check: IsHKLMWriteable; Components: association/associatelpi 248Root: HKLM; Subkey: Software\Classes\.lpk; ValueType: String; ValueData: Lazarus.AssocFile.lpk; Flags: uninsdeletevalue; Check: IsHKLMWriteable; Components: association/associatelpk 249Root: HKLM; Subkey: Software\Classes\.lpr; ValueType: String; ValueData: Lazarus.AssocFile.lpr; Flags: uninsdeletevalue; Check: IsHKLMWriteable; Components: association/associatelpr 250Root: HKLM; Subkey: Software\Classes\.inc; ValueType: String; ValueData: Lazarus.AssocFile.inc; Flags: uninsdeletevalue; Check: IsHKLMWriteable; Components: association/associateinc 251Root: HKLM; Subkey: Software\Classes\.pas; ValueType: String; ValueData: Lazarus.AssocFile.pas; Flags: uninsdeletevalue; Check: IsHKLMWriteable; Components: association/associatepas 252Root: HKLM; Subkey: Software\Classes\.pp; ValueType: String; ValueData: Lazarus.AssocFile.pp; Flags: uninsdeletevalue; Check: IsHKLMWriteable; Components: association/associatepp 253 254Root: HKLM; Subkey: Software\Lazarus\Capabilities; ValueType: String; ValueName: ApplicationName; ValueData: Lazarus IDE; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association 255Root: HKLM; Subkey: Software\Lazarus\Capabilities; ValueType: String; ValueName: ApplicationDescription; ValueData: Open Source IDE for Free Pascal.; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association 256Root: HKLM; Subkey: Software\Lazarus\Capabilities\FileAssociations; ValueName: .lfm; ValueType: String; ValueData: Lazarus.AssocFile.lfm; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelfm 257Root: HKLM; Subkey: Software\Lazarus\Capabilities\FileAssociations; ValueName: .lpi; ValueType: String; ValueData: Lazarus.AssocFile.lpi; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpi 258Root: HKLM; Subkey: Software\Lazarus\Capabilities\FileAssociations; ValueName: .lpk; ValueType: String; ValueData: Lazarus.AssocFile.lpk; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpk 259Root: HKLM; Subkey: Software\Lazarus\Capabilities\FileAssociations; ValueName: .lpr; ValueType: String; ValueData: Lazarus.AssocFile.lpr; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatelpr 260Root: HKLM; Subkey: Software\Lazarus\Capabilities\FileAssociations; ValueName: .inc; ValueType: String; ValueData: Lazarus.AssocFile.inc; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associateinc 261Root: HKLM; Subkey: Software\Lazarus\Capabilities\FileAssociations; ValueName: .pas; ValueType: String; ValueData: Lazarus.AssocFile.pas; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepas 262Root: HKLM; Subkey: Software\Lazarus\Capabilities\FileAssociations; ValueName: .pp; ValueType: String; ValueData: Lazarus.AssocFile.pp; Flags: uninsdeletekey; Check: IsHKLMWriteable; Components: association/associatepp 263 264Root: HKLM; Subkey: Software\RegisteredApplications; ValueType: String; ValueName: Lazarus; ValueData: Software\Lazarus\Capabilities; Flags: uninsdeletevalue; Check: IsHKLMWriteable; Components: association 265 266; HKCU 267Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lfm; ValueType: String; ValueData: Lazarus Form; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelfm 268Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lfm\DefaultIcon; ValueType: String; ValueData: {app}\images\LazarusForm.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelfm 269Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lfm\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\LazarusForm.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelfm 270Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lfm\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelfm 271 272Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpi; ValueType: String; ValueData: Lazarus Project Information; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpi 273Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpi\DefaultIcon; ValueType: String; ValueData: {app}\images\mainiconproject.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpi 274Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpi\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\mainiconproject.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpi 275Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpi\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpi 276 277Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpk; ValueType: String; ValueData: Lazarus Package File; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpk 278Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpk\DefaultIcon; ValueType: String; ValueData: {app}\images\lazaruspackage.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpk 279Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpk\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\lazaruspackage.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpk 280Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpk\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpk 281 282Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpr; ValueType: String; ValueData: Lazarus Project Main Source; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpr 283Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpr\DefaultIcon; ValueType: String; ValueData: {app}\images\lprfile.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpr 284Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpr\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\lprfile.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpr 285Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.lpr\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatelpr 286 287Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.inc; ValueType: String; ValueData: Object Pascal Include File; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associateinc 288Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.inc\DefaultIcon; ValueType: String; ValueData: {app}\images\includefile.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associateinc 289Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.inc\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\includefile.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associateinc 290Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.inc\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associateinc 291 292Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.pas; ValueType: String; ValueData: Pascal Source Code; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatepas 293Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.pas\DefaultIcon; ValueType: String; ValueData: {app}\images\LazarusSource.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatepas 294Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.pas\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\LazarusSource.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatepas 295Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.pas\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatepas 296 297Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.pp; ValueType: String; ValueData: Pascal Source Code; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatepp 298Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.pp\DefaultIcon; ValueType: String; ValueData: {app}\images\LazarusSource.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatepp 299Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.pp\Shell\Open; ValueName: Icon; ValueType: String; ValueData: {app}\images\LazarusSource.ico; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatepp 300Root: HKCU; Subkey: Software\Classes\Lazarus.AssocFile.pp\Shell\Open\Command; ValueType: String; ValueData: """{app}\lazarus.exe"" ""%1"""; Flags: uninsdeletekey; Check: IsHKLMNotWriteable; Components: association/associatepp 301 302Root: HKCU; Subkey: Software\Classes\.lfm; ValueType: String; ValueData: Lazarus.AssocFile.lfm; Flags: uninsdeletevalue; Check: IsHKLMNotWriteable; Components: association/associatelfm 303Root: HKCU; Subkey: Software\Classes\.lpi; ValueType: String; ValueData: Lazarus.AssocFile.lpi; Flags: uninsdeletevalue; Check: IsHKLMNotWriteable; Components: association/associatelpi 304Root: HKCU; Subkey: Software\Classes\.lpk; ValueType: String; ValueData: Lazarus.AssocFile.lpk; Flags: uninsdeletevalue; Check: IsHKLMNotWriteable; Components: association/associatelpk 305Root: HKCU; Subkey: Software\Classes\.lpr; ValueType: String; ValueData: Lazarus.AssocFile.lpr; Flags: uninsdeletevalue; Check: IsHKLMNotWriteable; Components: association/associatelpr 306Root: HKCU; Subkey: Software\Classes\.inc; ValueType: String; ValueData: Lazarus.AssocFile.inc; Flags: uninsdeletevalue; Check: IsHKLMNotWriteable; Components: association/associateinc 307Root: HKCU; Subkey: Software\Classes\.pas; ValueType: String; ValueData: Lazarus.AssocFile.pas; Flags: uninsdeletevalue; Check: IsHKLMNotWriteable; Components: association/associatepas 308Root: HKCU; Subkey: Software\Classes\.pp; ValueType: String; ValueData: Lazarus.AssocFile.pp; Flags: uninsdeletevalue; Check: IsHKLMNotWriteable; Components: association/associatepp 309 310[Languages] 311Name: default; MessagesFile: lazarus.def.isl 312Name: ca; MessagesFile: compiler:Languages\Catalan.isl 313Name: cs; MessagesFile: compiler:Languages\Czech.isl 314Name: de; MessagesFile: lazarus.de.isl 315Name: es; MessagesFile: lazarus.es.isl 316Name: fi; MessagesFile: compiler:Languages\Finnish.isl 317Name: fr; MessagesFile: lazarus.fr.isl 318Name: hu; MessagesFile: compiler:Languages\Hungarian.isl 319Name: it; MessagesFile: compiler:Languages\Italian.isl 320Name: nl; MessagesFile: compiler:Languages\Dutch.isl 321Name: no; MessagesFile: compiler:Languages\Norwegian.isl 322Name: pl; MessagesFile: compiler:Languages\Polish.isl 323Name: pt; MessagesFile: compiler:Languages\Portuguese.isl 324Name: pt_BR; MessagesFile: lazarus.pt_BR.isl 325Name: ru; MessagesFile: lazarus.ru.isl 326;Slovak.isl not avail with latest inno setup 327;Name: sk; MessagesFile: compiler:Languages\Slovak.isl 328Name: sl; MessagesFile: compiler:Languages\Slovenian.isl 329Name: zh_CN; MessagesFile: lazarus.zh_CN.isl 330 331[Code] 332type 333 TCfgFileState = (csNoFile, csUnreadable, csParsedOk); 334 335var 336 ForcePrimaryAppId: Boolean; // GetAppId should ignore secondary 337 338 IsSecondaryUpdate: Boolean; // Also used by GetAppId 339 340 // User Selected 341 SecondPCP: String; // used by common.GetPCPForDelete 342 343function IsSecondaryCheckBoxChecked: Boolean; forward; // in secondary.pas 344function DidRunUninstaller: Boolean; forward; // in uninst.pas 345function HasSavedConfigFromUninstall(AFolder: String): Boolean; forward; // in uninst.pas 346function GetSavedConfigFromUninstall(AFolder: String): TStringList; forward; // in uninst.pas 347function GetSavedPCPFromUninstall(AFolder: String): String; forward; // in uninst.pas 348function GetSavedStateFromUninstall(AFolder: String): TCfgFileState; forward; // in uninst.pas 349 350 351#include "innoscript\common.pas" 352#include "innoscript\conffile.pas" 353#include "innoscript\secondary.pas" 354#include "innoscript\uninst.pas" 355#include "innoscript\about.pas" 356 357var 358 HasBeenOnGroupSelect: Boolean; 359 360procedure CurPageChanged(CurPageID: Integer); 361begin 362 if CurPageID = wpInstalling then 363 AddInfoComponentsToProgressWizzard; 364 365 if (CurPageID = wpSelectDir) then 366 AddSecondaryCheckBoxToTargetDirWizzard; 367 368 if CurPageID = wpFinished then 369 CreateOrSaveConfigFile; 370 371 if CurPageId = wpSelectTasks then begin 372 // desktop item 373 // index 0 is the caption/ 1 the checkbox 374 WizardForm.TasksList.ItemEnabled[0] := not(IsSecondaryCheckBoxChecked or IsSecondaryUpdate); 375 WizardForm.TasksList.ItemEnabled[1] := not(IsSecondaryCheckBoxChecked or IsSecondaryUpdate); 376 if IsSecondaryCheckBoxChecked or IsSecondaryUpdate then 377 WizardForm.TasksList.Checked[1] := False; 378 end; 379 380 if CurPageId = wpSelectProgramGroup then begin 381 if not HasBeenOnGroupSelect then 382 if (IsSecondaryCheckBoxChecked or IsSecondaryUpdate) and 383 (CompareText(WizardForm.GroupEdit.Text, 'Lazarus') = 0) 384 then 385 WizardForm.GroupEdit.Text := 'Lazarus 2'; 386 HasBeenOnGroupSelect := True; 387 end; 388 389end; 390 391function NextButtonClick(CurPage: Integer): Boolean; 392var 393 s, folder: String; 394 FolderEmpty: Boolean; 395begin 396 // by default go to next page 397 Result := true; 398 ForcePrimaryAppId := False; 399 400 // if curpage is wpSelectDir check is filesystem 401 if (CurPage = wpSelectDir) then 402 begin 403 Log('NextButton in SelectDir'); 404 IsSecondaryUpdate := False; 405 ClearExistingConfigForFolder; 406 folder := WizardDirValue; 407 408 if Pos( ' ', folder ) > 0 then 409 begin 410 MsgBox(SaveCustomMessage('FolderHasSpaces', 'Selected folder contains spaces, please select a folder without spaces in it.'), 411 mbInformation, MB_OK ); 412 Result := false; 413 exit; 414 end; 415 416 FolderEmpty := IsDirEmpty(folder); 417 LoadExistingConfigForFolder(folder); 418 IsSecondaryUpdate := HasPCPLoadedFromDir(folder, True); // check for uninstalled file too 419 SecondPCP := GetPCPLoadedFromDir(folder, True); 420// TODO: 421// If we came back AFTER running uninstall, 422// AND changed the folder for and back (ending with the uninstall folder selected) 423// THEN we should ask, if the uninstalled (todo uninstall cfg file) should be restored? 424 UpdateUninstallInfo; 425 426 if FolderEmpty then 427 exit; 428 429 if (IsSecondaryCheckBoxChecked) then 430 begin // Secondary 431 case GetStateLoadedFromDir(folder, True) of 432 csNoFile: begin 433 Result := False; 434 MsgBox(Format(CustomMessage('FolderForSecondNoFile'), [#13#10]), mbConfirmation, MB_OK); 435 exit; 436 end; 437 csUnreadable: begin 438 Result := False; 439 MsgBox(Format(CustomMessage('FolderForSecondBadFile'), [#13#10]), mbConfirmation, MB_OK); 440 exit; 441 end; 442 csParsedOk: begin 443// TODO ask, depending on uninstaller availability 444 if (UninstallState = UIOtherNeeded) or (UninstallState = uiInconsistent) 445 then begin 446 MsgBox(Format(CustomMessage('FolderForSecondBadUninstall'), [#13#10]), mbConfirmation, MB_OK); 447 Result := False; 448 exit; 449 end 450 else 451 if ((UninstallState = uiDone) or (UninstallState = UIOtherNeeded)) or 452 (UninstallState = uiInconsistent) 453 then begin 454 Result := MsgBox(Format(CustomMessage('FolderForSecondUpgrading'), [#13#10, SecondPCP]), mbConfirmation, MB_YESNO) = IDYES; 455 end; 456 end; 457 end; 458 end 459 460 else 461 begin 462 // Dir NOT empty: do not warn, if uiDestNeeded => folder content is updatable lazarus 463 if ((UninstallState = uiDone) or (UninstallState = UIOtherNeeded)) or 464 (UninstallState = uiInconsistent) 465 then begin 466 if IsSecondaryUpdate then 467 Result := MsgBox(Format(SaveCustomMessage('FolderForSecondUpgrading', 'The target folder is not empty.%0:sIt contains a secondary Lazarus installation using the following folder for configuration:%0:s%1:s%0:s%0:sContinue with installation?'), 468 {}[#13#10, SecondPCP]), mbConfirmation, MB_YESNO) = IDYES 469 else 470 Result := MsgBox(SaveCustomMessage('FolderNotEmpty', 'The target folder is not empty. Continue with installation?'), 471 mbConfirmation, MB_YESNO) = IDYES; 472 end; 473 end; 474 end; 475 476 if CurPage = wpAskConfDir.ID then begin 477 Log('NextButton in AskConfDir'); 478 s := wpAskConfDir.Values[0]; 479 if (not IsDirEmpty(s)) then begin 480 MsgBox(Format(CustomMessage('FolderForConfNotEmpty'), [#13#10]), mbConfirmation, MB_OK); 481 Result := False; 482 exit; 483 end; 484 485 SecondPCP := s; 486 end; 487end; 488 489function ShouldSkipPage(PageId: Integer): Boolean; 490begin 491 Result := False 492 if PageId = wpAskConfDir.ID then begin 493 Log('ShouldSkip AskConfDir IsSecondaryUpdate='+dbgsBool(IsSecondaryUpdate)+ 494 ' Check='+dbgsBool(IsSecondaryCheckBoxChecked) 495 ); 496 497 Result := (not IsSecondaryCheckBoxChecked) or IsSecondaryUpdate; 498 end; 499 // UnInst uses: SkipAskUninst() 500end; 501 502function UpdateReadyMemo(Space, NewLine, 503 MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, 504 MemoTasksInfo: String): String; 505begin 506 Result := ''; 507 if MemoUserInfoInfo <> '' then 508 Result := Result + MemoUserInfoInfo + NewLine; 509 if MemoDirInfo <> '' then 510 Result := Result + MemoDirInfo + NewLine; 511 if MemoTypeInfo <> '' then 512 Result := Result + MemoTypeInfo + NewLine; 513 if MemoComponentsInfo <> '' then 514 Result := Result + MemoComponentsInfo + NewLine; 515 if MemoGroupInfo <> '' then 516 Result := Result + MemoGroupInfo + NewLine; 517 if MemoTasksInfo <> '' then 518 Result := Result + MemoTasksInfo + NewLine; 519 if (IsSecondaryCheckBoxChecked) then begin 520 if IsSecondaryUpdate then 521 Result := Result + Format(SaveCustomMessage('SecondTaskUpdate', ''), [NewLine, Space, SecondPCP]) 522 else 523 Result := Result + Format(SaveCustomMessage('SecondTaskCreate', ''), [NewLine, Space, SecondPCP]); 524 end 525 else 526 if IsSecondaryUpdate then 527 Result := Result + Format(SaveCustomMessage('SecondTaskUpdate', ''), [NewLine, Space, SecondPCP]); 528end; 529 530function PrepareToInstall(var NeedsRestart: Boolean): String; 531begin 532 Result := ''; 533 ForcePrimaryAppId := False; 534end; 535 536procedure InitializeWizard(); 537var 538 s, s2 : String; 539begin 540 ForcePrimaryAppId := False; 541 HasBeenOnGroupSelect := False; 542 543 InitializeUninstallInfo; 544 CreateUninstallWizardPage; 545 546 CreateSecondaryConfFolderAndNameWizardPage; 547 548end; 549 550//function InitializeUninstall(): Boolean; 551//var i: integer; 552//begin 553// Result := True; 554// for i := 0 to ParamCount - 1 do 555// if ParamStr(i) = '/VERBOSE' then 556// Result := 557// MsgBox(Format(CustomMessage('UninstVerbose'), 558// {}[RemoveQuotes(GetUninstallData('Inno Setup: App Path')), 559// GetUninstallData('DisplayName')]), 560// mbConfirmation, MB_YESNO) = IDYES; 561// 562//end; 563 564 565