|
| 1 | +; HeidiSQL setup script for Innosetup |
| 2 | + |
| 3 | +; Set commonly used constants for preprocessor |
| 4 | +#define ProgName "HeidiSQL" |
| 5 | +#define ProgNameLower LowerCase(ProgName) |
| 6 | +#define ProgExeName ProgNameLower + ".exe" |
| 7 | +#define WebSite "https://www." + ProgNameLower + ".com/" |
| 8 | +#define OutDir ".\out\" |
| 9 | +#define ResourceDir ".\res\" |
| 10 | +#define SnippetsDir "{autodocs}\" + ProgName + "\Snippets" |
| 11 | +; Some effort to get the major.minor program version: "11.23" |
| 12 | +#define ProgVerMajor |
| 13 | +#define ProgVerMinor |
| 14 | +#define ProgVerRevision |
| 15 | +#define ProgVerBuild |
| 16 | +#define ProgVersion GetVersionComponents(OutDir + ProgNameLower + ".exe", ProgVerMajor, ProgVerMinor, ProgVerRevision, ProgVerBuild) |
| 17 | +#define ProgVersionStr Str(ProgVerMajor) + "." + Str(ProgVerMinor) + "." + Str(ProgVerRevision) + "." + Str(ProgVerBuild) |
| 18 | + |
| 19 | +[Languages] |
| 20 | +Name: "en"; MessagesFile: "compiler:Default.isl" |
| 21 | +Name: "hy"; MessagesFile: "compiler:Languages\Armenian.isl" |
| 22 | +Name: "bg"; MessagesFile: "compiler:Languages\Bulgarian.isl" |
| 23 | +Name: "ca"; MessagesFile: "compiler:Languages\Catalan.isl" |
| 24 | +Name: "co"; MessagesFile: "compiler:Languages\Corsican.isl" |
| 25 | +Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" |
| 26 | +Name: "da"; MessagesFile: "compiler:Languages\Danish.isl" |
| 27 | +Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" |
| 28 | +Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" |
| 29 | +Name: "fr"; MessagesFile: "compiler:Languages\French.isl" |
| 30 | +Name: "de"; MessagesFile: "compiler:Languages\German.isl" |
| 31 | +Name: "he"; MessagesFile: "compiler:Languages\Hebrew.isl" |
| 32 | +Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" |
| 33 | +Name: "is"; MessagesFile: "compiler:Languages\Icelandic.isl" |
| 34 | +Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" |
| 35 | +Name: "ja"; MessagesFile: "compiler:Languages\Japanese.isl" |
| 36 | +Name: "kr"; MessagesFile: "compiler:Languages\Korean.isl" |
| 37 | +Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl" |
| 38 | +Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" |
| 39 | +Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" |
| 40 | +Name: "pt_BR"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl" |
| 41 | +Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" |
| 42 | +Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" |
| 43 | +Name: "sl"; MessagesFile: "compiler:Languages\Slovenian.isl" |
| 44 | +Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" |
| 45 | +Name: "se"; MessagesFile: "compiler:Languages\Swedish.isl" |
| 46 | +Name: "ta"; MessagesFile: "compiler:Languages\Tamil.isl" |
| 47 | +Name: "tr"; MessagesFile: "compiler:Languages\Turkish.isl" |
| 48 | +Name: "uk"; MessagesFile: "compiler:Languages\Ukrainian.isl" |
| 49 | + |
| 50 | +[Setup] |
| 51 | +AppId={#ProgName} |
| 52 | +AppName={#ProgName} |
| 53 | +AppVerName={#ProgName} {#ProgVersion} |
| 54 | +VersionInfoVersion={#ProgVersion} |
| 55 | +; Displayed on the "Support" dialog of the Add/Remove Programs Control Panel applet: |
| 56 | +AppVersion={#ProgVersionStr} |
| 57 | +AppPublisher=Ansgar Becker |
| 58 | +AppPublisherURL={#WebSite} |
| 59 | +AppSupportURL={#WebSite}forum.php |
| 60 | +AppUpdatesURL={#WebSite}download.php |
| 61 | +AppContact=anse@heidisql.com |
| 62 | +AppReadmeFile={#WebSite}help.php?place=installer |
| 63 | +Compression=lzma2/ultra64 |
| 64 | +SolidCompression=yes |
| 65 | +CloseApplications=yes |
| 66 | +ShowLanguageDialog=auto |
| 67 | +DefaultDirName={autopf}\{#ProgName} |
| 68 | +DefaultGroupName={#ProgName} |
| 69 | +AllowNoIcons=yes |
| 70 | +LicenseFile=license.txt |
| 71 | +ChangesAssociations=yes |
| 72 | +WizardStyle=modern |
| 73 | +WizardImageFile={#ResourceDir}installer-logo.bmp |
| 74 | +WizardSmallImageFile={#ResourceDir}installer-small-logo.bmp |
| 75 | +OutputDir={#OutDir} |
| 76 | +OutputBaseFilename={#ProgName}_{#ProgVersionStr}_Setup |
| 77 | +UninstallDisplayIcon={app}\{#ProgExeName} |
| 78 | +SetupIconFile={#ResourceDir}heidisql.ico |
| 79 | +ArchitecturesAllowed=x64compatible |
| 80 | +ArchitecturesInstallIn64BitMode=x64compatible |
| 81 | +UsePreviousAppDir=yes |
| 82 | +DirExistsWarning=auto |
| 83 | +PrivilegesRequired=admin |
| 84 | +PrivilegesRequiredOverridesAllowed=commandline dialog |
| 85 | +;SignedUninstaller=yes |
| 86 | +;SignTool=signtool $f |
| 87 | + |
| 88 | +[Tasks] |
| 89 | +Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Local options:"; MinVersion: 4,4 |
| 90 | +Name: "install_snippets"; Description: "Create example SQL snippet files in {#SnippetsDir}"; GroupDescription: "Local options:"; Flags: unchecked |
| 91 | +Name: "associatesqlfiles"; Description: "Associate .&SQL files with {#ProgName}"; GroupDescription: "Local options:"; |
| 92 | + |
| 93 | +[Files] |
| 94 | +Source: "{#OutDir}{#ProgNameLower}.exe"; DestDir: "{app}"; DestName: "{#ProgExeName}"; Flags: ignoreversion |
| 95 | +Source: "license.txt"; DestDir: "{app}"; Flags: ignoreversion |
| 96 | +Source: "LICENSE"; DestDir: "{app}"; Flags: ignoreversion |
| 97 | +Source: "extra\dll\plugins\*.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion |
| 98 | +Source: "extra\Snippets\*.sql"; DestDir: "{#SnippetsDir}"; Tasks: install_snippets |
| 99 | +Source: "extra\dll\plink-64.exe"; DestDir: "{app}"; DestName: "plink.exe"; Flags: ignoreversion |
| 100 | +Source: "extra\dll\plink-0.81-64.exe"; DestDir: "{app}"; DestName: "plink-0.81.exe"; Flags: ignoreversion |
| 101 | +; MySQL + MariaDB: |
| 102 | +Source: "extra\dll\libmariadb.dll"; DestDir: "{app}"; DestName: "libmariadb.dll"; Flags: ignoreversion |
| 103 | +Source: "extra\dll\libmysql.dll"; DestDir: "{app}"; DestName: "libmysql.dll"; Flags: ignoreversion |
| 104 | +Source: "extra\dll\libmysql-6.1.dll"; DestDir: "{app}"; DestName: "libmysql-6.1.dll"; Flags: ignoreversion |
| 105 | +Source: "extra\dll\libmysql-8.4.0.dll"; DestDir: "{app}"; DestName: "libmysql-8.4.0.dll"; Flags: ignoreversion |
| 106 | +Source: "extra\dll\libmysql-9.4.0.dll"; DestDir: "{app}"; DestName: "libmysql-9.4.0.dll"; Flags: ignoreversion |
| 107 | +; PostgreSQL: |
| 108 | +Source: "extra\dll\libpq-15.dll"; DestDir: "{app}"; DestName: "libpq-15.dll"; Flags: ignoreversion |
| 109 | +Source: "extra\dll\libpq-17.dll"; DestDir: "{app}"; DestName: "libpq-17.dll"; Flags: ignoreversion |
| 110 | +Source: "extra\dll\libintl-9.dll"; DestDir: "{app}"; DestName: "libintl-9.dll"; Flags: ignoreversion |
| 111 | +Source: "extra\dll\libssl-3-x64.dll"; DestDir: "{app}"; DestName: "libssl-3-x64.dll"; Flags: ignoreversion |
| 112 | +Source: "extra\dll\libcrypto-3-x64.dll"; DestDir: "{app}"; DestName: "libcrypto-3-x64.dll"; Flags: ignoreversion |
| 113 | +Source: "extra\dll\LICENSE-openssl"; DestDir: "{app}"; Flags: ignoreversion |
| 114 | +Source: "extra\dll\libiconv-2.dll"; DestDir: "{app}"; DestName: "libiconv-2.dll"; Flags: ignoreversion |
| 115 | +Source: "extra\dll\libwinpthread-1.dll"; DestDir: "{app}"; DestName: "libwinpthread-1.dll"; Flags: ignoreversion |
| 116 | +; SQLite: |
| 117 | +Source: "extra\dll\sqlite3.dll"; DestDir: "{app}"; DestName: "sqlite3.dll"; Flags: ignoreversion |
| 118 | +Source: "extra\dll\sqlite3mc.dll"; DestDir: "{app}"; DestName: "sqlite3mc.dll"; Flags: ignoreversion |
| 119 | +; Interbase/Firebird: |
| 120 | +Source: "extra\dll\ibclient64-14.1.dll"; DestDir: "{app}"; Flags: ignoreversion |
| 121 | +Source: "extra\dll\fbclient-4.0.dll"; DestDir: "{app}"; DestName: "fbclient-4.0.dll"; Flags: ignoreversion |
| 122 | +; SQL function definitions |
| 123 | +Source: "extra\ini\functions-*.ini"; DestDir: "{app}"; Flags: ignoreversion |
| 124 | + |
| 125 | + |
| 126 | +[Icons] |
| 127 | +Name: "{group}\{#ProgName}"; Filename: "{app}\{#ProgExeName}" |
| 128 | +Name: "{group}\Website"; Filename: "{#Website}" |
| 129 | +Name: "{group}\General help"; Filename: "{#Website}help.php?place=startmenu" |
| 130 | +Name: "{autodesktop}\{#ProgName}"; Filename: "{app}\{#ProgExeName}"; MinVersion: 4,4; Tasks: desktopicon |
| 131 | + |
| 132 | +[Registry] |
| 133 | +Root: HKCR; Subkey: ".sql"; ValueType: string; ValueName: ""; ValueData: "SQLScriptFile"; Flags: noerror uninsdeletevalue; Tasks: associatesqlfiles |
| 134 | +Root: HKCR; Subkey: "SQLScriptFile"; ValueType: string; ValueName: ""; ValueData: "SQL-Script"; Flags: noerror uninsdeletekey; Tasks: associatesqlfiles |
| 135 | +Root: HKCR; Subkey: "SQLScriptFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#ProgExeName},0"; Flags: noerror; Tasks: associatesqlfiles |
| 136 | +Root: HKCR; Subkey: "SQLScriptFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ProgExeName}"" ""%1"""; Flags: noerror; Tasks: associatesqlfiles |
| 137 | + |
| 138 | +[Run] |
| 139 | +Filename: "{app}\{#ProgExeName}"; Description: "Launch {#ProgName}"; Flags: nowait postinstall skipifsilent |
| 140 | + |
| 141 | +[Code] |
| 142 | +var |
| 143 | + txt: TNewStaticText; |
| 144 | + btn: TButton; |
| 145 | +
|
| 146 | +procedure DonateClick(Sender: TObject); |
| 147 | +var |
| 148 | + ErrorCode: Integer; |
| 149 | +begin |
| 150 | + ShellExec('open', '{#WebSite}donatebutton.php?place=installer', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); |
| 151 | +end; |
| 152 | +
|
| 153 | +procedure InitializeWizard(); |
| 154 | +begin |
| 155 | + txt := TNewStaticText.Create(WizardForm); |
| 156 | + txt.Parent := WizardForm.FinishedPage; |
| 157 | + txt.Caption := '{#ProgName} is free software for database workers.'+#13#10+'Keep it alive with a donation:'; |
| 158 | + txt.Left := WizardForm.FinishedLabel.Left; |
| 159 | + txt.Top := WizardForm.FinishedLabel.Top + WizardForm.FinishedLabel.Height + 80; |
| 160 | +
|
| 161 | + btn := TButton.Create(WizardForm); |
| 162 | + btn.Parent := WizardForm.FinishedPage; |
| 163 | + btn.Left := txt.Left; |
| 164 | + btn.Top := txt.Top + txt.Height + 10; |
| 165 | + btn.Width := WizardForm.Width div 2; |
| 166 | + btn.Height := WizardForm.CancelButton.Height + 10; |
| 167 | + btn.Caption := 'Donate via Paypal'; |
| 168 | + btn.OnClick := @DonateClick; |
| 169 | +end; |
| 170 | +
|
| 171 | +
|
| 172 | +procedure CurPageChanged(CurPageID: Integer); |
| 173 | +begin |
| 174 | + if CurPageID = wpFinished then |
| 175 | + WizardForm.ActiveControl := btn; |
| 176 | +end; |
0 commit comments