1; KeePass Password Safe Installation Script
2; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3; Thanks to Hilbrand Edskes for installer improvements.
4
5#define MyAppNameShort "KeePass"
6#define MyAppNameShortEx "KeePass 2"
7#define MyAppName "KeePass Password Safe"
8#define MyAppNameEx "KeePass Password Safe 2"
9#define MyAppPublisher "Dominik Reichl"
10#define MyAppURL "https://keepass.info/"
11#define MyAppExeName "KeePass.exe"
12#define MyAppUrlName "KeePass.url"
13#define MyAppHelpName "KeePass.chm"
14#define MyAppId "KeePassPasswordSafe2"
15
16#define KeeVersionStr "2.49"
17#define KeeVersionStrWithMinor "2.49"
18#define KeeVersionStrWithMinorPath "2.49"
19#define KeeVersionWin "2.49.0.0"
20#define KeeVersionWinShort "2.49"
21
22#define KeeDevPeriod "2003-2021"
23
24[Setup]
25AppName={#MyAppName}
26AppVersion={#KeeVersionWinShort}
27AppVerName={#MyAppName} {#KeeVersionStrWithMinor}
28AppId={#MyAppId}
29AppPublisher={#MyAppPublisher}
30AppPublisherURL={#MyAppURL}
31AppSupportURL={#MyAppURL}
32AppUpdatesURL={#MyAppURL}
33AppCopyright=Copyright © {#KeeDevPeriod} {#MyAppPublisher}
34MinVersion=6.1sp1
35
36; When specifying ArchitecturesInstallIn64BitMode=x64, Inno Setup performs
37; a side-by-side installation instead of updating a previous installation
38; (32-bit installation on a 64-bit system).
39; In order to avoid this, we only change DefaultDirName.
40; ArchitecturesInstallIn64BitMode=x64
41DefaultDirName={code:MyGetProgramFiles}\{#MyAppNameEx}
42
43DefaultGroupName={#MyAppNameEx}
44AllowNoIcons=yes
45LicenseFile=..\Docs\License.txt
46OutputDir=..\Build\KeePass_Distrib
47OutputBaseFilename={#MyAppNameShort}-{#KeeVersionStrWithMinorPath}-Setup
48Compression=lzma2/ultra
49SolidCompression=yes
50InternalCompressLevel=ultra
51UninstallDisplayIcon={app}\{#MyAppExeName}
52AppMutex=KeePassAppMutex,Global\KeePassAppMutexEx
53SetupMutex=KeePassSetupMutex2
54ChangesAssociations=yes
55VersionInfoVersion={#KeeVersionWin}
56VersionInfoCompany={#MyAppPublisher}
57VersionInfoDescription={#MyAppName} {#KeeVersionStr} Setup
58VersionInfoCopyright=Copyright © {#KeeDevPeriod} {#MyAppPublisher}
59SetupIconFile=compiler:SetupClassicIcon.ico
60; WizardImageFile=compiler:WizClassicImage-IS.bmp
61; WizardSmallImageFile=compiler:WizClassicSmallImage-IS.bmp
62WizardStyle=classic
63DisableDirPage=auto
64AlwaysShowDirOnReadyPage=yes
65DisableProgramGroupPage=yes
66AlwaysShowGroupOnReadyPage=no
67
68[Languages]
69Name: en; MessagesFile: "compiler:Default.isl"
70Name: ca; MessagesFile: "compiler:Languages\Catalan.isl"
71Name: cs; MessagesFile: "compiler:Languages\Czech.isl"
72Name: da; MessagesFile: "compiler:Languages\Danish.isl"
73Name: de; MessagesFile: "compiler:Languages\German.isl"
74Name: es; MessagesFile: "compiler:Languages\Spanish.isl"
75Name: fi; MessagesFile: "compiler:Languages\Finnish.isl"
76Name: fr; MessagesFile: "compiler:Languages\French.isl"
77; Name: hu; MessagesFile: "compiler:Languages\Hungarian.isl"
78Name: it; MessagesFile: "compiler:Languages\Italian.isl"
79Name: ja; MessagesFile: "compiler:Languages\Japanese.isl"
80Name: nb; MessagesFile: "compiler:Languages\Norwegian.isl"
81Name: nl; MessagesFile: "compiler:Languages\Dutch.isl"
82Name: pl; MessagesFile: "compiler:Languages\Polish.isl"
83Name: ptBR; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
84Name: ptPT; MessagesFile: "compiler:Languages\Portuguese.isl"
85Name: ru; MessagesFile: "compiler:Languages\Russian.isl"
86; Name: sk; MessagesFile: "compiler:Languages\Slovak.isl"
87Name: sl; MessagesFile: "compiler:Languages\Slovenian.isl"
88
89[CustomMessages]
90MyCompCore=KeePass core files
91MyCompHelp=User manual
92MyCompNtvLib=Native support library
93MyCompXSL=XSL stylesheets for KDBX XML files
94; "KeePass performance optimization" could falsely be interpreted as
95; operating system performance optimization carried out by KeePass
96MyCompNGen=Optimize KeePass performance
97MyCompPreLoad=Optimize KeePass start-up performance
98MyStatusNGen=Optimizing KeePass performance...
99MyStatusPreLoad=Optimizing KeePass start-up performance...
100MyOptPlgPage=Open the plugins web page
101
102ca.MyCompCore=Fitxers del nucli del KeePass
103ca.MyCompHelp=Manual d'usuari
104ca.MyCompNtvLib=Biblioteca de suport nativa
105ca.MyCompXSL=Fulls d'estil XSL pels fitxers XML del KeePass
106ca.MyCompNGen=Optimitza el rendiment del KeePass
107ca.MyCompPreLoad=Optimitza l'inici del KeePass
108ca.MyStatusNGen=Optimitzant el rendiment del KeePass...
109ca.MyStatusPreLoad=Optimitzant l'inici del KeePass...
110ca.MyOptPlgPage=Obre el web dels connectors
111
112da.MyCompCore=KeePass kernefiler
113da.MyCompHelp=Brugermanual
114da.MyCompNtvLib=Oprindeligt understøttelsesbibliotek
115da.MyCompXSL=XSL-stylesheets til KDBX XML-filer
116da.MyCompNGen=Optimer KeePass ydeevne
117da.MyCompPreLoad=Optimer KeePass opstarts ydeevne
118da.MyStatusNGen=Optimerer KeePass ydeevne...
119da.MyStatusPreLoad=Optimerer KeePass opstarts ydeevne...
120da.MyOptPlgPage=Åbn websiden med plugins
121
122de.MyCompCore=KeePass-Hauptdateien
123de.MyCompHelp=Benutzerhandbuch
124de.MyCompNtvLib=Native Unterstützungsbibliothek
125de.MyCompXSL=XSL-Stylesheets für KDBX-XML-Dateien
126de.MyCompNGen=KeePass-Leistung optimieren
127de.MyCompPreLoad=KeePass-Start-Leistung optimieren
128de.MyStatusNGen=Optimiere KeePass-Leistung...
129de.MyStatusPreLoad=Optimiere KeePass-Start-Leistung...
130de.MyOptPlgPage=Die Plugins-Webseite öffnen
131
132es.MyCompCore=Archivos de instalación de KeePass
133es.MyCompHelp=Manual del usuario
134es.MyCompNtvLib=Biblioteca para soporte nativo
135es.MyCompXSL=Hojas de estilo XSL para los archivos XML de KDBX
136es.MyCompNGen=Optimizar el rendimiento de KeePass
137es.MyCompPreLoad=Optimizar el rendimiento de inicio de KeePass
138es.MyStatusNGen=Optimizando el rendimiento de KeePass...
139es.MyStatusPreLoad=Optimizando el rendimiento de inicio de KeePass...
140es.MyOptPlgPage=Abrir la página web de los complementos
141
142fi.MyCompCore=KeePassin ydintiedostot
143fi.MyCompHelp=Käyttäjän opas
144fi.MyCompNtvLib=Natiivitukikirjasto
145fi.MyCompXSL=XSL-tyylarkit KDBX XML-tiedostoja varten
146fi.MyCompNGen=KeePassin suorituksen optimointi
147fi.MyCompPreLoad=KeePassin käynnistyksen optimointi
148fi.MyStatusNGen=Optimoidaan KeePassin suoritusta...
149fi.MyStatusPreLoad=Optimoidaan KeePassin käynnistystä...
150fi.MyOptPlgPage=Avaa liitännäiset ja laajennukset sisältävä sivusto
151
152fr.MyCompCore=Fichiers de base KeePass
153fr.MyCompHelp=Manuel de l'utilisateur
154fr.MyCompNtvLib=Bibliothèque de support native
155fr.MyCompXSL=Feuilles de style XSL pour les fichiers KDBX XML
156fr.MyCompNGen=Optimiser les performances de KeePass
157fr.MyCompPreLoad=Optimiser les performances de démarrage de KeePass
158fr.MyStatusNGen=En cours d'optimisation des performances de KeePass...
159fr.MyStatusPreLoad=En cours d'optimisation des performances de démarrage de KeePass...
160fr.MyOptPlgPage=Ouvre la page des greffons (plugins) sur la toile
161
162; hu.MyCompCore=KeePass nélkülözhetetlen fájlok
163; hu.MyCompHelp=Használati utasítás
164; hu.MyCompNtvLib=Natív támogatási könyvtár
165; hu.MyCompXSL=XSL stíluslapok a KDBX XML fájlokhoz
166; hu.MyCompNGen=Optimalizálja a KeePass teljesítményét
167; hu.MyCompPreLoad=Optimalizálja a KeePass indítási teljesítményét
168; hu.MyStatusNGen=A KeePass teljesítményének optimalizálása...
169; hu.MyStatusPreLoad=A KeePass indítási teljesítményének optimalizálása...
170; hu.MyOptPlgPage=Nyissa meg a bővítmények weboldalát
171
172it.MyCompCore=File core di KeePass
173it.MyCompHelp=Manuale utente
174it.MyCompNtvLib=Libreria di supporto nativa
175it.MyCompXSL=Fogli di stile XSL per i file KDBX XML
176it.MyCompNGen=Ottimizza le prestazioni di KeePass
177it.MyCompPreLoad=Ottimizza le prestazioni di avvio di KeePass
178it.MyStatusNGen=Ottimizzazione delle prestazioni di KeePass...
179it.MyStatusPreLoad=Ottimizzazione delle prestazioni di avvio di KeePass...
180it.MyOptPlgPage=Apri la pagina web dei plug-in
181
182ja.MyCompCore=KeePassのコアファイル
183ja.MyCompHelp=ユーザーマニュアル
184ja.MyCompNtvLib=ネイティブサポートライブラリ
185ja.MyCompXSL=KDBXのXMLファイル用XSLスタイルシート
186ja.MyCompNGen=KeePassのパフォーマンスを最適化
187ja.MyCompPreLoad=KeePassの起動パフォーマンスを最適化
188ja.MyStatusNGen=KeePassのパフォーマンスを最適化中...
189ja.MyStatusPreLoad=KeePassの起動パフォーマンスを最適化中...
190ja.MyOptPlgPage=プラグインのWebページを開きます。
191
192nl.MyCompCore=KeePass basisbestanden
193nl.MyCompHelp=Handleiding
194nl.MyCompNtvLib=Standaard bestandsondersteuning
195nl.MyCompXSL=XSL stylesheets voor KDBX XML bestanden
196nl.MyCompNGen=Optimaliseer KeePass prestaties
197nl.MyCompPreLoad=Optimaliseer KeePass opstartprestaties
198nl.MyStatusNGen=KeePass prestaties optimaliseren...
199nl.MyStatusPreLoad=KeePass opstartprestaties optimaliseren...
200nl.MyOptPlgPage=Open de plugins webpagina
201
202pl.MyCompCore=Główne pliki KeePassa
203pl.MyCompHelp=Przewodnik użytkownika
204pl.MyCompNtvLib=Wbudowana obsługa dodatkowych funkcji
205pl.MyCompXSL=Arkusze stylów XSL dla plików KDBX XML
206pl.MyCompNGen=Optymalizuj wydajność KeePassa
207pl.MyCompPreLoad=Optymalizuj czas uruchamiania KeePassa
208pl.MyStatusNGen=Optymalizowanie wydajności KeePassa...
209pl.MyStatusPreLoad=Optymalizowanie czasu uruchamiania KeePassa...
210pl.MyOptPlgPage=Otwórz stronę internetową z wtyczkami
211
212ptBR.MyCompCore=Arquivos principais do KeePass
213ptBR.MyCompHelp=Manual do usuário
214ptBR.MyCompNtvLib=Biblioteca de suporte nativo
215ptBR.MyCompXSL=Folhas de estilo XSL para arquivos XML KDBX
216ptBR.MyCompNGen=Otimizar desempenho do KeePass
217ptBR.MyCompPreLoad=Otimizar desempenho da inicialização do KeePass
218ptBR.MyStatusNGen=Otimizando desempenho do KeePass...
219ptBR.MyStatusPreLoad=Otimizando desempenho da inicialização do KeePass...
220ptBR.MyOptPlgPage=Abrir página web dos plugins
221
222ptPT.MyCompCore=Ficheiros principais do KeePass
223ptPT.MyCompHelp=Manual do utilizador
224ptPT.MyCompNtvLib=Biblioteca de suporte nativo
225ptPT.MyCompXSL=Folhas de estilo XSL para ficheiros XML KDBX
226ptPT.MyCompNGen=Otimize o desempenho do KeePass
227ptPT.MyCompPreLoad=Otimize o desempenho do arranque do KeePass
228ptPT.MyStatusNGen=Otimizando o desempenho do KeePass...
229ptPT.MyStatusPreLoad=Otimizando o desempenho do arranque do KeePass...
230ptPT.MyOptPlgPage=Abrir a página web dos miniaplicativos
231
232ru.MyCompCore=Основные файлы KeePass
233ru.MyCompHelp=Руководство пользователя
234ru.MyCompNtvLib=Встроенная библиотека поддержки
235ru.MyCompXSL=Таблицы стилей XSL для XML-файлов KDBX
236ru.MyCompNGen=Оптимизировать производительность KeePass
237ru.MyCompPreLoad=Оптимизировать скорость запуска KeePass
238ru.MyStatusNGen=Оптимизация производительности KeePass...
239ru.MyStatusPreLoad=Оптимизация скорости запуска KeePass...
240ru.MyOptPlgPage=Открыть веб-страницу плагинов
241
242[Tasks]
243Name: FileAssoc; Description: {cm:AssocFileExtension,{#MyAppNameShort},.kdbx}
244Name: DesktopIcon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
245Name: QuickLaunchIcon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
246
247[Components]
248Name: Core; Description: "{cm:MyCompCore}"; Flags: fixed; Types: full compact custom
249Name: UserDoc; Description: "{cm:MyCompHelp}"; Types: full custom
250Name: KeePassLibC; Description: "{cm:MyCompNtvLib}"; Types: full custom
251; Name: NativeLib; Description: Native Crypto Library (Fast Key Transformations); Types: full custom
252Name: XSL; Description: "{cm:MyCompXSL}"; Types: full custom
253Name: NGen; Description: "{cm:MyCompNGen}"; Types: full custom; ExtraDiskSpaceRequired: 8388608
254Name: PreLoad; Description: "{cm:MyCompPreLoad}"; Types: full custom; ExtraDiskSpaceRequired: 2048
255; Name: FileAssoc; Description: {cm:AssocFileExtension,{#MyAppNameShort},.kdbx}; Types: full custom
256
257[Dirs]
258Name: "{app}\Languages"; Flags: uninsalwaysuninstall
259Name: "{app}\Plugins"; Flags: uninsalwaysuninstall
260
261[Files]
262Source: ..\Build\KeePass_Distrib\KeePass.exe; DestDir: {app}; Flags: ignoreversion; Components: Core
263Source: ..\Build\KeePass_Distrib\KeePass.XmlSerializers.dll; DestDir: {app}; Flags: ignoreversion; Components: Core
264Source: ..\Build\KeePass_Distrib\KeePass.exe.config; DestDir: {app}; Flags: ignoreversion; Components: Core
265Source: ..\Build\KeePass_Distrib\KeePass.config.xml; DestDir: {app}; Flags: ignoreversion; Components: Core
266Source: ..\Build\KeePass_Distrib\License.txt; DestDir: {app}; Flags: ignoreversion; Components: Core
267Source: ..\Build\KeePass_Distrib\ShInstUtil.exe; DestDir: {app}; Flags: ignoreversion; Components: Core
268Source: ..\Build\KeePass_Distrib\KeePass.chm; DestDir: {app}; Flags: ignoreversion; Components: UserDoc
269Source: ..\Build\KeePass_Distrib\KeePassLibC32.dll; DestDir: {app}; Flags: ignoreversion; Components: KeePassLibC
270Source: ..\Build\KeePass_Distrib\KeePassLibC64.dll; DestDir: {app}; Flags: ignoreversion; Components: KeePassLibC
271; Source: ..\Build\KeePass_Distrib\KeePassNtv32.dll; DestDir: {app}; Flags: ignoreversion; Components: NativeLib
272; Source: ..\Build\KeePass_Distrib\KeePassNtv64.dll; DestDir: {app}; Flags: ignoreversion; Components: NativeLib
273Source: ..\Build\KeePass_Distrib\XSL\KDBX_Common.xsl; DestDir: {app}\XSL; Flags: ignoreversion; Components: XSL
274Source: ..\Build\KeePass_Distrib\XSL\KDBX_DetailsFull_HTML.xsl; DestDir: {app}\XSL; Flags: ignoreversion; Components: XSL
275Source: ..\Build\KeePass_Distrib\XSL\KDBX_DetailsLight_HTML.xsl; DestDir: {app}\XSL; Flags: ignoreversion; Components: XSL
276Source: ..\Build\KeePass_Distrib\XSL\KDBX_PasswordsOnly_TXT.xsl; DestDir: {app}\XSL; Flags: ignoreversion; Components: XSL
277Source: ..\Build\KeePass_Distrib\XSL\KDBX_Tabular_HTML.xsl; DestDir: {app}\XSL; Flags: ignoreversion; Components: XSL
278
279[Registry]
280; Always unregister .kdbx association at uninstall
281Root: HKCR; Subkey: .kdbx; Flags: uninsdeletekey; Tasks: not FileAssoc
282Root: HKCR; Subkey: kdbxfile; Flags: uninsdeletekey; Tasks: not FileAssoc
283; Register .kdbx association at install, and unregister at uninstall
284Root: HKCR; Subkey: .kdbx; ValueType: string; ValueData: kdbxfile; Flags: uninsdeletekey; Tasks: FileAssoc
285Root: HKCR; Subkey: kdbxfile; ValueType: string; ValueData: KeePass Database; Flags: uninsdeletekey; Tasks: FileAssoc
286Root: HKCR; Subkey: kdbxfile; ValueType: string; ValueName: AlwaysShowExt; Flags: uninsdeletekey; Tasks: FileAssoc
287Root: HKCR; Subkey: kdbxfile\DefaultIcon; ValueType: string; ValueData: """{app}\{#MyAppExeName}"",0"; Flags: uninsdeletekey; Tasks: FileAssoc
288Root: HKCR; Subkey: kdbxfile\shell\open; ValueType: string; ValueData: &Open with {#MyAppName}; Flags: uninsdeletekey; Tasks: FileAssoc
289Root: HKCR; Subkey: kdbxfile\shell\open\command; ValueType: string; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey; Tasks: FileAssoc
290
291; [INI]
292; Filename: {app}\{#MyAppUrlName}; Section: InternetShortcut; Key: URL; String: {#MyAppURL}
293
294[Icons]
295; Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
296; Name: {group}\{cm:ProgramOnTheWeb,{#MyAppName}}; Filename: {app}\{#MyAppUrlName}
297; Name: {group}\Help; Filename: {app}\{#MyAppHelpName}; Components: UserDoc
298; Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
299Name: {autoprograms}\{#MyAppNameShortEx}; Filename: {app}\{#MyAppExeName}
300Name: {userdesktop}\{#MyAppNameShortEx}; Filename: {app}\{#MyAppExeName}; Tasks: DesktopIcon; Check: MyDesktopCheck
301Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppNameShortEx}; Filename: {app}\{#MyAppExeName}; Tasks: QuickLaunchIcon; Check: MyAppDataCheck
302
303[Run]
304; Filename: {app}\KeePass.exe; Parameters: -RegisterFileExt; Components: FileAssoc
305Filename: {app}\ShInstUtil.exe; Parameters: net_check; WorkingDir: {app}; Flags: skipifdoesntexist skipifsilent
306Filename: {app}\ShInstUtil.exe; Parameters: preload_register; WorkingDir: {app}; StatusMsg: "{cm:MyStatusPreLoad}"; Flags: skipifdoesntexist; Components: PreLoad
307Filename: {app}\ShInstUtil.exe; Parameters: ngen_install; WorkingDir: {app}; StatusMsg: "{cm:MyStatusNGen}"; Flags: skipifdoesntexist; Components: NGen
308Filename: {app}\{#MyAppExeName}; Description: "{cm:LaunchProgram,{#MyAppNameShort}}"; Flags: postinstall nowait skipifsilent
309Filename: "https://keepass.info/plugins.html"; Description: "{cm:MyOptPlgPage}"; Flags: postinstall shellexec skipifsilent unchecked
310
311[UninstallRun]
312; Filename: {app}\KeePass.exe; Parameters: -UnregisterFileExt
313Filename: {app}\ShInstUtil.exe; Parameters: preload_unregister; WorkingDir: {app}; Flags: skipifdoesntexist; RunOnceId: "PreLoad"; Components: PreLoad
314Filename: {app}\ShInstUtil.exe; Parameters: ngen_uninstall; WorkingDir: {app}; Flags: skipifdoesntexist; RunOnceId: "NGen"; Components: NGen
315
316; Delete old files when upgrading
317[InstallDelete]
318Name: {app}\{#MyAppUrlName}; Type: files
319Name: {app}\XSL\KDBX_DetailsFull.xsl; Type: files
320Name: {app}\XSL\KDBX_DetailsLite.xsl; Type: files
321Name: {app}\XSL\KDBX_PasswordsOnly.xsl; Type: files
322Name: {app}\XSL\KDBX_Styles.css; Type: files
323Name: {app}\XSL\KDBX_Tabular.xsl; Type: files
324Name: {app}\XSL\TableHeader.gif; Type: files
325Name: {group}\{#MyAppName}.lnk; Type: files
326Name: {group}\{cm:ProgramOnTheWeb,{#MyAppName}}.lnk; Type: files
327Name: {group}\Help.lnk; Type: files
328Name: {group}\{cm:UninstallProgram,{#MyAppName}}.lnk; Type: files
329Name: {group}; Type: dirifempty
330Name: {userdesktop}\{#MyAppName}.lnk; Type: files; Check: MyDesktopCheck
331Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}.lnk; Type: files; Check: MyAppDataCheck
332
333; [UninstallDelete]
334; Type: files; Name: {app}\{#MyAppUrlName}
335
336[Code]
337function MyDesktopCheck(): Boolean;
338begin
339  try
340    ExpandConstant('{userdesktop}');
341    Result := True;
342  except
343    Result := False;
344  end;
345end;
346
347function MyAppDataCheck(): Boolean;
348begin
349  try
350    ExpandConstant('{userappdata}');
351    Result := True;
352  except
353    Result := False;
354  end;
355end;
356
357function MyGetProgramFiles(Param: String): String;
358begin
359  if IsWin64() then
360    Result := ExpandConstant('{autopf64}')
361  else
362    Result := ExpandConstant('{autopf}');
363end;
364