OSDN Git Service

Merge
[winmerge-jp/winmerge-jp.git] / Installer / InnoSetup / WinMergeX64.iss
1 ;           Programmed by:  Christian Blackburn, Christian List, Kimmo Varis,\r
2 ;                 Purpose:  The is the Inno Setup installation script for distributing our WinMerge application.\r
3 ; Tools Needed To Compile:  Inno Setup 5.1.7+ (http://www.jrsoftware.org/isdl.php), Inno Setup QuickStart Pack 5.1.7+(http://www.jrsoftware.org/isdl.php)\r
4 ;                           note: the versions of Inno Setup and the QuickStart Pack should be identical to ensure proper function\r
5 ;Directly Dependant Files:  Because this is an installer. It would be difficult to list and maintain each of the files referenced\r
6 ;                           throughout the script in the header.  If you search this plain text script for a particular file in our Subversio repository and it\r
7 ;                           doesn't appear then this script is not directly dependant on that file.\r
8 ;Compilation Instructions:  1.  Open this file in Inno Setup or ISTool\r
9 ;                           2.  Make sure Compression=LZMA/Ultra, InternalCompressLevel=Ultra, and SolidCompression=True these values are lowered during\r
10 ;                               development to speed up compilation, however at release we want the intaller to be as strong as possible.\r
11 ;                           3. Check all files are present:\r
12 ;                                   -From ISTool Click\r
13 ;                           4.  Compile the script: "Project" --> "Verify Files..."\r
14 ;                                   -From Inno Setup "Click "Build" --> "Compile"\r
15 ;                                   -From ISTool Click "Project" --> "Compile Setup"\r
16 ;                           5.  The compiled installer will appear in the \InnoSetup\Output\ directory at currently should be around 1.5MBs in size.\r
17 ;\r
18 ; Installer To Do List:\r
19 ; #  Make the Install7ZipDll() Function automatically work with future versions of Merge7zDLL (Use GetCurentFileName)\r
20 ; #  Provide the option to or not to assign the Ctrl+Alt+M accelerator to WinMerge., make sure it's turned on for at least one icon\r
21 ; #  Add WinMerge to the user's path so they can execute comparison's from a Dos Prompt (Cmd.exe/Command.exe)\r
22 ; #  We need to unregister, and delete the ShellExtension Dll if the user doesn't want it, during installation\r
23 \r
24 ; #  Display integration options in gray rather than hiding them if the user doesn't have the application in question installed\r
25 ; #  We need to ask those that have the RCLLocalization.dll in their plugins folder if they actually want it, their answer will need to be stored in the registry\r
26 ; #  Write code to detect "\Programs\WinMerge\WinMerge" type start menu installs\r
27 ;\r
28 ; Custom Installer Pages:\r
29 ; #  Bundle 7-Zip with WinMerge or provide on the fly download capability.\r
30 ; #  Allow users to set their working directory via a custom installer page\r
31 ;\r
32 ; Things that make the user's life easier:\r
33 ; #  Create instructions and a sample language file using the Inno Setup Translator Tool (http://www2.arnes.si/~sopjsimo/translator.html)\r
34 ; #  Add "WinMerge is running would you like to close it now?" support with programmatic termination\r
35 ;     -Note: We'll need to add a declares statement to our ISX code so that we can use FindWindowEx directly or a mutex search or two\r
36 ; #  Rather than requiring users to restart we could just kill all intances of Explorer.exe, but we'll need to prompt the user first and restart it\r
37 ;    once the ShellExtension.dll file has been added or removed.\r
38 ;\r
39 ; Non-Essential Features:\r
40 ; #  See about getting a higher resolution copy of the Users's Guide.ico source art from somebody (A 32x32, and or 48x48 would be nice)\r
41 ; #  Using the registry set the order our icons appear within their group in the start menu.:\r
42 ;      1.  WinMerge\r
43 ;      2.  Read Me\r
44 ;      3.  Users's Guide\r
45 ;      4.  WinMerge on the Web\r
46 ;      5.  Uninstall WinMerge\r
47 ; #  Create the ability to install to two start menu groups simultaneously\r
48 ;\r
49 ; Not yet possible (Limited by Inno Setup):\r
50 ; #  While uninstalling prompt the user as to whether or not they'd like to remove their WinMerge preferences too?\r
51 \r
52 #define AppVersion GetFileVersion(SourcePath + "\..\..\Build\X64\MergeUnicodeRelease\WinMergeU.exe")\r
53 #define FriendlyAppVersion Copy(GetFileVersion(SourcePath + "\..\..\Build\X64\MergeUnicodeRelease\WinMergeU.exe"), 1, 5)\r
54 #define VS120COMNTOOLS GetEnv('VS120COMNTOOLS')\r
55 #define VS140COMNTOOLS GetEnv('VS140COMNTOOLS')\r
56 \r
57 [Setup]\r
58 AppName=WinMerge\r
59 AppVersion={#AppVersion}\r
60 AppVerName=WinMerge {#AppVersion} x64\r
61 AppPublisher=Thingamahoochie Software\r
62 AppPublisherURL=http://WinMerge.org/\r
63 AppSupportURL=http://WinMerge.org/\r
64 AppUpdatesURL=http://WinMerge.org/\r
65 \r
66 ; Installer executable's version resource info\r
67 VersionInfoCompany=http://winmerge.org\r
68 VersionInfoDescription=WinMerge Installer\r
69 VersionInfoVersion={#AppVersion}\r
70 \r
71 ;This is in case an older version of the installer happened to be\r
72 DirExistsWarning=no\r
73 \r
74 ;Tells the installer to only display a select language dialog if the an exact match wasn't found\r
75 ShowLanguageDialog=auto\r
76 \r
77 DefaultDirName={pf}\WinMerge\r
78 DefaultGroupName=WinMerge\r
79 DisableStartupPrompt=true\r
80 AllowNoIcons=true\r
81 InfoBeforeFile=..\..\Docs\users\GPL.rtf\r
82 InfoAfterFile=..\..\Docs\users\ReadMe.txt\r
83 \r
84 OutputBaseFilename=WinMerge-{#AppVersion}-x64-Setup\r
85 \r
86 ;This must be admin to install C++ Runtimes and shell extension\r
87 PrivilegesRequired=admin\r
88 \r
89 ;Windows 2000 or later required\r
90 MinVersion=0,5.0\r
91 \r
92 UninstallDisplayIcon={app}\{code:ExeName}\r
93 \r
94 ;Artwork References\r
95 WizardImageFile=Art\Large Logo.bmp\r
96 WizardSmallImageFile=Art\Small Logo.bmp\r
97 WizardImageStretch=true\r
98 \r
99 ;It is confusing, if Setup/Uninstall use the same icon like WinMerge!\r
100 ;SetupIconFile=..\..\src\res\Merge.ico\r
101 \r
102 ;Compression Parameters\r
103 ;Please note while Compression=lzma/ultra and InternalCompressLevel=Ultra are better than max\r
104 ;they also require 320 MB of memory for compression. If you're system has at least 256MB RAM then by all\r
105 ;means set it to ultra before compilation\r
106 Compression=lzma/ultra\r
107 InternalCompressLevel=ultra\r
108 SolidCompression=true\r
109 \r
110 ; Update file associations for shell (project files)\r
111 ChangesAssociations=true\r
112 ; Updates PATH\r
113 ChangesEnvironment=true\r
114 OutputDir=..\..\Build\r
115 AlwaysShowComponentsList=true\r
116 \r
117 ArchitecturesInstallIn64BitMode=x64\r
118 \r
119 ;SignTool=signbat $f\r
120 ;SignedUninstaller=yes\r
121 \r
122 [Languages]\r
123 ;Inno Setup's Native Language\r
124 Name: English; MessagesFile: ..\..\Translations\InnoSetup\English.isl\r
125 \r
126 ;Localizations:\r
127 Name: Basque; MessagesFile: ..\..\Translations\InnoSetup\Basque.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Basque.txt\r
128 Name: Bulgarian; MessagesFile: ..\..\Translations\InnoSetup\Bulgarian.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Bulgarian.txt\r
129 Name: Catalan; MessagesFile: ..\..\Translations\InnoSetup\Catalan.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Catalan.txt\r
130 Name: Chinese_Simplified; MessagesFile: ..\..\Translations\InnoSetup\Chinese_Simplified.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-ChineseSimplified.txt\r
131 Name: Chinese_Traditional; MessagesFile: ..\..\Translations\InnoSetup\Chinese_Traditional.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-ChineseTraditional.txt\r
132 Name: Croatian; MessagesFile: ..\..\Translations\InnoSetup\Croatian.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Croatian.txt\r
133 Name: Czech; MessagesFile: ..\..\Translations\InnoSetup\Czech.isl\r
134 Name: Danish; MessagesFile: ..\..\Translations\InnoSetup\Danish.isl\r
135 Name: Dutch; MessagesFile: ..\..\Translations\InnoSetup\Dutch.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Dutch.txt\r
136 Name: Finnish; MessagesFile: ..\..\Translations\InnoSetup\Finnish.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Finnish.txt\r
137 Name: French; MessagesFile: ..\..\Translations\InnoSetup\French.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-French.txt\r
138 Name: Galician; MessagesFile: ..\..\Translations\InnoSetup\Galician.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Galician.txt\r
139 Name: German; MessagesFile: ..\..\Translations\InnoSetup\German.isl\r
140 Name: Greek; MessagesFile: ..\..\Translations\InnoSetup\Greek.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Greek.txt\r
141 Name: Hungarian; MessagesFile: ..\..\Translations\InnoSetup\Hungarian.isl\r
142 Name: Italian; MessagesFile: ..\..\Translations\InnoSetup\Italian.isl\r
143 Name: Japanese; MessagesFile: ..\..\Translations\InnoSetup\Japanese.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Japanese.txt\r
144 Name: Korean; MessagesFile: ..\..\Translations\InnoSetup\Korean.isl\r
145 Name: Lithuanian; MessagesFile: ..\..\Translations\InnoSetup\Lithuanian.isl\r
146 Name: Norwegian; MessagesFile: ..\..\Translations\InnoSetup\Norwegian.isl\r
147 Name: Persian; MessagesFile: ..\..\Translations\InnoSetup\Persian.isl\r
148 Name: Polish; MessagesFile: ..\..\Translations\InnoSetup\Polish.isl\r
149 Name: Portuguese; MessagesFile: ..\..\Translations\InnoSetup\Portuguese.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Portuguese.txt\r
150 Name: PortugueseBrazilian; MessagesFile: ..\..\Translations\InnoSetup\Brazilian_Portuguese.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Brazilian.txt\r
151 Name: Romanian; MessagesFile: ..\..\Translations\InnoSetup\Romanian.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Romanian.txt\r
152 Name: Russian; MessagesFile: ..\..\Translations\InnoSetup\Russian.isl\r
153 Name: Serbian; MessagesFile: ..\..\Translations\InnoSetup\Serbian.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Serbian.txt\r
154 Name: Sinhala; MessagesFile: ..\..\Translations\InnoSetup\Sinhala.isl\r
155 Name: Slovak; MessagesFile: ..\..\Translations\InnoSetup\Slovak.isl\r
156 Name: Slovenian; MessagesFile: ..\..\Translations\InnoSetup\Slovenian.isl\r
157 Name: Spanish; MessagesFile: ..\..\Translations\InnoSetup\Spanish.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Spanish.txt\r
158 Name: Swedish; MessagesFile: ..\..\Translations\InnoSetup\Swedish.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Swedish.txt\r
159 Name: Turkish; MessagesFile: ..\..\Translations\InnoSetup\Turkish.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Turkish.txt\r
160 Name: Ukrainian; MessagesFile: ..\..\Translations\InnoSetup\Ukrainian.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Ukrainian.txt\r
161 \r
162 \r
163 [Messages]\r
164 English.FinishedLabel=Setup has finished installing WinMerge on your computer.\r
165 English.SetupAppTitle=Setup - WinMerge {#AppVersion}\r
166 English.WizardInfoBefore=License Agreement\r
167 English.InfoBeforeLabel=GNU General Public License\r
168 \r
169 \r
170 [Types]\r
171 Name: typical; Description: {cm:TypicalInstallation}\r
172 Name: full; Description: {cm:FullInstallation}\r
173 Name: compact; Description: {cm:CompactInstallation}\r
174 Name: custom; Description: {cm:CustomInstallation}; Flags: iscustom\r
175 \r
176 \r
177 [Components]\r
178 ; Executable, libraries, documentation\r
179 Name: Core; Description: {cm:AppCoreFiles}; Types: full custom typical compact; Flags: fixed\r
180 Name: ShellExtension32bit; Description: {cm:ShellExtension32bit}; Types: full typical\r
181 \r
182 Name: filters; Description: {cm:Filters}; Flags: disablenouninstallwarning; Types: full typical\r
183 Name: Plugins; Description: {cm:Plugins}; Flags: disablenouninstallwarning; Types: full typical\r
184 Name: Frhed; Description: {cm:Frhed}; Flags: disablenouninstallwarning; Types: full typical\r
185 Name: WinIMerge; Description: {cm:WinIMerge}; Flags: disablenouninstallwarning; Types: full typical\r
186 Name: ArchiveSupport; Description: {cm:ArchiveSupport}; Flags: disablenouninstallwarning; Types: full typical\r
187 Name: Patch; Description: {cm:Patch}; Flags: disablenouninstallwarning; Types: full typical\r
188 \r
189 ;Language components\r
190 Name: Languages; Description: {cm:Languages}; Flags: disablenouninstallwarning\r
191 Name: Languages\Basque; Description: {cm:BasqueLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Basque\r
192 Name: Languages\Basque; Description: {cm:BasqueLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Basque\r
193 \r
194 Name: Languages\Bulgarian; Description: {cm:BulgarianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Bulgarian\r
195 Name: Languages\Bulgarian; Description: {cm:BulgarianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Bulgarian\r
196 \r
197 Name: Languages\Catalan; Description: {cm:CatalanLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Catalan\r
198 Name: Languages\Catalan; Description: {cm:CatalanLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Catalan\r
199 \r
200 Name: Languages\Chinese_Simplified; Description: {cm:ChineseSimplifiedLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Chinese_Simplified\r
201 Name: Languages\Chinese_Simplified; Description: {cm:ChineseSimplifiedLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Chinese_Simplified\r
202 \r
203 Name: Languages\Chinese_Traditional; Description: {cm:ChineseTraditionalLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Chinese_Traditional\r
204 Name: Languages\Chinese_Traditional; Description: {cm:ChineseTraditionalLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Chinese_Traditional\r
205 \r
206 Name: Languages\Croatian; Description: {cm:CroatianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Croatian\r
207 Name: Languages\Croatian; Description: {cm:CroatianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Croatian\r
208 \r
209 Name: Languages\Czech; Description: {cm:CzechLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Czech\r
210 Name: Languages\Czech; Description: {cm:CzechLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Czech\r
211 \r
212 Name: Languages\Danish; Description: {cm:DanishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Danish\r
213 Name: Languages\Danish; Description: {cm:DanishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Danish\r
214 \r
215 Name: Languages\Dutch; Description: {cm:DutchLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Dutch\r
216 Name: Languages\Dutch; Description: {cm:DutchLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Dutch\r
217 \r
218 Name: Languages\Finnish; Description: {cm:FinnishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Finnish\r
219 Name: Languages\Finnish; Description: {cm:FinnishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Finnish\r
220 \r
221 Name: Languages\French; Description: {cm:FrenchLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not French\r
222 Name: Languages\French; Description: {cm:FrenchLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: French\r
223 \r
224 Name: Languages\Galician; Description: {cm:GalicianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Galician\r
225 Name: Languages\Galician; Description: {cm:GalicianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Galician\r
226 \r
227 Name: Languages\German; Description: {cm:GermanLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not German\r
228 Name: Languages\German; Description: {cm:GermanLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: German\r
229 \r
230 Name: Languages\Greek; Description: {cm:GreekLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Greek\r
231 Name: Languages\Greek; Description: {cm:GreekLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Greek\r
232 \r
233 Name: Languages\Hungarian; Description: {cm:HungarianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Hungarian\r
234 Name: Languages\Hungarian; Description: {cm:HungarianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Hungarian\r
235 \r
236 Name: Languages\Italian; Description: {cm:ItalianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Italian\r
237 Name: Languages\Italian; Description: {cm:ItalianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Italian\r
238 \r
239 Name: Languages\Japanese; Description: {cm:JapaneseLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Japanese\r
240 Name: Languages\Japanese; Description: {cm:JapaneseLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Japanese\r
241 \r
242 Name: Languages\Korean; Description: {cm:KoreanLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Korean\r
243 Name: Languages\Korean; Description: {cm:KoreanLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Korean\r
244 \r
245 Name: Languages\Lithuanian; Description: {cm:LithuanianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Lithuanian\r
246 Name: Languages\Lithuanian; Description: {cm:LithuanianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Lithuanian\r
247 \r
248 Name: Languages\Norwegian; Description: {cm:NorwegianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Norwegian\r
249 Name: Languages\Norwegian; Description: {cm:NorwegianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Norwegian\r
250 \r
251 Name: Languages\Persian; Description: {cm:PersianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Persian\r
252 Name: Languages\Persian; Description: {cm:PersianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Persian\r
253 \r
254 Name: Languages\Polish; Description: {cm:PolishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Polish\r
255 Name: Languages\Polish; Description: {cm:PolishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Polish\r
256 \r
257 Name: Languages\Portuguese; Description: {cm:PortugueseLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Portuguese\r
258 Name: Languages\Portuguese; Description: {cm:PortugueseLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Portuguese\r
259 \r
260 Name: Languages\PortugueseBrazilian; Description: {cm:PortugueseBrazilLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not PortugueseBrazilian\r
261 Name: Languages\PortugueseBrazilian; Description: {cm:PortugueseBrazilLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: PortugueseBrazilian\r
262 \r
263 Name: Languages\Romanian; Description: {cm:RomanianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Romanian\r
264 Name: Languages\Romanian; Description: {cm:RomanianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Romanian\r
265 \r
266 Name: Languages\Russian; Description: {cm:RussianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Russian\r
267 Name: Languages\Russian; Description: {cm:RussianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Russian\r
268 \r
269 Name: Languages\Serbian; Description: {cm:SerbianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Serbian\r
270 Name: Languages\Serbian; Description: {cm:SerbianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Serbian\r
271 \r
272 Name: Languages\Sinhala; Description: {cm:SinhalaLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Sinhala\r
273 Name: Languages\Sinhala; Description: {cm:SinhalaLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Sinhala\r
274 \r
275 Name: Languages\Slovak; Description: {cm:SlovakLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Slovak\r
276 Name: Languages\Slovak; Description: {cm:SlovakLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Slovak\r
277 \r
278 Name: Languages\Slovenian; Description: {cm:SlovenianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Slovenian\r
279 Name: Languages\Slovenian; Description: {cm:SlovenianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Slovenian\r
280 \r
281 Name: Languages\Spanish; Description: {cm:SpanishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Spanish\r
282 Name: Languages\Spanish; Description: {cm:SpanishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Spanish\r
283 \r
284 Name: Languages\Swedish; Description: {cm:SwedishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Swedish\r
285 Name: Languages\Swedish; Description: {cm:SwedishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Swedish\r
286 \r
287 Name: Languages\Turkish; Description: {cm:TurkishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Turkish\r
288 Name: Languages\Turkish; Description: {cm:TurkishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Turkish\r
289 \r
290 Name: Languages\Ukrainian; Description: {cm:UkrainianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Ukrainian\r
291 Name: Languages\Ukrainian; Description: {cm:UkrainianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Ukrainian\r
292 \r
293 \r
294 [Tasks]\r
295 Name: ShellExtension; Description: {cm:ExplorerContextMenu}; GroupDescription: {cm:OptionalFeatures}\r
296 Name: modifypath; Description: {cm:AddToPath}; GroupDescription: {cm:OptionalFeatures}; Flags: unchecked\r
297 Name: TortoiseCVS; Description: {cm:IntegrateTortoiseCVS}; GroupDescription: {cm:OptionalFeatures}; Check: TortoiseCVSInstalled\r
298 Name: TortoiseGit; Description: {cm:IntegrateTortoiseGit}; GroupDescription: {cm:OptionalFeatures}; Check: TortoiseGitInstalled; MinVersion: 0,5.0.2195sp3\r
299 Name: TortoiseSVN; Description: {cm:IntegrateTortoiseSVN}; GroupDescription: {cm:OptionalFeatures}; Check: TortoiseSVNInstalled; MinVersion: 0,5.0.2195sp3\r
300 Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked\r
301 Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; OnlyBelowVersion: 0,6.1\r
302 \r
303 [InstallDelete]\r
304 ; Diff.txt is a file left over from previous versions of WinMerge (before version 2.0), we just delete it to be nice.\r
305 Type: files; Name: {app}\Diff.txt\r
306 \r
307 ;All of these files are removed so if the user upgrades their operating system or changes their language selections only the\r
308 ;necessary files will be left in the installation folder\r
309 ;Another reason these files might be strays is if a user extracted one of the experimental builds such as:\r
310 ;WinMerge.{#AppVersion}-exe.7z.\r
311 Name: {app}\WinMerge.exe; Type: files\r
312 Name: {app}\WinMergeU.exe; Type: files; MinVersion: 0, 4\r
313 \r
314 ;Remove manifest files as we don't need them in 2.6.2 / 2.7.1.1 or later\r
315 Name: {app}\WinMerge.exe.manifest; Type: files\r
316 Name: {app}\WinMergeU.exe.manifest; Type: files\r
317 \r
318 Name: {app}\Merge7z457.dll; Type: files\r
319 Name: {app}\Merge7z457U.dll; Type: files; MinVersion: 0, 4\r
320 \r
321 Name: {app}\Merge7z465.dll; Type: files\r
322 Name: {app}\Merge7z465U.dll; Type: files; MinVersion: 0, 4\r
323 \r
324 Name: {app}\Merge7z920.dll; Type: files\r
325 Name: {app}\Merge7z920U.dll; Type: files; MinVersion: 0, 4\r
326 \r
327 ;This won't work, because the file has to be unregistered, and explorer closed, first.\r
328 ;Name: {app}\ShellExtension.dll; Type: files; Check: TaskDisabled('ShellExtension')\r
329 \r
330 ; Remove existing .lang files - we don't need them anymore as we are\r
331 ; using PO files now.\r
332 Name: {app}\Languages\MergeBrazilian.lang; Type: files\r
333 Name: {app}\Languages\MergeBulgarian.lang; Type: files\r
334 Name: {app}\Languages\MergeCatalan.lang; Type: files\r
335 Name: {app}\Languages\MergeChineseSimplified.lang; Type: files\r
336 Name: {app}\Languages\MergeChineseTraditional.lang; Type: files\r
337 Name: {app}\Languages\MergeCzech.lang; Type: files\r
338 Name: {app}\Languages\MergeDanish.lang; Type: files\r
339 Name: {app}\Languages\MergeDutch.lang; Type: files\r
340 Name: {app}\Languages\MergeFrench.lang; Type: files\r
341 Name: {app}\Languages\MergeGerman.lang; Type: files\r
342 Name: {app}\Languages\MergeHungarian.lang; Type: files\r
343 Name: {app}\Languages\MergeItalian.lang; Type: files\r
344 Name: {app}\Languages\MergeJapanese.lang; Type: files\r
345 Name: {app}\Languages\MergeKorean.lang; Type: files\r
346 Name: {app}\Languages\MergeNorwegian.lang; Type: files\r
347 Name: {app}\Languages\MergePersian.lang; Type: files\r
348 Name: {app}\Languages\MergePolish.lang; Type: files\r
349 Name: {app}\Languages\MergePortuguese.lang; Type: files\r
350 Name: {app}\Languages\MergeSlovak.lang; Type: files\r
351 Name: {app}\Languages\MergeSpanish.lang; Type: files\r
352 Name: {app}\Languages\MergeRussian.lang; Type: files\r
353 Name: {app}\Languages\MergeSerbian.lang; Type: files\r
354 Name: {app}\Languages\MergeSwedish.lang; Type: files\r
355 Name: {app}\Languages\MergeTurkish.lang; Type: files\r
356 Name: {app}\MergePlugins\list.txt; Type: files; Check: not IsComponentSelected('Plugins')\r
357 \r
358 ;Removes the user's guide icon if the user deselects the user's guide component.\r
359 Name: {group}\{cm:UsersGuide}.lnk; Type: files; Check: not IsComponentSelected('Docs')\r
360 \r
361 ;This removes the quick launch icon in case the user chooses not to install it after previously having it installed\r
362 Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\WinMerge.lnk; Type: files; Check: not IsTaskSelected('QuickLauchIcon')\r
363 Name: {commonappdata}\Microsoft\Internet Explorer\Quick Launch\WinMerge.lnk; Type: files; Check: not IsTaskSelected('QuickLauchIcon')\r
364 \r
365 ;This removes the desktop icon in case the user chooses not to install it after previously having it installed\r
366 Name: {userdesktop}\WinMerge.lnk; Type: files; Check: not IsTaskSelected('DesktopIcon')\r
367 Name: {commondesktop}\WinMerge.lnk; Type: files; Check: not IsTaskSelected('DesktopIcon')\r
368 \r
369 ;Removes the Uninstall icon from the start menu...\r
370 Name: {group}\{cm:UninstallProgram,WinMerge}.lnk; Type: files;\r
371 \r
372 ;Remove ANSI executable link from start menu for NT-based Windows versions\r
373 ;This was installed earlier, but not anymore.\r
374 Name: {group}\WinMerge (ANSI).lnk; Type: files; MinVersion: 0,4\r
375 Name: {app}\Docs; Type: filesandordirs\r
376 \r
377 Name: {app}\MergePlugins\editor addin.sct; Type: Files; Check: not IsComponentSelected('Plugins')\r
378 Name: {app}\MergePlugins\insert datetime.sct; Type: Files; Check: not IsComponentSelected('Plugins')\r
379 Name: {app}\MergePlugins; Type: DirIfEmpty; Check: not IsComponentSelected('Plugins')\r
380 \r
381 Name: {app}\Filters\ADAMulti.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
382 Name: {app}\Filters\ASPNET.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
383 Name: {app}\Filters\CSharp_loose.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
384 Name: {app}\Filters\Delphi.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
385 Name: {app}\Filters\MASM.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
386 Name: {app}\Filters\Merge_GnuC_loose.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
387 Name: {app}\Filters\Merge_VC_loose.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
388 Name: {app}\Filters\Merge_VB_loose.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
389 Name: {app}\Filters\SourceControl.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
390 Name: {app}\Filters\Symbian.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
391 Name: {app}\Filters\XML_html.flt; Type: Files; Check: not IsComponentSelected('Filters')\r
392 Name: {app}\Filters\FileFilter.tmpl; Type: Files; Check: not IsComponentSelected('Filters')\r
393 Name: {app}\Filters; Type: DirIfEmpty; Check: not IsComponentSelected('Filters')\r
394 \r
395 \r
396 \r
397 [Dirs]\r
398 ;The always uninstall flag tells the uninstaller to remove the folder if it's empty regardless of whether or not it existed prior to the installation\r
399 Name: {app}; Flags: uninsalwaysuninstall\r
400 \r
401 \r
402 [Files]\r
403 ; WinMerge itself\r
404 Source: ..\..\Build\X64\MergeUnicodeRelease\WinMergeU.exe; DestDir: {app}; Flags: promptifolder; Components: Core\r
405 ; 32Bit Plugin Proxy\r
406 Source: ..\..\Plugins\WinMerge32BitPluginProxy\Release\WinMerge32BitPluginProxy.exe; DestDir: {app}; Flags: promptifolder; Components: Core\r
407 \r
408 ; List of installed files\r
409 Source: ..\..\Docs\Users\Files.txt; DestDir: {app}; Flags: promptifolder; Components: Core\r
410 \r
411 ; Shell extension\r
412 Source: ..\..\Build\ShellExtension\ShellExtensionU.dll; DestDir: {app}; Flags: regserver uninsrestartdelete restartreplace promptifolder; MinVersion: 0, 4; Check: not IsWin64\r
413 ; 64-bit version of ShellExtension\r
414 Source: ..\..\Build\ShellExtension\ShellExtensionX64.dll; DestDir: {app}; Flags: regserver uninsrestartdelete restartreplace promptifolder 64bit; MinVersion: 0,5.01.2600; Check: IsWin64\r
415 \r
416 ;Please do not reorder the 7z Dlls by version they compress better ordered by platform and then by version\r
417 Source: ..\..\Build\X64\Merge7z\Merge7z1805U.dll; DestDir: {app}\Merge7z; Flags: promptifolder; MinVersion: 0, 4; Components: ArchiveSupport\r
418 Source: ..\..\Build\X64\Merge7z\7z.dll; DestDir: {app}\Merge7z; Flags: promptifolder; MinVersion: 0, 4; Components: ArchiveSupport\r
419 Source: ..\..\Build\X64\Merge7z\*.txt; DestDir: {app}\Merge7z; Flags: promptifolder; MinVersion: 0, 4; Components: ArchiveSupport\r
420 Source: ..\..\Build\X64\Merge7z\Lang\*.txt; DestDir: {app}\Merge7z\Lang; Flags: promptifolder; MinVersion: 0, 4; Components: ArchiveSupport\r
421 \r
422 ; MergeLang.dll - translation helper dll\r
423 Source: ..\..\Build\X64\MergeUnicodeRelease\MergeLang.dll; DestDir: {app}; Flags: promptifolder ignoreversion; Components: Core\r
424 \r
425 ; Language files\r
426 Source: ..\..\Translations\WinMerge\Basque.po; DestDir: {app}\Languages; Components: Languages\Basque; Flags: ignoreversion comparetimestamp\r
427 Source: ..\..\Translations\Docs\Readme\ReadMe-Basque.txt; DestDir: {app}\Docs; Components: Languages\Basque\r
428 Source: ..\..\Translations\WinMerge\Brazilian.po; DestDir: {app}\Languages; Components: Languages\PortugueseBrazilian; Flags: ignoreversion comparetimestamp\r
429 Source: ..\..\Translations\Docs\Readme\ReadMe-Brazilian.txt; DestDir: {app}\Docs; Components: Languages\PortugueseBrazilian\r
430 Source: ..\..\Translations\WinMerge\Bulgarian.po; DestDir: {app}\Languages; Components: Languages\Bulgarian; Flags: ignoreversion comparetimestamp\r
431 Source: ..\..\Translations\Docs\Readme\ReadMe-Bulgarian.txt; DestDir: {app}\Docs; Components: Languages\Bulgarian\r
432 Source: ..\..\Translations\WinMerge\Catalan.po; DestDir: {app}\Languages; Components: Languages\Catalan; Flags: ignoreversion comparetimestamp\r
433 Source: ..\..\Translations\Docs\Readme\ReadMe-Catalan.txt; DestDir: {app}\Docs; Components: Languages\Catalan\r
434 Source: ..\..\Translations\WinMerge\ChineseSimplified.po; DestDir: {app}\Languages; Components: Languages\Chinese_Simplified; Flags: ignoreversion comparetimestamp\r
435 Source: ..\..\Translations\Docs\Readme\ReadMe-ChineseSimplified.txt; DestDir: {app}\Docs; Components: Languages\Chinese_Simplified\r
436 Source: ..\..\Translations\WinMerge\ChineseTraditional.po; DestDir: {app}\Languages; Components: Languages\Chinese_Traditional; Flags: ignoreversion comparetimestamp\r
437 Source: ..\..\Translations\Docs\Readme\ReadMe-ChineseTraditional.txt; DestDir: {app}\Docs; Components: Languages\Chinese_Traditional\r
438 Source: ..\..\Translations\WinMerge\Croatian.po; DestDir: {app}\Languages; Components: Languages\Croatian; Flags: ignoreversion comparetimestamp\r
439 Source: ..\..\Translations\Docs\Readme\ReadMe-Croatian.txt; DestDir: {app}\Docs; Components: Languages\Croatian\r
440 Source: ..\..\Translations\WinMerge\Czech.po; DestDir: {app}\Languages; Components: Languages\Czech; Flags: ignoreversion comparetimestamp\r
441 Source: ..\..\Translations\WinMerge\Danish.po; DestDir: {app}\Languages; Components: Languages\Danish; Flags: ignoreversion comparetimestamp\r
442 Source: ..\..\Translations\WinMerge\Dutch.po; DestDir: {app}\Languages; Components: Languages\Dutch; Flags: ignoreversion comparetimestamp\r
443 Source: ..\..\Translations\Docs\Readme\ReadMe-Dutch.txt; DestDir: {app}\Docs; Components: Languages\Dutch\r
444 Source: ..\..\Translations\WinMerge\Finnish.po; DestDir: {app}\Languages; Components: Languages\Finnish; Flags: ignoreversion comparetimestamp\r
445 Source: ..\..\Translations\Docs\Readme\ReadMe-Finnish.txt; DestDir: {app}\Docs; Components: Languages\Finnish\r
446 Source: ..\..\Translations\WinMerge\French.po; DestDir: {app}\Languages; Components: Languages\French; Flags: ignoreversion comparetimestamp\r
447 Source: ..\..\Translations\Docs\Readme\ReadMe-French.txt; DestDir: {app}\Docs; Components: Languages\French\r
448 Source: ..\..\Translations\WinMerge\Galician.po; DestDir: {app}\Languages; Components: Languages\Galician; Flags: ignoreversion comparetimestamp\r
449 Source: ..\..\Translations\Docs\Readme\ReadMe-Galician.txt; DestDir: {app}\Docs; Components: Languages\Galician\r
450 Source: ..\..\Translations\WinMerge\German.po; DestDir: {app}\Languages; Components: Languages\German; Flags: ignoreversion comparetimestamp\r
451 Source: ..\..\Translations\WinMerge\Greek.po; DestDir: {app}\Languages; Components: Languages\Greek; Flags: ignoreversion comparetimestamp\r
452 Source: ..\..\Translations\Docs\Readme\ReadMe-Greek.txt; DestDir: {app}\Docs; Components: Languages\Greek\r
453 Source: ..\..\Translations\WinMerge\Hungarian.po; DestDir: {app}\Languages; Components: Languages\Hungarian; Flags: ignoreversion comparetimestamp\r
454 Source: ..\..\Translations\WinMerge\Italian.po; DestDir: {app}\Languages; Components: Languages\Italian; Flags: ignoreversion comparetimestamp\r
455 Source: ..\..\Translations\WinMerge\Japanese.po; DestDir: {app}\Languages; Components: Languages\Japanese; Flags: ignoreversion comparetimestamp\r
456 Source: ..\..\Translations\Docs\Readme\ReadMe-Japanese.txt; DestDir: {app}\Docs; Components: Languages\Japanese\r
457 Source: ..\..\Translations\WinMerge\Korean.po; DestDir: {app}\Languages; Components: Languages\Korean; Flags: ignoreversion comparetimestamp\r
458 Source: ..\..\Translations\Docs\Readme\ReadMe-Lithuanian.txt; DestDir: {app}\Docs; Components: Languages\Lithuanian\r
459 Source: ..\..\Translations\WinMerge\Norwegian.po; DestDir: {app}\Languages; Components: Languages\Norwegian; Flags: ignoreversion comparetimestamp\r
460 Source: ..\..\Translations\WinMerge\Persian.po; DestDir: {app}\Languages; Components: Languages\Persian; Flags: ignoreversion comparetimestamp\r
461 Source: ..\..\Translations\WinMerge\Polish.po; DestDir: {app}\Languages; Components: Languages\Polish; Flags: ignoreversion comparetimestamp\r
462 Source: ..\..\Translations\WinMerge\Portuguese.po; DestDir: {app}\Languages; Components: Languages\Portuguese; Flags: ignoreversion comparetimestamp\r
463 Source: ..\..\Translations\Docs\Readme\ReadMe-Portuguese.txt; DestDir: {app}\Docs; Components: Languages\Portuguese\r
464 Source: ..\..\Translations\WinMerge\Romanian.po; DestDir: {app}\Languages; Components: Languages\Romanian; Flags: ignoreversion comparetimestamp\r
465 Source: ..\..\Translations\Docs\Readme\ReadMe-Romanian.txt; DestDir: {app}\Docs; Components: Languages\Romanian\r
466 Source: ..\..\Translations\WinMerge\Russian.po; DestDir: {app}\Languages; Components: Languages\Russian; Flags: ignoreversion comparetimestamp\r
467 Source: ..\..\Translations\WinMerge\Serbian.po; DestDir: {app}\Languages; Components: Languages\Serbian; Flags: ignoreversion comparetimestamp\r
468 Source: ..\..\Translations\Docs\Readme\ReadMe-Serbian.txt; DestDir: {app}\Docs; Components: Languages\Serbian\r
469 Source: ..\..\Translations\WinMerge\Sinhala.po; DestDir: {app}\Languages; Components: Languages\Sinhala; Flags: ignoreversion comparetimestamp\r
470 Source: ..\..\Translations\WinMerge\Slovak.po; DestDir: {app}\Languages; Components: Languages\Slovak; Flags: ignoreversion comparetimestamp\r
471 Source: ..\..\Translations\WinMerge\Slovenian.po; DestDir: {app}\Languages; Components: Languages\Slovenian; Flags: ignoreversion comparetimestamp\r
472 Source: ..\..\Translations\WinMerge\Spanish.po; DestDir: {app}\Languages; Components: Languages\Spanish; Flags: ignoreversion comparetimestamp\r
473 Source: ..\..\Translations\Docs\Readme\ReadMe-Spanish.txt; DestDir: {app}\Docs; Components: Languages\Spanish\r
474 Source: ..\..\Translations\WinMerge\Swedish.po; DestDir: {app}\Languages; Components: Languages\Swedish; Flags: ignoreversion comparetimestamp\r
475 Source: ..\..\Translations\Docs\Readme\ReadMe-Swedish.txt; DestDir: {app}\Docs; Components: Languages\Swedish\r
476 Source: ..\..\Translations\WinMerge\Turkish.po; DestDir: {app}\Languages; Components: Languages\Turkish; Flags: ignoreversion comparetimestamp\r
477 Source: ..\..\Translations\Docs\Readme\ReadMe-Turkish.txt; DestDir: {app}\Docs; Components: Languages\Turkish\r
478 Source: ..\..\Translations\WinMerge\Ukrainian.po; DestDir: {app}\Languages; Components: Languages\Ukrainian; Flags: ignoreversion comparetimestamp\r
479 Source: ..\..\Translations\Docs\Readme\ReadMe-Ukrainian.txt; DestDir: {app}\Docs; Components: Languages\Ukrainian\r
480 \r
481 Source: ..\..\Filters\*.flt; DestDir: {app}\Filters; Flags: sortfilesbyextension comparetimestamp ignoreversion; Components: filters\r
482 Source: ..\..\Filters\FileFilter.tmpl; DestDir: {app}\Filters; Flags: sortfilesbyextension comparetimestamp ignoreversion; Components: filters\r
483 \r
484 ;Documentation\r
485 Source: ..\..\Docs\Users\ReadMe.txt; DestDir: {app}\Docs; Flags: comparetimestamp ignoreversion promptifolder; Components: Core\r
486 Source: ..\..\Docs\Users\Contributors.txt; DestDir: {app}; Flags: comparetimestamp ignoreversion promptifolder; Components: Core\r
487 Source: ..\..\Docs\Users\ReleaseNotes.html; DestDir: {app}\Docs; Flags: comparetimestamp ignoreversion promptifolder; Components: Core\r
488 Source: ..\..\Docs\Users\ChangeLog.txt; DestDir: {app}\Docs; Flags: comparetimestamp ignoreversion promptifolder; Components: Core\r
489 Source: ..\..\Build\Manual\htmlhelp\WinMerge.chm; DestDir: {app}\Docs\; Flags: overwritereadonly uninsremovereadonly; Components: Core\r
490 Source: ..\..\Docs\users\GPL.rtf; DestDir: {app}\Docs\; Flags: comparetimestamp ignoreversion promptifolder; Components: Core\r
491 \r
492 ;Plugins\r
493 ;Please note IgnoreVersion and CompareTimeStamp are to instruct the installer to not not check for version info and go straight to comparing modification dates\r
494 Source: ..\..\Plugins\dlls\editor addin.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins\r
495 Source: ..\..\Plugins\dlls\insert datetime.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins\r
496 Source: ..\..\Plugins\dlls\CompareMSExcelFiles.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins\r
497 Source: ..\..\Plugins\dlls\CompareMSWordFiles.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins\r
498 Source: ..\..\Plugins\dlls\CompareMSPowerPointFiles.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins\r
499 Source: ..\..\Plugins\dlls\ApplyPatch.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins\r
500 Source: ..\..\Plugins\dlls\PrediffLineFilter.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins\r
501 Source: ..\..\Plugins\dlls\X64\IgnoreColumns.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins\r
502 Source: ..\..\Plugins\dlls\X64\IgnoreCommentsC.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins\r
503 Source: ..\..\Plugins\dlls\X64\IgnoreFieldsComma.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins\r
504 Source: ..\..\Plugins\dlls\X64\IgnoreFieldsTab.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins\r
505 \r
506 ;Frhed\r
507 Source: ..\..\Build\x64\Frhed\GPL.txt; DestDir: {app}\Frhed; Components: Frhed\r
508 ;Source: ..\..\Build\x64\Frhed\frhed.exe; DestDir: {app}\Frhed; Components: Frhed\r
509 Source: ..\..\Build\x64\Frhed\hekseditU.dll; DestDir: {app}\Frhed; Flags: ignoreversion replacesameversion; Components: Frhed\r
510 Source: ..\..\Build\x64\Frhed\Docs\ChangeLog.txt; DestDir: {app}\Frhed\Docs; Components: Frhed\r
511 Source: ..\..\Build\x64\Frhed\Docs\Contributors.txt; DestDir: {app}\Frhed\Docs; Components: Frhed\r
512 Source: ..\..\Build\x64\Frhed\Docs\History.txt; DestDir: {app}\Frhed\Docs; Components: Frhed\r
513 Source: ..\..\Build\x64\Frhed\Docs\Links.txt; DestDir: {app}\Frhed\Docs; Components: Frhed\r
514 Source: ..\..\Build\x64\Frhed\Docs\Sample.tpl  ; DestDir: {app}\Frhed\Docs; Components: Frhed\r
515 Source: ..\..\Build\x64\Frhed\Languages\de.po; DestDir: {app}\Frhed\Languages; Components: Frhed\r
516 Source: ..\..\Build\x64\Frhed\Languages\fr.po; DestDir: {app}\Frhed\Languages; Components: Frhed\r
517 Source: ..\..\Build\x64\Frhed\Languages\ja.po; DestDir: {app}\Frhed\Languages; Components: Frhed\r
518 Source: ..\..\Build\x64\Frhed\Languages\nl.po; DestDir: {app}\Frhed\Languages; Components: Frhed\r
519 Source: ..\..\Build\x64\Frhed\Languages\heksedit.lng; DestDir: {app}\Frhed\Languages; Components: Frhed\r
520 \r
521 ;WinIMerge\r
522 Source: ..\..\Build\WinIMerge\GPL.txt; DestDir: {app}\WinIMerge; Components: WinIMerge\r
523 Source: ..\..\Build\WinIMerge\freeimage-license-gplv2.txt; DestDir: {app}\WinIMerge; Components: WinIMerge\r
524 ;Source: ..\..\Build\WinIMerge\bin64\WinIMerge.exe; DestDir: {app}\WinIMerge; Components: WinIMerge\r
525 Source: ..\..\Build\WinIMerge\bin64\WinIMergeLib.dll; DestDir: {app}\WinIMerge; Flags: ignoreversion replacesameversion; Components: WinIMerge\r
526 Source: ..\..\Build\WinIMerge\bin64\vcomp140.dll; DestDir: {app}; Components: WinIMerge\r
527 \r
528 ;GnuWin32 Patch for Windows\r
529 Source: ..\..\Build\GnuWin32\*.*; DestDir: {app}\GnuWin32; Flags: recursesubdirs; Components: Patch\r
530 \r
531 [Dirs]\r
532 Name: "{app}\MergePlugins"\r
533 \r
534 [Icons]\r
535 ;Start Menu Icons\r
536 Name: {group}\WinMerge; Filename: {app}\{code:ExeName}; AppUserModelID: "Thingamahoochie.WinMerge"\r
537 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe.txt; IconFileName: {win}\NOTEPAD.EXE\r
538 Name: {group}\{cm:UsersGuide}; Filename: {app}\Docs\WinMerge.chm\r
539 Name: {group}\{cm:UninstallProgram,WinMerge}; Filename: {uninstallexe}\r
540 Name: {group}\{cm:ProgramOnTheWeb,WinMerge}; Filename: http://winmerge.org\r
541 \r
542 ;Link to translated ReadMe in Start Menu\r
543 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Basque.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Basque\r
544 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Brazilian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: PortugueseBrazilian\r
545 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Bulgarian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Bulgarian\r
546 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Catalan.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Catalan\r
547 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-ChineseSimplified.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Chinese_Simplified\r
548 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-ChineseTraditional.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Chinese_Traditional\r
549 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Croatian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Croatian\r
550 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Dutch.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Dutch\r
551 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Finnish.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Finnish\r
552 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-French.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: French\r
553 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Galician.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Galician\r
554 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Greek.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Greek\r
555 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Japanese.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Japanese\r
556 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Portuguese.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Portuguese\r
557 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Romanian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Romanian\r
558 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Serbian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Serbian\r
559 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Spanish.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Spanish\r
560 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Swedish.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Swedish\r
561 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Turkish.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Turkish\r
562 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Ukrainian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Ukrainian\r
563 \r
564 ;Desktop Icon\r
565 Name: {commondesktop}\WinMerge; Filename: {app}\{code:ExeName}; Tasks: desktopicon\r
566 \r
567 ;Quick Launch Icon\r
568 Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\WinMerge; Filename: {app}\{code:ExeName}; Tasks: quicklaunchicon\r
569 \r
570 [Registry]\r
571 Root: HKCU; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty\r
572 Root: HKCU; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey\r
573 Root: HKLM; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty\r
574 Root: HKLM; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey\r
575 \r
576 ;Add Project file extension (.WinMerge) to known extensions and\r
577 ;set WinMerge to open those files\r
578 ;set Notepad to edit project files\r
579 Root: HKCR; Subkey: .WinMerge; ValueType: String; ValueData: WinMerge.Project.File; Flags: uninsdeletekey\r
580 Root: HKCR; Subkey: WinMerge.Project.File; ValueType: String; ValueData: {cm:ProjectFileDesc}; Flags: uninsdeletekey\r
581 Root: HKCR; Subkey: WinMerge.Project.File\shell\open\command; ValueType: String; ValueData: """{app}\{code:ExeName}"" ""%1"""; Flags: uninsdeletekey\r
582 Root: HKCR; Subkey: WinMerge.Project.File\shell\edit\command; ValueType: String; ValueData: """NOTEPAD.EXE"" ""%1"""; Flags: uninsdeletekey\r
583 Root: HKCR; Subkey: WinMerge.Project.File\DefaultIcon; ValueType: String; ValueData: """{app}\{code:ExeName}"",1"; Flags: uninsdeletekey\r
584 \r
585 ; delete obsolete values\r
586 ;In Inno Setup Version 4.18 ValueData couldn't be null and compile,\r
587 ;if this is fixed in a later version feel free to remove the parameter\r
588 Root: HKCU; Subkey: Software\Thingamahoochie\WinMerge\Settings; ValueType: none; ValueName: LeftMax; Flags: deletevalue\r
589 Root: HKCU; Subkey: Software\Thingamahoochie\WinMerge\Settings; ValueType: none; ValueName: DirViewMax; Flags: deletevalue\r
590 \r
591 ;This removes the key that remembers which messageboxes to hide from the user, this is because the text of that message\r
592 ;can change and make it more clear as to the user why they might want to pay attention to a particular dialog and also\r
593 ;because a particular message might be added or removed and a new message might occupy a previous message's ID number\r
594 Root: HKLM; Subkey: Software\Thingamahoochie\WinMerge\MessageBoxes; ValueType: none; Flags: deletekey\r
595 \r
596 Root: HKCR; SubKey: Directory\Shell\WinMerge\command; ValueType: none; Flags: deletekey noerror\r
597 Root: HKCR; SubKey: Directory\Shell\WinMerge; ValueType: none; Flags: deletekey noerror\r
598 \r
599 ;Adds "Start Menu" --> "Run" Support for WinMerge\r
600 Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\App Paths\WinMerge.exe; ValueType: none; Flags: uninsdeletekey\r
601 Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\App Paths\WinMergeU.exe; ValueType: none; Flags: uninsdeletekey\r
602 Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinMerge.exe; ValueType: string; ValueName: ; ValueData: {app}\{code:ExeName}\r
603 Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinMergeU.exe; ValueType: string; ValueName: ; ValueData: {app}\{code:ExeName}\r
604 \r
605 ;Registry Keys for use by ShellExtension.dll\r
606 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge; ValueType: string; ValueName: Executable; ValueData: {app}\{code:ExeName}\r
607 \r
608 ;Enables or disables the Context Menu preference based on what the user selects during install\r
609 ;Initially the Context menu is explicitly disabled:\r
610 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: 0;\r
611 \r
612 ;If the user chose to use the context menu then we re-enable it.  This is necessary so it'll turn on and off not just on.\r
613 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: 1; Tasks: ShellExtension\r
614 Root: HKCU; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: {code:ShellMenuEnabled}\r
615 \r
616 ;If WinMerge.exe is installed then we'll automatically configure WinMerge as the differencing application\r
617 Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: string; ValueName: External Diff Application; ValueData: {app}\{code:ExeName}; Flags: uninsdeletevalue; Tasks: TortoiseCVS\r
618 Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: dword; ValueName: DiffAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS\r
619 Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Diff Application; ValueType: string; ValueName: _; ValueData: {app}\{code:ExeName}; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS\r
620 Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Diff2 Params; ValueType: string; ValueName: _; ValueData: """%1"" ""%2"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS\r
621 \r
622 ;Tells TortoiseCVS to use WinMerge as its differencing application (this happens whether or not Tortoise is current installed, that way\r
623 ;if it is installed at a later date this will automatically support it)\r
624 Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: string; ValueName: External Merge Application; ValueData: {app}\{code:ExeName}; Flags: uninsdeletevalue; Tasks: TortoiseCVS\r
625 Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: dword; ValueName: MergeAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS\r
626 Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Merge Application; ValueType: string; ValueName: _; ValueData: {app}\{code:ExeName}; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS\r
627 Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Merge2 Params; ValueType: string; ValueName: _; ValueData: """%mine"" ""%yours"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS\r
628 \r
629 ;Set WinMerge as TortoiseGit diff tool\r
630 Root: HKCU; SubKey: Software\TortoiseGit; ValueType: string; ValueName: Diff; ValueData: {app}\{code:ExeName} -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseGit\r
631 Root: HKCU; SubKey: Software\TortoiseGit; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGITMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool\r
632 \r
633 ;Set WinMerge as TortoiseSVN diff tool\r
634 Root: HKCU; SubKey: Software\TortoiseSVN; ValueType: string; ValueName: Diff; ValueData: {app}\{code:ExeName} -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseSVN\r
635 Root: HKCU; SubKey: Software\TortoiseSVN; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGITMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool\r
636 \r
637 ;Whatever the user chooses at the [Select Setup Language] dialog should also determine what language WinMerge will start up in\r
638 ;(unless the user already has a startup language specified)\r
639 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000042d; Flags: deletevalue; Languages: Basque\r
640 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000402; Flags: deletevalue; Languages: Bulgarian\r
641 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000403; Flags: deletevalue; Languages: Catalan\r
642 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000804; Flags: deletevalue; Languages: Chinese_Simplified\r
643 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000404; Flags: deletevalue; Languages: Chinese_Traditional\r
644 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000041a; Flags: deletevalue; Languages: Croatian\r
645 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000405; Flags: deletevalue; Languages: Czech\r
646 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000406; Flags: deletevalue; Languages: Danish\r
647 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000413; Flags: deletevalue; Languages: Dutch\r
648 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000409; Flags: deletevalue; Languages: English\r
649 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000040b; Flags: deletevalue; Languages: Finnish\r
650 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000040c; Flags: deletevalue; Languages: French\r
651 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000456; Flags: deletevalue; Languages: Galician\r
652 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000407; Flags: deletevalue; Languages: German\r
653 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000408; Flags: deletevalue; Languages: Greek\r
654 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000040e; Flags: deletevalue; Languages: Hungarian\r
655 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000410; Flags: deletevalue; Languages: Italian\r
656 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000411; Flags: deletevalue; Languages: Japanese\r
657 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000412; Flags: deletevalue; Languages: Korean\r
658 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000427; Flags: deletevalue; Languages: Lithuanian \r
659 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000414; Flags: deletevalue; Languages: Norwegian\r
660 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000429; Flags: deletevalue; Languages: Persian\r
661 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000415; Flags: deletevalue; Languages: Polish\r
662 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000816; Flags: deletevalue; Languages: Portuguese\r
663 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000416; Flags: deletevalue; Languages: PortugueseBrazilian\r
664 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000418; Flags: deletevalue; Languages: Romanian\r
665 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000419; Flags: deletevalue; Languages: Russian\r
666 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000c1a; Flags: deletevalue; Languages: Serbian\r
667 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000045b; Flags: deletevalue; Languages: Sinhala\r
668 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000041b; Flags: deletevalue; Languages: Slovak\r
669 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000424; Flags: deletevalue; Languages: Slovenian\r
670 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000c0a; Flags: deletevalue; Languages: Spanish\r
671 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000041D; Flags: deletevalue; Languages: Swedish\r
672 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000041f; Flags: deletevalue; Languages: Turkish\r
673 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000422; Flags: deletevalue; Languages: Ukrainian\r
674 \r
675 \r
676 [Run]\r
677 ;This will no longer appear unless the user chose to make a start menu group in the first place\r
678 Filename: {win}\Explorer.exe; Description: {cm:ViewStartMenuFolder}; Parameters: """{group}"""; Flags: waituntilidle postinstall skipifsilent unchecked; Check: GroupCreated\r
679 \r
680 Filename: {app}\{code:ExeName}; Description: {cm:LaunchProgram,WinMerge}; Flags: nowait postinstall skipifsilent runmaximized\r
681 \r
682 Filename: {app}\WinMerge32BitPluginProxy.exe; Parameters: "/RegServer"; Flags: waituntilidle\r
683 \r
684 [UninstallRun]\r
685 Filename: {app}\WinMerge32BitPluginProxy.exe; Parameters: "/UnregServer"; Flags: waituntilidle\r
686 \r
687 \r
688 [UninstallDelete]\r
689 ;Remove 7-zip integration dlls possibly installed (by hand or using separate installer)\r
690 Name: {app}\Merge7z*.dll; Type: files\r
691 Name: {app}\7zip_pad.xml; Type: files\r
692 Name: {app}\Codecs; Type: filesandordirs\r
693 Name: {app}\Formats; Type: filesandordirs\r
694 Name: {app}\Lang; Type: filesandordirs\r
695 \r
696 Name: {group}; Type: dirifempty\r
697 Name: {app}; Type: dirifempty\r
698 \r
699 \r
700 [Code]\r
701 Var\r
702     g_CheckListBox: TNewCheckListBox;\r
703 \r
704 {Determines whether or not the user chose to create a start menu}\r
705 Function GroupCreated(): boolean;\r
706 Var\r
707     {Stores the path of the start menu group Inno Setup may have created}\r
708     strGroup_Path: string;\r
709 Begin\r
710     {Saves the path that Inno Setup intended to create the start menu group at}\r
711     strGroup_Path := ExpandConstant('{group}');\r
712 \r
713     {If the start menu path isn't blank then..}\r
714     if strGroup_Path <> '' Then\r
715         Begin\r
716             {If the user choose to create the start menu then this folder will exist.\r
717             If the folder exists then GroupCreated = True otherwise it does not.}\r
718             Result := DirExists(strGroup_Path)\r
719         end\r
720     else\r
721         {Since the start menu path is null, we know that the user chose not to create a\r
722         start menu group (note in Inno Setup 4.18 this didn't yet work, but I'm sure it will in the future}\r
723         Result := False;\r
724 \r
725      {Debug\r
726 \r
727     If DirExists(strGroup_Path) = True Then\r
728         Msgbox('The group "' + ExpandConstant('group') + '" was found', mbInformation, mb_ok)\r
729     Else\r
730         Msgbox('The group "' + ExpandConstant('group') + '" doesn''t exist.', mbInformation, mb_ok); }\r
731 End;\r
732 \r
733 \r
734 {Returns the appropriate name of the .EXE being installed}\r
735 Function ExeName(Unused: string): string;\r
736 Begin\r
737   Result := 'WinMergeU.exe';\r
738 End;\r
739 \r
740 Function FixVersion(strInput: string): string;\r
741 {Returns a version with four segments A.B.C.D}\r
742 Var\r
743   {Stores the number of periods found within the version string}\r
744   intPeriods: integer;\r
745 \r
746   {Creates a counter}\r
747   i: integer;\r
748 \r
749   {Generates the string to be returned to the user}\r
750   strVersion: string;\r
751 Begin\r
752 \r
753   {Creates a copy of the input string before we tear it apart}\r
754   strVersion := strInput;\r
755 \r
756   {Until strInput is empty do..}\r
757   While Length(strInput) > 0 do\r
758     Begin\r
759       {if the first character of the input string is a period then}\r
760       If Copy(strInput, 1, 1) = '.' Then\r
761 \r
762         {Incriment the number of periods found}\r
763         intPeriods := intPeriods + 1;\r
764 \r
765       {Remove the first character from the Input string}\r
766       strInput := Copy(strINput, 2, length(strINput));\r
767     End;\r
768 \r
769   {For every period shy of 3 do..}\r
770   For i := 1 to 3 - intperiods do\r
771 \r
772     {Add a '.0' to the version string}\r
773     strVersion := strVersion + '.0';\r
774 \r
775   {Returns the Version string with the correct number of segments}\r
776   Result := strVersion;\r
777 \r
778 End;\r
779 \r
780 Function RemoveLeadingZeros(strInput: string): string;\r
781 {Removes the leading zeros if any from a numeric string}\r
782 Begin\r
783 \r
784   {While the first character of the string is a zero}\r
785   While Copy(strInput, 1, 1) = '0' Do\r
786     begin\r
787 \r
788     {Removes one leading zero from the input string}\r
789       strInput := Copy(strInput, 2, Length(strINput));\r
790     end;\r
791 \r
792   {Returns the formatted string}\r
793   Result := strInput;\r
794 \r
795 End;\r
796 \r
797 \r
798 {Returns whether or not the version string detected is meets the version number requirement}\r
799 Function VersionAtLeast(strVersion_Installed: string; intMajor: integer; intMinor: integer; intRevision: integer; intBuild: integer): boolean;\r
800 Var\r
801 \r
802   {Stores the Major of the Version installed (X.0.0.0)}\r
803   intMajor_Installed: Integer;\r
804 \r
805   {Stores the Minor of the Version installed (1.X.0.0)}\r
806   intMinor_Installed: Integer;\r
807 \r
808   {Stores the Revision of the Version installed (1.0.X.0)}\r
809   intRevision_Installed: Integer;\r
810 \r
811   {Stores the Revision of the Version installed (1.0.0.X)}\r
812   intBuild_Installed: Integer;\r
813 \r
814   {Stores the last valid character of a particular segment (Major, Minor, Revision) of the Version string}\r
815   intEnd_Pos: Integer;\r
816 \r
817 begin\r
818   {Debug\r
819   Msgbox('The version installed is ' + strVersion_Installed + ' and the required version is ' + IntToStr(intMajor) + '.' + IntToStr(intMinor) + '.' + IntToStr(intRevision) + '.' + IntToStr(intBuild), mbINformation, mb_OK)\r
820         }\r
821 \r
822   {Makes sure the version string contains four numberic segments 5.2 ---> 5.2.0.0}\r
823   strVersion_Installed := FixVersion(strVersion_Installed);\r
824 \r
825   {If the version number is empty then quit the function}\r
826   if strVersion_Installed = '' Then\r
827     begin\r
828       Result := False;\r
829 \r
830       {Stops analyzing the version installed and returns that the version installed was inadequate}\r
831       exit;\r
832     end;\r
833 \r
834   {Starts detecting the Major value of the Version Installed}\r
835 \r
836   {Sets the end position equal to one character before the first period in the version number}\r
837   intEnd_Pos := Pos('.', strVersion_Installed) -1\r
838 \r
839   {Sets the major version equal to all character before the first period }\r
840   intMajor_installed := StrToIntDef(RemoveLeadingZeros(Copy(strVersion_Installed, 1, intEnd_Pos)), 0);\r
841 \r
842   {Debug\r
843   msgbox('The Major version installed is ' + IntToStr(intMajor_installed) + ' and the required Major is ' + IntToStr(intMajor) + '.', mbInformation, MB_OK)\r
844         }\r
845 \r
846   {If the Major Version Installed is greater than the required value then...}\r
847   if intMajor_Installed > intMajor Then\r
848     begin\r
849       {Returns that the version number was adequate, since it actually exceeded the requirement}\r
850       Result := True;\r
851 \r
852         {Debug\r
853         msgbox(IntToStr(intMajor_installed) + ' > ' +  IntToStr(intMajor), mbInformation, MB_OK)\r
854         }\r
855 \r
856       {Stops analyzing the version number since we already know it met the requirement}\r
857       exit;\r
858     end;\r
859 \r
860   {If the Major version installed is less than the requirement then...}\r
861   If intMajor_Installed < intMajor Then\r
862     begin\r
863       {Debug\r
864        msgbox(IntToStr(intMajor_installed) + ' < ' +  IntToStr(intMajor), mbInformation, MB_OK)\r
865        }\r
866 \r
867       Result := False;\r
868 \r
869       {Stops analyzing the version number since we already know it's inadequate and returns False (inadequate)}\r
870       exit;\r
871     end;\r
872 \r
873 \r
874   {Starts detecting the Minor version of the Version Installed}\r
875 \r
876   {Modifies strVersion_Installed removing the first period and everything prior to it (Removes the Major Version)}\r
877   strVersion_Installed := Copy(strVersion_Installed, intEnd_Pos + 2, Length(strVersion_Installed));\r
878 \r
879   {Sets the end position equal to one character before the first period in the version number}\r
880   intEnd_Pos := Pos('.', strVersion_Installed) -1\r
881 \r
882   {Sets the Minor version equal to all character before the first period }\r
883         intMinor_installed := StrToIntDef(RemoveLeadingZeros(Copy(strVersion_Installed, 1, intEnd_Pos)), 0)\r
884 \r
885         {Debug\r
886   msgbox('The Minor version installed is ' + IntToStr(intMinor_installed) + ' and the required Minor is ' + IntToStr(intMinor) + '.', mbInformation, MB_OK)\r
887         }\r
888 \r
889         {If the Minor Version Installed is greater than the required value then...}\r
890         If intMinor_Installed > intMinor Then\r
891     begin\r
892       {Returns that the version number was adequate}\r
893       Result := True;\r
894 \r
895       {Stops further analyzation of the version number}\r
896       exit\r
897     end;\r
898 \r
899   {If the minor installed is less than what was required}\r
900   If intMinor_Installed < intMinor Then\r
901     Begin\r
902       Result := False;\r
903 \r
904       {Returns that the version installed did not meet the required value and stops analyzing the version number}\r
905       exit;\r
906     end;\r
907 \r
908 \r
909   {Starts Detecting the Revision of the Version Installed}\r
910 \r
911         {Modifies strVersion_Installed removing the first period and everything prior to it (Removes the Minor Version)}\r
912         strVersion_Installed := Copy(strVersion_Installed, intEnd_Pos + 2, Length(strVersion_Installed));\r
913 \r
914         {Sets the last character of the Revision to last character before the first period}\r
915         intEnd_Pos := Pos('.', strVersion_Installed) -1\r
916 \r
917         {Sets the Revision Installed equal to everything before the first period}\r
918         intRevision_Installed := strToIntDef(RemoveLeadingZeros(Copy(strVersion_Installed, 1, intEnd_Pos)), 0);\r
919 \r
920         {Debug\r
921   msgbox('The Revision version installed is ' + IntToStr(intRevision_installed) + ' and the required Revision is ' + IntToStr(intRevision) + '.', mbInformation, MB_OK)\r
922         }\r
923 \r
924         {If the Revision Installed is greater than the required value then...}\r
925   If intRevision_Installed > intRevision Then\r
926     begin\r
927       {Return that the version installed was adequate}\r
928       Result := True;\r
929 \r
930       {Stops further analyzation of the version number}\r
931       exit\r
932     end;\r
933 \r
934   {If the revision installed did not meet the requirement then...}\r
935   If intRevision_Installed < intRevision Then\r
936     begin\r
937       Result := False;\r
938 \r
939     {Return that the version number failed to meet the requirement and stops further analyzation of the version number}\r
940       exit;\r
941     end;\r
942 \r
943   {Start Detection the Build Installed}\r
944 \r
945         {Modifies strVersion_Installed removing the first period and everything prior to it (Removes the Revision) leaving behind only the build number}\r
946         strVersion_Installed := Copy(strVersion_Installed, intEnd_Pos + 2, Length(strVersion_Installed));\r
947 \r
948         {Set the build installed = to what's left of the strVersion_Installed text}\r
949         intBuild_installed := strToIntDef(RemoveLeadingZeros(strVersion_Installed), 0);\r
950 \r
951         {Debug\r
952   msgbox('The Build version installed is ' + IntToStr(intBuild_installed) + ' and the required Build is ' + IntToStr(intBuild) + '.', mbInformation, MB_OK)\r
953         }\r
954 \r
955         {If the build installed is greater than or equal to the requirement then...}\r
956         if intBuild_installed >= intBuild Then\r
957 \r
958          {Report that the version installed was adequate}\r
959     Result := True\r
960   else\r
961 \r
962     {Reports the inadequacy of the version installed and seases processing }\r
963     Result := False;\r
964 end;\r
965 \r
966 \r
967 {Determines whether or not TortoiseCVS is installed}\r
968 Function TortoiseCVSInstalled(): boolean;\r
969 Begin\r
970         {This absolutely must remain as \CustomIcons, because our application used to create some TortoiseCVS keys even if the application wasn't installed!}\r
971     Result := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\TortoiseCVS\CustomIcons') or RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\TortoiseCVS\Icons');\r
972 End;\r
973 \r
974 {Determines whether or not TortoiseGit is installed}\r
975 Function TortoiseGitInstalled(): boolean;\r
976 Begin\r
977     Result := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\TortoiseGit') or RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\Directory\Background\shellex\ContextMenuHandlers\TortoiseGit');\r
978 End;\r
979 \r
980 {Determines whether or not TortoiseSVN is installed}\r
981 Function TortoiseSVNInstalled(): boolean;\r
982 Begin\r
983     Result := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\TortoiseSVN') or RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\Directory\Background\shellex\ContextMenuHandlers\TortoiseSVN');\r
984 End;\r
985 \r
986 Function OldGroup(): string;\r
987 Begin\r
988     {Stores where in \All Users\Programs\ our start menu used to be located}\r
989      RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinMerge_is1', 'Inno Setup: Icon Group', Result)\r
990 End;\r
991 \r
992 Procedure DeletePreviousStartMenu();\r
993 Var\r
994         strOld: string;\r
995         strNew: string;\r
996         strMessage: string;\r
997 Begin\r
998     {Detects the previous start menu group's path, if any}\r
999     strOld := OldGroup();\r
1000 \r
1001     {Detects the current start menu group's path, if any (not creating a group is a valid option)}\r
1002     strNew := ExpandConstant('{group}');\r
1003 \r
1004     {removes the start menu portion of the path from the group path making it match the format of strOld}\r
1005     StringChange(strNew, ExpandConstant('{commonprograms}\'), '')\r
1006 \r
1007     {if the user does have a previous start menu location then..}\r
1008     If strOld <> '' Then\r
1009         Begin\r
1010             {If the current and previous start menu locations are different then...}\r
1011             If Uppercase(strOld) <> UpperCase(strNew) Then\r
1012                 Begin\r
1013                     strMessage := ExpandConstant('{cm:DeletePreviousStartMenu}');\r
1014                     strMessage := Format(strMessage, [strOld, strNew]);\r
1015 \r
1016                     {Display a dialog asking the user if they'd like to delete the previous start menu group}\r
1017                     {If they'd like to delete the previous start menu group then...}\r
1018                     If Msgbox(strMessage, mbConfirmation, mb_YesNo) = mrYes Then\r
1019                         Begin\r
1020                             strOld := ExpandConstant('{commonprograms}\') + strOld;\r
1021                             {Remove old start menu}\r
1022                             DelTree(strOld, True, True, True);\r
1023                         End;\r
1024                 End;\r
1025         End;\r
1026 End;\r
1027 \r
1028 {This event procedure is queed each time the user changes pages within the installer}\r
1029 Procedure CurPageChanged(CurPage: integer);\r
1030 Begin\r
1031     {if the installer reaches the file copy page then...}\r
1032     If CurPage = wpInstalling Then\r
1033             {Delete the previous start menu group if the location has changed since the last install}\r
1034             DeletePreviousStartMenu;\r
1035 End;\r
1036 \r
1037 // Checks if context menu is already enabled for shell extension\r
1038 // If so, we won't overwrite its existing value in [Registry] section\r
1039 Function ShellMenuEnabled(Unused: string): string;\r
1040 Var\r
1041   ContextMenuEnabled: DWORD;\r
1042 Begin\r
1043   ContextMenuEnabled := 0;\r
1044   RegQueryDWORDValue(HKCU, 'Software\Thingamahoochie\WinMerge', 'ContextMenuEnabled', ContextMenuEnabled);\r
1045   if IsTaskSelected('ShellExtension') then\r
1046     Result := inttostr(ContextMenuEnabled or 1)\r
1047   else\r
1048     Result := '0';\r
1049 End;\r
1050 \r
1051 {Replace one occurrence of OldStr in Str with NewStr}\r
1052 Function ReplaceSubString(Src: string; OldStr: string; NewStr: string) : string;\r
1053 Var\r
1054     OldStrStartAt: Integer;\r
1055 \r
1056 Begin\r
1057     OldStrStartAt := Pos(OldStr, Src);\r
1058     if OldStrStartAt > 0 then\r
1059     begin\r
1060         {Remove old string}\r
1061         Delete(Src, OldStrStartAt, Length(OldStr));\r
1062         {Insert new string}\r
1063         Insert(NewStr, Src, OldStrStartAt);\r
1064     end;\r
1065     Result := Src;\r
1066 End;\r
1067 \r
1068 {Returns WinMerge installed exeutable file name}\r
1069 Function WinMergeExeName(): string;\r
1070 Var\r
1071         Unused: String;\r
1072 \r
1073 Begin\r
1074     Result := ExpandConstant('{app}\') + ExeName(Unused);\r
1075 End;\r
1076 \r
1077 // Add WinMerge to system path.\r
1078 // This requires certain order of things to work:\r
1079 // #1 ModPathDir function must be first (it gets called by others)\r
1080 // #2 include of modpath.iss so modpath code gets included\r
1081 // #3 CurStepChanged and CurUninstallStepChanged procedures as they call\r
1082 //    ModPath (in modpath.iss)\r
1083 function ModPathDir(): TArrayOfString;\r
1084 var\r
1085     Dir:        TArrayOfString;\r
1086 begin\r
1087     setArrayLength(Dir, 1)\r
1088         Dir[0] := ExpandConstant('{app}');\r
1089         Result := Dir;\r
1090 end;\r
1091 \r
1092 function UseAs3WayMergeTool(): Boolean;\r
1093 begin\r
1094     Result := g_CheckListBox.Checked[0];\r
1095 end;\r
1096 \r
1097 function TortoiseSVNGITMergeToolCommandLine(Unused: string): string;\r
1098 var\r
1099     lmr: string;\r
1100     Args: string;\r
1101 begin\r
1102     if g_CheckListBox.Checked[1] then begin\r
1103         lmr := 'r';\r
1104         Args := '/e /ub /fr /wl /wm /dl %bname /dm %tname /dr %yname  %base %theirs %mine /o %merged';\r
1105     end else if g_CheckListBox.Checked[2] then begin\r
1106         lmr := 'm';\r
1107         Args := '/e /ub /fm /wl /wr /dl %tname /dm %bname /dr %yname  %theirs %base %mine /o %merged';\r
1108     end else begin\r
1109         lmr := 'l';\r
1110         Args := '/e /ub /fl /wm /wr /dl %yname /dm %tname /dr %bname  %mine %theirs %base /o %merged';\r
1111     end;\r
1112     if g_CheckListBox.Checked[4] then begin\r
1113         Args := Args + ' /a' + lmr;\r
1114     end;\r
1115     Result := WinMergeExeName() + ' ' + Args;\r
1116 end;\r
1117 \r
1118 function ThreeWayMergePage_ShouldSkipPage(Page: TWizardPage): Boolean;\r
1119 begin\r
1120     Result := not (IsTaskSelected('TortoiseSVN') or IsTaskSelected('TortoiseGIT'));\r
1121 end;\r
1122 \r
1123 #include "modpath.iss"\r
1124 \r
1125 procedure CurStepChanged(CurStep: TSetupStep);\r
1126 Begin\r
1127     if CurStep = ssPostInstall then\r
1128     begin\r
1129                 if IsTaskSelected('modifypath') then\r
1130                         ModPath();\r
1131     end;\r
1132 End;\r
1133 \r
1134 Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);\r
1135 var\r
1136         appdir:                 String;\r
1137         selectedTasks:  AnsiString;\r
1138 Begin\r
1139         appdir := ExpandConstant('{app}')\r
1140         if CurUninstallStep = usUninstall then begin\r
1141                 if LoadStringFromFile(appdir + '\uninsTasks.txt', selectedTasks) then\r
1142                         if Pos('modifypath', selectedTasks) > 0 then\r
1143                                 ModPath();\r
1144                 DeleteFile(appdir + '\uninsTasks.txt')\r
1145         end;\r
1146 End;\r
1147 \r
1148 function BooleanToString(Value : Boolean) : String; \r
1149 begin\r
1150   if Value then\r
1151     Result := 'true'\r
1152   else\r
1153     Result := 'false';\r
1154 end;\r
1155 \r
1156 function StringToBoolean(Value : String) : Boolean; \r
1157 begin\r
1158   if Value = 'true' then\r
1159     Result := true\r
1160   else\r
1161     Result := false;\r
1162 end;\r
1163 \r
1164 procedure RegisterPreviousData(PreviousDataKey: Integer);\r
1165 begin\r
1166   SetPreviousData(PreviousDataKey, 'UseAs3WayMergeTool', BooleanToString(g_CheckListBox.Checked[0]));\r
1167   SetPreviousData(PreviousDataKey, 'MergeAtRightPane', BooleanToString(g_CheckListBox.Checked[1]));\r
1168   SetPreviousData(PreviousDataKey, 'MergeAtCenterPane', BooleanToString(g_CheckListBox.Checked[2]));\r
1169   SetPreviousData(PreviousDataKey, 'MergeAtLeftPane', BooleanToString(g_CheckListBox.Checked[3]));\r
1170   SetPreviousData(PreviousDataKey, 'AutoMergeAtStartup', BooleanToString(g_CheckListBox.Checked[4]));\r
1171 end;\r
1172 \r
1173 function GetSysColor(ColorType: Integer): Integer;\r
1174 external 'GetSysColor@user32.dll';\r
1175 \r
1176 procedure InitializeWizard();\r
1177 var\r
1178   Page: TWizardPage;\r
1179 begin\r
1180   Page := CreateCustomPage(wpSelectTasks, ExpandConstant('{cm:ThreeWayMergeWizardPageCaption}'), ExpandConstant('{cm:ThreeWayMergeWizardPageDescription}'));\r
1181   Page.OnShouldSkipPage := @ThreeWayMergePage_ShouldSkipPage;\r
1182 \r
1183   g_CheckListBox := TNewCheckListBox.Create(Page);\r
1184   g_CheckListBox.Width := Page.SurfaceWidth;\r
1185   g_CheckListBox.Height := ScaleY(128);\r
1186   g_CheckListBox.Flat := True;\r
1187   g_CheckListBox.BorderStyle := bsNone;\r
1188   g_CheckListBox.Color := GetSysColor(15);\r
1189   g_CheckListBox.Parent := Page.Surface;\r
1190   g_CheckListBox.AddCheckBox(ExpandConstant('{cm:RegisterWinMergeAs3WayMergeTool}'), '', 0, StringToBoolean(GetPreviousData('UseAs3WayMergeTool', 'true')), True, False, True, nil);\r
1191   g_CheckListBox.AddRadioButton(ExpandConstant('{cm:MergeAtRightPane}'), '', 1, StringToBoolean(GetPreviousData('MergeAtRightPane', 'true')), True, nil);\r
1192   g_CheckListBox.AddRadioButton(ExpandConstant('{cm:MergeAtCenterPane}'), '', 1, StringToBoolean(GetPreviousData('MergeAtCenterPane', 'false')), True, nil);\r
1193   g_CheckListBox.AddRadioButton(ExpandConstant('{cm:MergeAtLeftPane}'), '', 1, StringToBoolean(GetPreviousData('MergeAtLeftPane', 'false')), True, nil);\r
1194   g_CheckListBox.AddCheckBox(ExpandConstant('{cm:AutoMergeAtStartup}'), '', 1, StringToBoolean(GetPreviousData('AutoMergeAtStartup', 'true')), True, False, True, nil);\r
1195 end;\r