; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! [Setup] AppName=Doom Builder 2 AppVerName=Doom Builder 2.0 AppPublisher=CodeImp AppPublisherURL=http://www.codeimp.com/ AppSupportURL=http://www.doombuilder.com/ AppUpdatesURL=http://www.doombuilder.com/ DefaultDirName={pf}\Doom Builder 2 DefaultGroupName=Doom Builder AllowNoIcons=true InfoBeforeFile=F:\Projects\Doom Builder\Setup\disclaimer.txt OutputDir=F:\Projects\Doom Builder\Setup OutputBaseFilename=builder2_setup Compression=lzma/ultra64 SolidCompression=true SourceDir=F:\Projects\Doom Builder\Build SetupLogging=false AppMutex=doombuilder2 PrivilegesRequired=poweruser ShowLanguageDialog=no LanguageDetectionMethod=none MinVersion=0,5.01.2600 UninstallDisplayIcon={app}\Builder.exe [Languages] Name: english; MessagesFile: compiler:Default.isl [Tasks] Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked [Files] Source: Builder.exe; DestDir: {app}; Flags: ignoreversion Source: Builder.cfg; DestDir: {app}; Flags: ignoreversion Source: Sharpzip.dll; DestDir: {app}; Flags: ignoreversion Source: Scintilla.dll; DestDir: {app}; Flags: ignoreversion Source: GPL.txt; DestDir: {app}; Flags: ignoreversion Source: Compilers\*; DestDir: {app}\Compilers; Flags: ignoreversion Source: Configurations\*; DestDir: {app}\Configurations; Flags: ignoreversion Source: Scripting\*; DestDir: {app}\Scripting; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files Source: Plugins\BuilderModes.dll; DestDir: {app}\Plugins; Flags: ignoreversion Source: Setup\*; DestDir: {app}\Setup; Flags: ignoreversion [Icons] Name: {group}\Doom Builder; Filename: {app}\Builder.exe Name: {group}\{cm:UninstallProgram,Doom Builder}; Filename: {uninstallexe} Name: {commondesktop}\Doom Builder; Filename: {app}\Builder.exe; Tasks: desktopicon [Run] [UninstallDelete] Name: {localappdata}\Doom Builder; Type: filesandordirs [InstallDelete] Name: {app}\Builder.pdb; Type: files [Registry] Root: HKLM; Subkey: SOFTWARE\CodeImp\Doom Builder\; ValueType: string; ValueName: Location; ValueData: {app}; Flags: uninsdeletevalue [Code] // Global variables var page_info_net: TOutputMsgWizardPage; page_setup_net: TOutputProgressWizardPage; page_setup_components: TOutputProgressWizardPage; componentsinstalled: Boolean; restartneeded: Boolean; // When the wizard initializes procedure InitializeWizard(); begin restartneeded := false; componentsinstalled := false; page_info_net := CreateOutputMsgPage(wpInstalling, 'Installing Microsoft .NET Framework', '', 'Setup has detected that your system is missing the required version of the Microsoft .NET Framework. Setup will now download and install or update your Microsoft .NET Framework. This requires an internet connection and may take some time to complete.' + #10 + #10 + 'Press Next to begin.'); page_setup_net := CreateOutputProgressPage('Installing Microsoft .NET Framework', 'Setup is installing Microsoft .NET Framework, please wait.....'); page_setup_components := CreateOutputProgressPage('Installing Components', 'Setup is installing required components.....'); end; // This is called to check if a page must be skipped function ShouldSkipPage(PageID: Integer): Boolean; begin // Skip the .NET page? if(PageID = page_info_net.ID) then Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v2.0') else Result := False; end; // This is called to determine if we need to restart function NeedRestart(): Boolean; begin Result := restartneeded; end; // This is called when the current page changes procedure CurPageChanged(CurPageID: Integer); var errorcode: Integer; begin if(CurPageID = wpFinished) then if(componentsinstalled = False) then begin page_setup_components.Show; ShellExec('open', ExpandConstant('{app}\Setup\dxwebsetup.exe'), '/Q', '', SW_SHOW, ewWaitUntilTerminated, errorcode); ShellExec('open', 'msiexec', ExpandConstant('/passive /i "{app}\Setup\slimdx.msi"'), '', SW_SHOW, ewWaitUntilTerminated, errorcode); componentsinstalled := True; page_setup_components.Hide; end end; // This is called when the Next button is clicked function NextButtonClick(CurPage: Integer): Boolean; var errorcode: Integer; begin // Next pressed on .NET info page? if(CurPage = page_info_net.ID) then begin // Show progress page and run setup page_setup_net.Show; try begin ShellExec('open', ExpandConstant('{app}\Setup\dotnetfx35setup.exe'), '/qb /norestart', '', SW_SHOW, ewWaitUntilTerminated, errorcode); if(errorcode = 3010) then begin restartneeded := True; // Actually we should restart immediately here and tell the user to install again after restart end end finally page_setup_net.Hide; end; end Result := True; end;