OSDN Git Service

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