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
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
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
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
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
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
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
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
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
59 AppVersion={#AppVersion}
\r
60 AppVerName=WinMerge {#AppVersion}
\r
61 AppPublisher=Thingamahoochie Software
\r
62 AppPublisherURL=http://WinMerge.org/
\r
63 AppSupportURL=http://WinMerge.org/
\r
64 AppUpdatesURL=http://WinMerge.org/
\r
66 ; Installer executable's version resource info
\r
67 VersionInfoCompany=http://winmerge.org
\r
68 VersionInfoDescription=WinMerge Installer
\r
69 VersionInfoVersion={#AppVersion}
\r
71 ;This is in case an older version of the installer happened to be
\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
77 DefaultDirName={pf}\WinMerge
\r
78 DefaultGroupName=WinMerge
\r
79 DisableStartupPrompt=true
\r
81 InfoBeforeFile=..\..\Docs\users\GPL.rtf
\r
82 InfoAfterFile=..\..\Docs\users\ReadMe.txt
\r
84 OutputBaseFilename=WinMerge-{#AppVersion}-Setup
\r
86 ;This must be admin to install C++ Runtimes and shell extension
\r
87 PrivilegesRequired=admin
\r
89 ;Windows 2000 or later required
\r
92 UninstallDisplayIcon={app}\{code:ExeName}
\r
95 WizardImageFile=Art\Large Logo.bmp
\r
96 WizardSmallImageFile=Art\Small Logo.bmp
\r
97 WizardImageStretch=true
\r
99 ;It is confusing, if Setup/Uninstall use the same icon like WinMerge!
\r
100 ;SetupIconFile=..\..\src\res\Merge.ico
\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
110 ; Update file associations for shell (project files)
\r
111 ChangesAssociations=true
\r
113 ChangesEnvironment=true
\r
114 OutputDir=..\..\Build
\r
115 AlwaysShowComponentsList=true
\r
117 ;SignTool=signbat $f
\r
118 ;SignedUninstaller=yes
\r
121 ;Inno Setup's Native Language
\r
122 Name: English; MessagesFile: ..\..\Translations\InnoSetup\English.isl
\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: Finnish; MessagesFile: ..\..\Translations\InnoSetup\Finnish.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Finnish.txt
\r
135 Name: French; MessagesFile: ..\..\Translations\InnoSetup\French.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-French.txt
\r
136 Name: Galician; MessagesFile: ..\..\Translations\InnoSetup\Galician.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Galician.txt
\r
137 Name: German; MessagesFile: ..\..\Translations\InnoSetup\German.isl
\r
138 Name: Greek; MessagesFile: ..\..\Translations\InnoSetup\Greek.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Greek.txt
\r
139 Name: Hungarian; MessagesFile: ..\..\Translations\InnoSetup\Hungarian.isl
\r
140 Name: Italian; MessagesFile: ..\..\Translations\InnoSetup\Italian.isl
\r
141 Name: Japanese; MessagesFile: ..\..\Translations\InnoSetup\Japanese.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Japanese.txt
\r
142 Name: Korean; MessagesFile: ..\..\Translations\InnoSetup\Korean.isl
\r
143 Name: Norwegian; MessagesFile: ..\..\Translations\InnoSetup\Norwegian.isl
\r
144 Name: Persian; MessagesFile: ..\..\Translations\InnoSetup\Persian.isl
\r
145 Name: Polish; MessagesFile: ..\..\Translations\InnoSetup\Polish.isl
\r
146 Name: Portuguese; MessagesFile: ..\..\Translations\InnoSetup\Portuguese.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Portuguese.txt
\r
147 Name: PortugueseBrazilian; MessagesFile: ..\..\Translations\InnoSetup\Brazilian_Portuguese.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Brazilian.txt
\r
148 Name: Romanian; MessagesFile: ..\..\Translations\InnoSetup\Romanian.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Romanian.txt
\r
149 Name: Russian; MessagesFile: ..\..\Translations\InnoSetup\Russian.isl
\r
150 Name: Serbian; MessagesFile: ..\..\Translations\InnoSetup\Serbian.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Serbian.txt
\r
151 Name: Sinhala; MessagesFile: ..\..\Translations\InnoSetup\Sinhala.isl
\r
152 Name: Slovak; MessagesFile: ..\..\Translations\InnoSetup\Slovak.isl
\r
153 Name: Slovenian; MessagesFile: ..\..\Translations\InnoSetup\Slovenian.isl
\r
154 Name: Spanish; MessagesFile: ..\..\Translations\InnoSetup\Spanish.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Spanish.txt
\r
155 Name: Swedish; MessagesFile: ..\..\Translations\InnoSetup\Swedish.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Swedish.txt
\r
156 Name: Turkish; MessagesFile: ..\..\Translations\InnoSetup\Turkish.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Turkish.txt
\r
157 Name: Ukrainian; MessagesFile: ..\..\Translations\InnoSetup\Ukrainian.isl; InfoAfterFile: ..\..\Translations\Docs\Readme\ReadMe-Ukrainian.txt
\r
161 English.FinishedLabel=Setup has finished installing WinMerge on your computer.
\r
162 English.SetupAppTitle=Setup - WinMerge {#AppVersion}
\r
163 English.WizardInfoBefore=License Agreement
\r
164 English.InfoBeforeLabel=GNU General Public License
\r
168 Name: typical; Description: {cm:TypicalInstallation}
\r
169 Name: full; Description: {cm:FullInstallation}
\r
170 Name: compact; Description: {cm:CompactInstallation}
\r
171 Name: custom; Description: {cm:CustomInstallation}; Flags: iscustom
\r
175 ; Executable, libraries, documentation
\r
176 Name: Core; Description: {cm:AppCoreFiles}; Types: full custom typical compact; Flags: fixed
\r
178 Name: filters; Description: {cm:Filters}; Flags: disablenouninstallwarning; Types: full typical
\r
179 Name: Plugins; Description: {cm:Plugins}; Flags: disablenouninstallwarning; Types: full typical
\r
180 Name: Frhed; Description: {cm:Frhed}; Flags: disablenouninstallwarning; Types: full typical
\r
181 Name: WinIMerge; Description: {cm:WinIMerge}; Flags: disablenouninstallwarning; Types: full typical
\r
182 Name: ArchiveSupport; Description: {cm:ArchiveSupport}; Flags: disablenouninstallwarning; Types: full typical
\r
183 Name: Patch; Description: {cm:Patch}; Flags: disablenouninstallwarning; Types: full typical
\r
185 ;Language components
\r
186 Name: Languages; Description: {cm:Languages}; Flags: disablenouninstallwarning
\r
187 Name: Languages\Basque; Description: {cm:BasqueLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Basque
\r
188 Name: Languages\Basque; Description: {cm:BasqueLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Basque
\r
190 Name: Languages\Bulgarian; Description: {cm:BulgarianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Bulgarian
\r
191 Name: Languages\Bulgarian; Description: {cm:BulgarianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Bulgarian
\r
193 Name: Languages\Catalan; Description: {cm:CatalanLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Catalan
\r
194 Name: Languages\Catalan; Description: {cm:CatalanLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Catalan
\r
196 Name: Languages\Chinese_Simplified; Description: {cm:ChineseSimplifiedLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Chinese_Simplified
\r
197 Name: Languages\Chinese_Simplified; Description: {cm:ChineseSimplifiedLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Chinese_Simplified
\r
199 Name: Languages\Chinese_Traditional; Description: {cm:ChineseTraditionalLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Chinese_Traditional
\r
200 Name: Languages\Chinese_Traditional; Description: {cm:ChineseTraditionalLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Chinese_Traditional
\r
202 Name: Languages\Croatian; Description: {cm:CroatianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Croatian
\r
203 Name: Languages\Croatian; Description: {cm:CroatianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Croatian
\r
205 Name: Languages\Czech; Description: {cm:CzechLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Czech
\r
206 Name: Languages\Czech; Description: {cm:CzechLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Czech
\r
208 Name: Languages\Danish; Description: {cm:DanishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Danish
\r
209 Name: Languages\Danish; Description: {cm:DanishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Danish
\r
211 Name: Languages\Dutch; Description: {cm:DutchLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Dutch
\r
212 Name: Languages\Dutch; Description: {cm:DutchLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Dutch
\r
214 Name: Languages\Finnish; Description: {cm:FinnishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Finnish
\r
215 Name: Languages\Finnish; Description: {cm:FinnishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Finnish
\r
217 Name: Languages\French; Description: {cm:FrenchLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not French
\r
218 Name: Languages\French; Description: {cm:FrenchLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: French
\r
220 Name: Languages\Galician; Description: {cm:GalicianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Galician
\r
221 Name: Languages\Galician; Description: {cm:GalicianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Galician
\r
223 Name: Languages\German; Description: {cm:GermanLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not German
\r
224 Name: Languages\German; Description: {cm:GermanLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: German
\r
226 Name: Languages\Greek; Description: {cm:GreekLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Greek
\r
227 Name: Languages\Greek; Description: {cm:GreekLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Greek
\r
229 Name: Languages\Hungarian; Description: {cm:HungarianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Hungarian
\r
230 Name: Languages\Hungarian; Description: {cm:HungarianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Hungarian
\r
232 Name: Languages\Italian; Description: {cm:ItalianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Italian
\r
233 Name: Languages\Italian; Description: {cm:ItalianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Italian
\r
235 Name: Languages\Japanese; Description: {cm:JapaneseLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Japanese
\r
236 Name: Languages\Japanese; Description: {cm:JapaneseLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Japanese
\r
238 Name: Languages\Korean; Description: {cm:KoreanLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Korean
\r
239 Name: Languages\Korean; Description: {cm:KoreanLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Korean
\r
241 Name: Languages\Norwegian; Description: {cm:NorwegianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Norwegian
\r
242 Name: Languages\Norwegian; Description: {cm:NorwegianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Norwegian
\r
244 Name: Languages\Persian; Description: {cm:PersianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Persian
\r
245 Name: Languages\Persian; Description: {cm:PersianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Persian
\r
247 Name: Languages\Polish; Description: {cm:PolishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Polish
\r
248 Name: Languages\Polish; Description: {cm:PolishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Polish
\r
250 Name: Languages\Portuguese; Description: {cm:PortugueseLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Portuguese
\r
251 Name: Languages\Portuguese; Description: {cm:PortugueseLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Portuguese
\r
253 Name: Languages\PortugueseBrazilian; Description: {cm:PortugueseBrazilLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not PortugueseBrazilian
\r
254 Name: Languages\PortugueseBrazilian; Description: {cm:PortugueseBrazilLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: PortugueseBrazilian
\r
256 Name: Languages\Romanian; Description: {cm:RomanianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Romanian
\r
257 Name: Languages\Romanian; Description: {cm:RomanianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Romanian
\r
259 Name: Languages\Russian; Description: {cm:RussianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Russian
\r
260 Name: Languages\Russian; Description: {cm:RussianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Russian
\r
262 Name: Languages\Serbian; Description: {cm:SerbianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Serbian
\r
263 Name: Languages\Serbian; Description: {cm:SerbianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Serbian
\r
265 Name: Languages\Sinhala; Description: {cm:SinhalaLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Sinhala
\r
266 Name: Languages\Sinhala; Description: {cm:SinhalaLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Sinhala
\r
268 Name: Languages\Slovak; Description: {cm:SlovakLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Slovak
\r
269 Name: Languages\Slovak; Description: {cm:SlovakLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Slovak
\r
271 Name: Languages\Slovenian; Description: {cm:SlovenianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Slovenian
\r
272 Name: Languages\Slovenian; Description: {cm:SlovenianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Slovenian
\r
274 Name: Languages\Spanish; Description: {cm:SpanishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Spanish
\r
275 Name: Languages\Spanish; Description: {cm:SpanishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Spanish
\r
277 Name: Languages\Swedish; Description: {cm:SwedishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Swedish
\r
278 Name: Languages\Swedish; Description: {cm:SwedishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Swedish
\r
280 Name: Languages\Turkish; Description: {cm:TurkishLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Turkish
\r
281 Name: Languages\Turkish; Description: {cm:TurkishLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Turkish
\r
283 Name: Languages\Ukrainian; Description: {cm:UkrainianLanguage}; Flags: disablenouninstallwarning; Types: full; Languages: not Ukrainian
\r
284 Name: Languages\Ukrainian; Description: {cm:UkrainianLanguage}; Flags: disablenouninstallwarning; Types: full typical compact; Languages: Ukrainian
\r
288 Name: ShellExtension; Description: {cm:ExplorerContextMenu}; GroupDescription: {cm:OptionalFeatures}
\r
289 Name: modifypath; Description: {cm:AddToPath}; GroupDescription: {cm:OptionalFeatures}; Flags: unchecked
\r
290 Name: TortoiseCVS; Description: {cm:IntegrateTortoiseCVS}; GroupDescription: {cm:OptionalFeatures}; Check: TortoiseCVSInstalled
\r
291 Name: TortoiseGit; Description: {cm:IntegrateTortoiseGit}; GroupDescription: {cm:OptionalFeatures}; Check: TortoiseGitInstalled; MinVersion: 0,5.0.2195sp3
\r
292 Name: TortoiseSVN; Description: {cm:IntegrateTortoiseSVN}; GroupDescription: {cm:OptionalFeatures}; Check: TortoiseSVNInstalled; MinVersion: 0,5.0.2195sp3
\r
293 Name: ClearCase; Description: {cm:IntegrateClearCase}; GroupDescription: {cm:OptionalFeatures}; Check: ClearCaseInstalled
\r
294 Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
\r
295 Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; OnlyBelowVersion: 0,6.1
\r
298 ; Diff.txt is a file left over from previous versions of WinMerge (before version 2.0), we just delete it to be nice.
\r
299 Type: files; Name: {app}\Diff.txt
\r
301 ;All of these files are removed so if the user upgrades their operating system or changes their language selections only the
\r
302 ;necessary files will be left in the installation folder
\r
303 ;Another reason these files might be strays is if a user extracted one of the experimental builds such as:
\r
304 ;WinMerge.{#AppVersion}-exe.7z.
\r
305 Name: {app}\WinMerge.exe; Type: files
\r
306 Name: {app}\WinMergeU.exe; Type: files; MinVersion: 0, 4
\r
308 ;Remove manifest files as we don't need them in 2.6.2 / 2.7.1.1 or later
\r
309 Name: {app}\WinMerge.exe.manifest; Type: files
\r
310 Name: {app}\WinMergeU.exe.manifest; Type: files
\r
312 Name: {app}\Merge7z311.dll; Type: files
\r
313 Name: {app}\Merge7z311U.dll; Type: files; MinVersion: 0, 4
\r
315 Name: {app}\Merge7z312.dll; Type: files
\r
316 Name: {app}\Merge7z312U.dll; Type: files; MinVersion: 0, 4
\r
318 Name: {app}\Merge7z313.dll; Type: files
\r
319 Name: {app}\Merge7z313U.dll; Type: files; MinVersion: 0, 4
\r
321 Name: {app}\Merge7z420.dll; Type: files
\r
322 Name: {app}\Merge7z420U.dll; Type: files; MinVersion: 0, 4
\r
324 Name: {app}\Merge7z423.dll; Type: files
\r
325 Name: {app}\Merge7z423U.dll; Type: files; MinVersion: 0, 4
\r
327 Name: {app}\Merge7z431.dll; Type: files
\r
328 Name: {app}\Merge7z431U.dll; Type: files; MinVersion: 0, 4
\r
330 Name: {app}\Merge7z432.dll; Type: files
\r
331 Name: {app}\Merge7z432U.dll; Type: files; MinVersion: 0, 4
\r
333 Name: {app}\Merge7z442.dll; Type: files
\r
334 Name: {app}\Merge7z442U.dll; Type: files; MinVersion: 0, 4
\r
336 Name: {app}\Merge7z457.dll; Type: files
\r
337 Name: {app}\Merge7z457U.dll; Type: files; MinVersion: 0, 4
\r
339 Name: {app}\Merge7z465.dll; Type: files
\r
340 Name: {app}\Merge7z465U.dll; Type: files; MinVersion: 0, 4
\r
342 Name: {app}\Merge7z920.dll; Type: files
\r
343 Name: {app}\Merge7z920U.dll; Type: files; MinVersion: 0, 4
\r
345 ;This won't work, because the file has to be unregistered, and explorer closed, first.
\r
346 ;Name: {app}\ShellExtension.dll; Type: files; Check: TaskDisabled('ShellExtension')
\r
348 ; Remove existing .lang files - we don't need them anymore as we are
\r
349 ; using PO files now.
\r
350 Name: {app}\Languages\MergeBrazilian.lang; Type: files
\r
351 Name: {app}\Languages\MergeBulgarian.lang; Type: files
\r
352 Name: {app}\Languages\MergeCatalan.lang; Type: files
\r
353 Name: {app}\Languages\MergeChineseSimplified.lang; Type: files
\r
354 Name: {app}\Languages\MergeChineseTraditional.lang; Type: files
\r
355 Name: {app}\Languages\MergeCzech.lang; Type: files
\r
356 Name: {app}\Languages\MergeDanish.lang; Type: files
\r
357 Name: {app}\Languages\MergeDutch.lang; Type: files
\r
358 Name: {app}\Languages\MergeFrench.lang; Type: files
\r
359 Name: {app}\Languages\MergeGerman.lang; Type: files
\r
360 Name: {app}\Languages\MergeHungarian.lang; Type: files
\r
361 Name: {app}\Languages\MergeItalian.lang; Type: files
\r
362 Name: {app}\Languages\MergeJapanese.lang; Type: files
\r
363 Name: {app}\Languages\MergeKorean.lang; Type: files
\r
364 Name: {app}\Languages\MergeNorwegian.lang; Type: files
\r
365 Name: {app}\Languages\MergePersian.lang; Type: files
\r
366 Name: {app}\Languages\MergePolish.lang; Type: files
\r
367 Name: {app}\Languages\MergePortuguese.lang; Type: files
\r
368 Name: {app}\Languages\MergeSlovak.lang; Type: files
\r
369 Name: {app}\Languages\MergeSpanish.lang; Type: files
\r
370 Name: {app}\Languages\MergeRussian.lang; Type: files
\r
371 Name: {app}\Languages\MergeSerbian.lang; Type: files
\r
372 Name: {app}\Languages\MergeSwedish.lang; Type: files
\r
373 Name: {app}\Languages\MergeTurkish.lang; Type: files
\r
374 Name: {app}\MergePlugins\list.txt; Type: files; Check: not IsComponentSelected('Plugins')
\r
376 ;Removes the user's guide icon if the user deselects the user's guide component.
\r
377 Name: {group}\{cm:UsersGuide}.lnk; Type: files; Check: not IsComponentSelected('Docs')
\r
379 ;This removes the quick launch icon in case the user chooses not to install it after previously having it installed
\r
380 Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\WinMerge.lnk; Type: files; Check: not IsTaskSelected('QuickLauchIcon')
\r
381 Name: {commonappdata}\Microsoft\Internet Explorer\Quick Launch\WinMerge.lnk; Type: files; Check: not IsTaskSelected('QuickLauchIcon')
\r
383 ;This removes the desktop icon in case the user chooses not to install it after previously having it installed
\r
384 Name: {userdesktop}\WinMerge.lnk; Type: files; Check: not IsTaskSelected('DesktopIcon')
\r
385 Name: {commondesktop}\WinMerge.lnk; Type: files; Check: not IsTaskSelected('DesktopIcon')
\r
387 ;Removes the Uninstall icon from the start menu...
\r
388 Name: {group}\{cm:UninstallProgram,WinMerge}.lnk; Type: files;
\r
390 ;Remove ANSI executable link from start menu for NT-based Windows versions
\r
391 ;This was installed earlier, but not anymore.
\r
392 Name: {group}\WinMerge (ANSI).lnk; Type: files; MinVersion: 0,4
\r
393 Name: {app}\Docs; Type: filesandordirs
\r
395 Name: {app}\MergePlugins\editor addin.sct; Type: Files; Check: not IsComponentSelected('Plugins')
\r
396 Name: {app}\MergePlugins\insert datetime.sct; Type: Files; Check: not IsComponentSelected('Plugins')
\r
397 Name: {app}\MergePlugins\CompareMSExcelFiles.dll; Type: Files; Check: IsComponentSelected('Plugins')
\r
398 Name: {app}\MergePlugins\CompareMSWordFiles.dll; Type: Files; Check: IsComponentSelected('Plugins')
\r
399 Name: {app}\MergePlugins; Type: DirIfEmpty; Check: not IsComponentSelected('Plugins')
\r
401 Name: {app}\Filters\ADAMulti.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
402 Name: {app}\Filters\ASPNET.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
403 Name: {app}\Filters\CSharp_loose.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
404 Name: {app}\Filters\Delphi.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
405 Name: {app}\Filters\MASM.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
406 Name: {app}\Filters\Merge_GnuC_loose.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
407 Name: {app}\Filters\Merge_VC_loose.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
408 Name: {app}\Filters\Merge_VB_loose.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
409 Name: {app}\Filters\SourceControl.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
410 Name: {app}\Filters\Symbian.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
411 Name: {app}\Filters\XML_html.flt; Type: Files; Check: not IsComponentSelected('Filters')
\r
412 Name: {app}\Filters\FileFilter.tmpl; Type: Files; Check: not IsComponentSelected('Filters')
\r
413 Name: {app}\Filters; Type: DirIfEmpty; Check: not IsComponentSelected('Filters')
\r
418 ;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
419 Name: {app}; Flags: uninsalwaysuninstall
\r
424 Source: ..\..\Build\MergeUnicodeRelease\WinMergeU.exe; DestDir: {app}; Flags: promptifolder; Components: Core
\r
426 ; List of installed files
\r
427 Source: ..\..\Docs\Users\Files.txt; DestDir: {app}; Flags: promptifolder; Components: Core
\r
430 Source: ..\..\Build\ShellExtension\ShellExtensionU.dll; DestDir: {app}; Flags: regserver uninsrestartdelete restartreplace promptifolder; MinVersion: 0, 4; Check: not IsWin64
\r
431 ; 64-bit version of ShellExtension
\r
432 Source: ..\..\Build\ShellExtension\ShellExtensionX64.dll; DestDir: {app}; Flags: regserver uninsrestartdelete restartreplace promptifolder 64bit; MinVersion: 0,5.01.2600; Check: IsWin64
\r
434 ;Please do not reorder the 7z Dlls by version they compress better ordered by platform and then by version
\r
435 Source: ..\..\Build\Merge7z\Merge7z1604U.dll; DestDir: {app}\Merge7z; Flags: promptifolder; MinVersion: 0, 4; Components: ArchiveSupport
\r
436 Source: ..\..\Build\Merge7z\7z.dll; DestDir: {app}\Merge7z; Flags: promptifolder; MinVersion: 0, 4; Components: ArchiveSupport
\r
437 Source: ..\..\Build\Merge7z\*.txt; DestDir: {app}\Merge7z; Flags: promptifolder; MinVersion: 0, 4; Components: ArchiveSupport
\r
438 Source: ..\..\Build\Merge7z\Lang\*.txt; DestDir: {app}\Merge7z\Lang; Flags: promptifolder; MinVersion: 0, 4; Components: ArchiveSupport
\r
440 ; MergeLang.dll - translation helper dll
\r
441 Source: ..\..\Build\MergeUnicodeRelease\MergeLang.dll; DestDir: {app}; Flags: promptifolder ignoreversion; Components: Core
\r
444 Source: ..\..\Translations\WinMerge\Basque.po; DestDir: {app}\Languages; Components: Languages\Basque; Flags: ignoreversion comparetimestamp
\r
445 Source: ..\..\Translations\Docs\Readme\ReadMe-Basque.txt; DestDir: {app}\Docs; Components: Languages\Basque
\r
446 Source: ..\..\Translations\WinMerge\Brazilian.po; DestDir: {app}\Languages; Components: Languages\PortugueseBrazilian; Flags: ignoreversion comparetimestamp
\r
447 Source: ..\..\Translations\Docs\Readme\ReadMe-Brazilian.txt; DestDir: {app}\Docs; Components: Languages\PortugueseBrazilian
\r
448 Source: ..\..\Translations\WinMerge\Bulgarian.po; DestDir: {app}\Languages; Components: Languages\Bulgarian; Flags: ignoreversion comparetimestamp
\r
449 Source: ..\..\Translations\Docs\Readme\ReadMe-Bulgarian.txt; DestDir: {app}\Docs; Components: Languages\Bulgarian
\r
450 Source: ..\..\Translations\WinMerge\Catalan.po; DestDir: {app}\Languages; Components: Languages\Catalan; Flags: ignoreversion comparetimestamp
\r
451 Source: ..\..\Translations\Docs\Readme\ReadMe-Catalan.txt; DestDir: {app}\Docs; Components: Languages\Catalan
\r
452 Source: ..\..\Translations\WinMerge\ChineseSimplified.po; DestDir: {app}\Languages; Components: Languages\Chinese_Simplified; Flags: ignoreversion comparetimestamp
\r
453 Source: ..\..\Translations\Docs\Readme\ReadMe-ChineseSimplified.txt; DestDir: {app}\Docs; Components: Languages\Chinese_Simplified
\r
454 Source: ..\..\Translations\WinMerge\ChineseTraditional.po; DestDir: {app}\Languages; Components: Languages\Chinese_Traditional; Flags: ignoreversion comparetimestamp
\r
455 Source: ..\..\Translations\Docs\Readme\ReadMe-ChineseTraditional.txt; DestDir: {app}\Docs; Components: Languages\Chinese_Traditional
\r
456 Source: ..\..\Translations\WinMerge\Croatian.po; DestDir: {app}\Languages; Components: Languages\Croatian; Flags: ignoreversion comparetimestamp
\r
457 Source: ..\..\Translations\Docs\Readme\ReadMe-Croatian.txt; DestDir: {app}\Docs; Components: Languages\Croatian
\r
458 Source: ..\..\Translations\WinMerge\Czech.po; DestDir: {app}\Languages; Components: Languages\Czech; Flags: ignoreversion comparetimestamp
\r
459 Source: ..\..\Translations\WinMerge\Danish.po; DestDir: {app}\Languages; Components: Languages\Danish; Flags: ignoreversion comparetimestamp
\r
460 Source: ..\..\Translations\WinMerge\Dutch.po; DestDir: {app}\Languages; Components: Languages\Dutch; Flags: ignoreversion comparetimestamp
\r
461 Source: ..\..\Translations\Docs\Readme\ReadMe-Dutch.txt; DestDir: {app}\Docs; Components: Languages\Dutch
\r
462 Source: ..\..\Translations\WinMerge\Finnish.po; DestDir: {app}\Languages; Components: Languages\Finnish; Flags: ignoreversion comparetimestamp
\r
463 Source: ..\..\Translations\Docs\Readme\ReadMe-Finnish.txt; DestDir: {app}\Docs; Components: Languages\Finnish
\r
464 Source: ..\..\Translations\WinMerge\French.po; DestDir: {app}\Languages; Components: Languages\French; Flags: ignoreversion comparetimestamp
\r
465 Source: ..\..\Translations\Docs\Readme\ReadMe-French.txt; DestDir: {app}\Docs; Components: Languages\French
\r
466 Source: ..\..\Translations\WinMerge\Galician.po; DestDir: {app}\Languages; Components: Languages\Galician; Flags: ignoreversion comparetimestamp
\r
467 Source: ..\..\Translations\Docs\Readme\ReadMe-Galician.txt; DestDir: {app}\Docs; Components: Languages\Galician
\r
468 Source: ..\..\Translations\WinMerge\German.po; DestDir: {app}\Languages; Components: Languages\German; Flags: ignoreversion comparetimestamp
\r
469 Source: ..\..\Translations\WinMerge\Greek.po; DestDir: {app}\Languages; Components: Languages\Greek; Flags: ignoreversion comparetimestamp
\r
470 Source: ..\..\Translations\Docs\Readme\ReadMe-Greek.txt; DestDir: {app}\Docs; Components: Languages\Greek
\r
471 Source: ..\..\Translations\WinMerge\Hungarian.po; DestDir: {app}\Languages; Components: Languages\Hungarian; Flags: ignoreversion comparetimestamp
\r
472 Source: ..\..\Translations\WinMerge\Italian.po; DestDir: {app}\Languages; Components: Languages\Italian; Flags: ignoreversion comparetimestamp
\r
473 Source: ..\..\Translations\WinMerge\Japanese.po; DestDir: {app}\Languages; Components: Languages\Japanese; Flags: ignoreversion comparetimestamp
\r
474 Source: ..\..\Translations\Docs\Readme\ReadMe-Japanese.txt; DestDir: {app}\Docs; Components: Languages\Japanese
\r
475 Source: ..\..\Translations\WinMerge\Korean.po; DestDir: {app}\Languages; Components: Languages\Korean; Flags: ignoreversion comparetimestamp
\r
476 Source: ..\..\Translations\WinMerge\Norwegian.po; DestDir: {app}\Languages; Components: Languages\Norwegian; Flags: ignoreversion comparetimestamp
\r
477 Source: ..\..\Translations\WinMerge\Persian.po; DestDir: {app}\Languages; Components: Languages\Persian; Flags: ignoreversion comparetimestamp
\r
478 Source: ..\..\Translations\WinMerge\Polish.po; DestDir: {app}\Languages; Components: Languages\Polish; Flags: ignoreversion comparetimestamp
\r
479 Source: ..\..\Translations\WinMerge\Portuguese.po; DestDir: {app}\Languages; Components: Languages\Portuguese; Flags: ignoreversion comparetimestamp
\r
480 Source: ..\..\Translations\Docs\Readme\ReadMe-Portuguese.txt; DestDir: {app}\Docs; Components: Languages\Portuguese
\r
481 Source: ..\..\Translations\WinMerge\Romanian.po; DestDir: {app}\Languages; Components: Languages\Romanian; Flags: ignoreversion comparetimestamp
\r
482 Source: ..\..\Translations\Docs\Readme\ReadMe-Romanian.txt; DestDir: {app}\Docs; Components: Languages\Romanian
\r
483 Source: ..\..\Translations\WinMerge\Russian.po; DestDir: {app}\Languages; Components: Languages\Russian; Flags: ignoreversion comparetimestamp
\r
484 Source: ..\..\Translations\WinMerge\Serbian.po; DestDir: {app}\Languages; Components: Languages\Serbian; Flags: ignoreversion comparetimestamp
\r
485 Source: ..\..\Translations\Docs\Readme\ReadMe-Serbian.txt; DestDir: {app}\Docs; Components: Languages\Serbian
\r
486 Source: ..\..\Translations\WinMerge\Sinhala.po; DestDir: {app}\Languages; Components: Languages\Sinhala; Flags: ignoreversion comparetimestamp
\r
487 Source: ..\..\Translations\WinMerge\Slovak.po; DestDir: {app}\Languages; Components: Languages\Slovak; Flags: ignoreversion comparetimestamp
\r
488 Source: ..\..\Translations\WinMerge\Slovenian.po; DestDir: {app}\Languages; Components: Languages\Slovenian; Flags: ignoreversion comparetimestamp
\r
489 Source: ..\..\Translations\WinMerge\Spanish.po; DestDir: {app}\Languages; Components: Languages\Spanish; Flags: ignoreversion comparetimestamp
\r
490 Source: ..\..\Translations\Docs\Readme\ReadMe-Spanish.txt; DestDir: {app}\Docs; Components: Languages\Spanish
\r
491 Source: ..\..\Translations\WinMerge\Swedish.po; DestDir: {app}\Languages; Components: Languages\Swedish; Flags: ignoreversion comparetimestamp
\r
492 Source: ..\..\Translations\Docs\Readme\ReadMe-Swedish.txt; DestDir: {app}\Docs; Components: Languages\Swedish
\r
493 Source: ..\..\Translations\WinMerge\Turkish.po; DestDir: {app}\Languages; Components: Languages\Turkish; Flags: ignoreversion comparetimestamp
\r
494 Source: ..\..\Translations\Docs\Readme\ReadMe-Turkish.txt; DestDir: {app}\Docs; Components: Languages\Turkish
\r
495 Source: ..\..\Translations\WinMerge\Ukrainian.po; DestDir: {app}\Languages; Components: Languages\Ukrainian; Flags: ignoreversion comparetimestamp
\r
496 Source: ..\..\Translations\Docs\Readme\ReadMe-Ukrainian.txt; DestDir: {app}\Docs; Components: Languages\Ukrainian
\r
498 Source: ..\..\Filters\*.flt; DestDir: {app}\Filters; Flags: sortfilesbyextension comparetimestamp ignoreversion; Components: filters
\r
499 Source: ..\..\Filters\FileFilter.tmpl; DestDir: {app}\Filters; Flags: sortfilesbyextension comparetimestamp ignoreversion; Components: filters
\r
502 Source: ..\..\Docs\Users\ReadMe.txt; DestDir: {app}\Docs; Flags: comparetimestamp ignoreversion promptifolder; Components: Core
\r
503 Source: ..\..\Docs\Users\Contributors.txt; DestDir: {app}; Flags: comparetimestamp ignoreversion promptifolder; Components: Core
\r
504 Source: ..\..\Docs\Users\ReleaseNotes.html; DestDir: {app}\Docs; Flags: comparetimestamp ignoreversion promptifolder; Components: Core
\r
505 Source: ..\..\Docs\Users\ChangeLog.txt; DestDir: {app}\Docs; Flags: comparetimestamp ignoreversion promptifolder; Components: Core
\r
506 Source: ..\..\Build\Manual\htmlhelp\WinMerge.chm; DestDir: {app}\Docs\; Flags: overwritereadonly uninsremovereadonly; Components: Core
\r
507 Source: ..\..\Docs\users\GPL.rtf; DestDir: {app}\Docs\; Flags: comparetimestamp ignoreversion promptifolder; Components: Core
\r
510 ;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
511 Source: ..\..\Plugins\dlls\editor addin.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins
\r
512 Source: ..\..\Plugins\dlls\insert datetime.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins
\r
513 Source: ..\..\Plugins\dlls\CompareMSExcelFiles.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins
\r
514 Source: ..\..\Plugins\dlls\CompareMSWordFiles.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins
\r
515 Source: ..\..\Plugins\dlls\CompareMSPowerPointFiles.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins
\r
516 Source: ..\..\Plugins\dlls\ApplyPatch.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins
\r
517 Source: ..\..\Plugins\dlls\PrediffLineFilter.sct; DestDir: {app}\MergePlugins; Flags: IgnoreVersion CompareTimeStamp; Components: Plugins
\r
518 Source: ..\..\Plugins\dlls\IgnoreColumns.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins
\r
519 Source: ..\..\Plugins\dlls\IgnoreCommentsC.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins
\r
520 Source: ..\..\Plugins\dlls\IgnoreFieldsComma.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins
\r
521 Source: ..\..\Plugins\dlls\IgnoreFieldsTab.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins
\r
522 Source: ..\..\Plugins\dlls\IgnoreLeadingLineNumbers.dll; DestDir: {app}\MergePlugins; Flags: ignoreversion replacesameversion; Components: Plugins
\r
525 Source: ..\..\Build\Frhed\GPL.txt; DestDir: {app}\Frhed; Components: Frhed
\r
526 ;Source: ..\..\Build\Frhed\frhed.exe; DestDir: {app}\Frhed; Components: Frhed
\r
527 Source: ..\..\Build\Frhed\hekseditU.dll; DestDir: {app}\Frhed; Flags: ignoreversion replacesameversion; Components: Frhed
\r
528 Source: ..\..\Build\Frhed\Docs\ChangeLog.txt; DestDir: {app}\Frhed\Docs; Components: Frhed
\r
529 Source: ..\..\Build\Frhed\Docs\Contributors.txt; DestDir: {app}\Frhed\Docs; Components: Frhed
\r
530 Source: ..\..\Build\Frhed\Docs\History.txt; DestDir: {app}\Frhed\Docs; Components: Frhed
\r
531 Source: ..\..\Build\Frhed\Docs\Links.txt; DestDir: {app}\Frhed\Docs; Components: Frhed
\r
532 Source: ..\..\Build\Frhed\Docs\Sample.tpl ; DestDir: {app}\Frhed\Docs; Components: Frhed
\r
533 Source: ..\..\Build\Frhed\Languages\de.po; DestDir: {app}\Frhed\Languages; Components: Frhed
\r
534 Source: ..\..\Build\Frhed\Languages\fr.po; DestDir: {app}\Frhed\Languages; Components: Frhed
\r
535 Source: ..\..\Build\Frhed\Languages\ja.po; DestDir: {app}\Frhed\Languages; Components: Frhed
\r
536 Source: ..\..\Build\Frhed\Languages\nl.po; DestDir: {app}\Frhed\Languages; Components: Frhed
\r
537 Source: ..\..\Build\Frhed\Languages\heksedit.lng; DestDir: {app}\Frhed\Languages; Components: Frhed
\r
540 Source: ..\..\Build\WinIMerge\GPL.txt; DestDir: {app}\WinIMerge; Components: WinIMerge
\r
541 Source: ..\..\Build\WinIMerge\freeimage-license-gplv2.txt; DestDir: {app}\WinIMerge; Components: WinIMerge
\r
542 ;Source: ..\..\Build\WinIMerge\bin\WinIMerge.exe; DestDir: {app}\WinIMerge; Components: WinIMerge
\r
543 Source: ..\..\Build\WinIMerge\bin\WinIMergeLib.dll; DestDir: {app}\WinIMerge; Flags: ignoreversion replacesameversion; Components: WinIMerge
\r
544 Source: ..\..\Build\WinIMerge\bin\vcomp140.dll; DestDir: {app}; Components: WinIMerge
\r
546 ;GnuWin32 Patch for Windows
\r
547 Source: ..\..\Build\GnuWin32\*.*; DestDir: {app}\GnuWin32; Flags: recursesubdirs; Components: Patch
\r
550 Name: "{app}\MergePlugins"
\r
554 Name: {group}\WinMerge; Filename: {app}\{code:ExeName}; AppUserModelID: "Thingamahoochie.WinMerge"
\r
555 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe.txt; IconFileName: {win}\NOTEPAD.EXE
\r
556 Name: {group}\{cm:UsersGuide}; Filename: {app}\Docs\WinMerge.chm
\r
557 Name: {group}\{cm:UninstallProgram,WinMerge}; Filename: {uninstallexe}
\r
558 Name: {group}\{cm:ProgramOnTheWeb,WinMerge}; Filename: http://winmerge.org
\r
560 ;Link to translated ReadMe in Start Menu
\r
561 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Basque.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Basque
\r
562 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Brazilian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: PortugueseBrazilian
\r
563 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Bulgarian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Bulgarian
\r
564 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Catalan.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Catalan
\r
565 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-ChineseSimplified.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Chinese_Simplified
\r
566 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-ChineseTraditional.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Chinese_Traditional
\r
567 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Croatian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Croatian
\r
568 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Dutch.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Dutch
\r
569 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Finnish.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Finnish
\r
570 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-French.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: French
\r
571 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Galician.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Galician
\r
572 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Greek.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Greek
\r
573 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Japanese.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Japanese
\r
574 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Portuguese.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Portuguese
\r
575 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Romanian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Romanian
\r
576 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Serbian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Serbian
\r
577 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Spanish.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Spanish
\r
578 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Swedish.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Swedish
\r
579 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Turkish.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Turkish
\r
580 Name: {group}\{cm:ReadMe}; Filename: {app}\Docs\ReadMe-Ukrainian.txt; IconFileName: {win}\NOTEPAD.EXE; Languages: Ukrainian
\r
583 Name: {commondesktop}\WinMerge; Filename: {app}\{code:ExeName}; Tasks: desktopicon
\r
586 Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\WinMerge; Filename: {app}\{code:ExeName}; Tasks: quicklaunchicon
\r
589 Root: HKCU; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty
\r
590 Root: HKCU; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
\r
591 Root: HKLM; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty
\r
592 Root: HKLM; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
\r
594 ;Add Project file extension (.WinMerge) to known extensions and
\r
595 ;set WinMerge to open those files
\r
596 ;set Notepad to edit project files
\r
597 Root: HKCR; Subkey: .WinMerge; ValueType: String; ValueData: WinMerge.Project.File; Flags: uninsdeletekey
\r
598 Root: HKCR; Subkey: WinMerge.Project.File; ValueType: String; ValueData: {cm:ProjectFileDesc}; Flags: uninsdeletekey
\r
599 Root: HKCR; Subkey: WinMerge.Project.File\shell\open\command; ValueType: String; ValueData: """{app}\{code:ExeName}"" ""%1"""; Flags: uninsdeletekey
\r
600 Root: HKCR; Subkey: WinMerge.Project.File\shell\edit\command; ValueType: String; ValueData: """NOTEPAD.EXE"" ""%1"""; Flags: uninsdeletekey
\r
601 Root: HKCR; Subkey: WinMerge.Project.File\DefaultIcon; ValueType: String; ValueData: """{app}\{code:ExeName}"",1"; Flags: uninsdeletekey
\r
603 ; delete obsolete values
\r
604 ;In Inno Setup Version 4.18 ValueData couldn't be null and compile,
\r
605 ;if this is fixed in a later version feel free to remove the parameter
\r
606 Root: HKCU; Subkey: Software\Thingamahoochie\WinMerge\Settings; ValueType: none; ValueName: LeftMax; Flags: deletevalue
\r
607 Root: HKCU; Subkey: Software\Thingamahoochie\WinMerge\Settings; ValueType: none; ValueName: DirViewMax; Flags: deletevalue
\r
609 ;This removes the key that remembers which messageboxes to hide from the user, this is because the text of that message
\r
610 ;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
611 ;because a particular message might be added or removed and a new message might occupy a previous message's ID number
\r
612 Root: HKLM; Subkey: Software\Thingamahoochie\WinMerge\MessageBoxes; ValueType: none; Flags: deletekey
\r
614 Root: HKCR; SubKey: Directory\Shell\WinMerge\command; ValueType: none; Flags: deletekey noerror
\r
615 Root: HKCR; SubKey: Directory\Shell\WinMerge; ValueType: none; Flags: deletekey noerror
\r
617 ;Adds "Start Menu" --> "Run" Support for WinMerge
\r
618 Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\App Paths\WinMerge.exe; ValueType: none; Flags: uninsdeletekey
\r
619 Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\App Paths\WinMergeU.exe; ValueType: none; Flags: uninsdeletekey
\r
620 Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinMerge.exe; ValueType: string; ValueName: ; ValueData: {app}\{code:ExeName}
\r
621 Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinMergeU.exe; ValueType: string; ValueName: ; ValueData: {app}\{code:ExeName}
\r
623 ;Registry Keys for use by ShellExtension.dll
\r
624 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge; ValueType: string; ValueName: Executable; ValueData: {app}\{code:ExeName}
\r
626 ;Enables or disables the Context Menu preference based on what the user selects during install
\r
627 ;Initially the Context menu is explicitly disabled:
\r
628 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: 0;
\r
630 ;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
631 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: 1; Tasks: ShellExtension
\r
632 Root: HKCU; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: {code:ShellMenuEnabled}
\r
634 ;If WinMerge.exe is installed then we'll automatically configure WinMerge as the differencing application
\r
635 Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: string; ValueName: External Diff Application; ValueData: {app}\{code:ExeName}; Flags: uninsdeletevalue; Tasks: TortoiseCVS
\r
636 Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: dword; ValueName: DiffAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
\r
637 Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Diff Application; ValueType: string; ValueName: _; ValueData: {app}\{code:ExeName}; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
\r
638 Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Diff2 Params; ValueType: string; ValueName: _; ValueData: """%1"" ""%2"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
\r
640 ;Tells TortoiseCVS to use WinMerge as its differencing application (this happens whether or not Tortoise is current installed, that way
\r
641 ;if it is installed at a later date this will automatically support it)
\r
642 Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: string; ValueName: External Merge Application; ValueData: {app}\{code:ExeName}; Flags: uninsdeletevalue; Tasks: TortoiseCVS
\r
643 Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: dword; ValueName: MergeAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
\r
644 Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Merge Application; ValueType: string; ValueName: _; ValueData: {app}\{code:ExeName}; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
\r
645 Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Merge2 Params; ValueType: string; ValueName: _; ValueData: """%mine"" ""%yours"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
\r
647 ;Set WinMerge as TortoiseGit diff tool
\r
648 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
649 Root: HKCU; SubKey: Software\TortoiseGit; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGITMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool
\r
651 ;Set WinMerge as TortoiseSVN diff tool
\r
652 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
653 Root: HKCU; SubKey: Software\TortoiseSVN; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGITMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool
\r
655 ;Whatever the user chooses at the [Select Setup Language] dialog should also determine what language WinMerge will start up in
\r
656 ;(unless the user already has a startup language specified)
\r
657 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000042d; Flags: deletevalue; Languages: Basque
\r
658 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000402; Flags: deletevalue; Languages: Bulgarian
\r
659 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000403; Flags: deletevalue; Languages: Catalan
\r
660 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000804; Flags: deletevalue; Languages: Chinese_Simplified
\r
661 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000404; Flags: deletevalue; Languages: Chinese_Traditional
\r
662 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000041a; Flags: deletevalue; Languages: Croatian
\r
663 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000405; Flags: deletevalue; Languages: Czech
\r
664 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000406; Flags: deletevalue; Languages: Danish
\r
665 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000413; Flags: deletevalue; Languages: Dutch
\r
666 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000409; Flags: deletevalue; Languages: English
\r
667 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000040b; Flags: deletevalue; Languages: Finnish
\r
668 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000040c; Flags: deletevalue; Languages: French
\r
669 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000456; Flags: deletevalue; Languages: Galician
\r
670 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000407; Flags: deletevalue; Languages: German
\r
671 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000408; Flags: deletevalue; Languages: Greek
\r
672 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000040e; Flags: deletevalue; Languages: Hungarian
\r
673 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000410; Flags: deletevalue; Languages: Italian
\r
674 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000411; Flags: deletevalue; Languages: Japanese
\r
675 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000412; Flags: deletevalue; Languages: Korean
\r
676 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000414; Flags: deletevalue; Languages: Norwegian
\r
677 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000429; Flags: deletevalue; Languages: Persian
\r
678 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000415; Flags: deletevalue; Languages: Polish
\r
679 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000816; Flags: deletevalue; Languages: Portuguese
\r
680 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000416; Flags: deletevalue; Languages: PortugueseBrazilian
\r
681 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000418; Flags: deletevalue; Languages: Romanian
\r
682 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000419; Flags: deletevalue; Languages: Russian
\r
683 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000c1a; Flags: deletevalue; Languages: Serbian
\r
684 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000045b; Flags: deletevalue; Languages: Sinhala
\r
685 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000041b; Flags: deletevalue; Languages: Slovak
\r
686 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000424; Flags: deletevalue; Languages: Slovenian
\r
687 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000c0a; Flags: deletevalue; Languages: Spanish
\r
688 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000041D; Flags: deletevalue; Languages: Swedish
\r
689 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $0000041f; Flags: deletevalue; Languages: Turkish
\r
690 Root: HKLM; SubKey: Software\Thingamahoochie\WinMerge\Locale; ValueType: dword; ValueName: LanguageId; ValueData: $00000422; Flags: deletevalue; Languages: Ukrainian
\r
694 ;This will no longer appear unless the user chose to make a start menu group in the first place
\r
695 Filename: {win}\Explorer.exe; Description: {cm:ViewStartMenuFolder}; Parameters: """{group}"""; Flags: waituntilidle postinstall skipifsilent unchecked; Check: GroupCreated
\r
697 Filename: {app}\{code:ExeName}; Description: {cm:LaunchProgram,WinMerge}; Flags: nowait postinstall skipifsilent runmaximized
\r
701 ;Remove 7-zip integration dlls possibly installed (by hand or using separate installer)
\r
702 Name: {app}\Merge7z*.dll; Type: files
\r
703 Name: {app}\7zip_pad.xml; Type: files
\r
704 Name: {app}\Codecs; Type: filesandordirs
\r
705 Name: {app}\Formats; Type: filesandordirs
\r
706 Name: {app}\Lang; Type: filesandordirs
\r
708 Name: {group}; Type: dirifempty
\r
709 Name: {app}; Type: dirifempty
\r
714 g_CheckListBox: TNewCheckListBox;
\r
716 {Determines whether or not the user chose to create a start menu}
\r
717 Function GroupCreated(): boolean;
\r
719 {Stores the path of the start menu group Inno Setup may have created}
\r
720 strGroup_Path: string;
\r
722 {Saves the path that Inno Setup intended to create the start menu group at}
\r
723 strGroup_Path := ExpandConstant('{group}');
\r
725 {If the start menu path isn't blank then..}
\r
726 if strGroup_Path <> '' Then
\r
728 {If the user choose to create the start menu then this folder will exist.
\r
729 If the folder exists then GroupCreated = True otherwise it does not.}
\r
730 Result := DirExists(strGroup_Path)
\r
733 {Since the start menu path is null, we know that the user chose not to create a
\r
734 start menu group (note in Inno Setup 4.18 this didn't yet work, but I'm sure it will in the future}
\r
739 If DirExists(strGroup_Path) = True Then
\r
740 Msgbox('The group "' + ExpandConstant('group') + '" was found', mbInformation, mb_ok)
\r
742 Msgbox('The group "' + ExpandConstant('group') + '" doesn''t exist.', mbInformation, mb_ok); }
\r
746 {Returns the appropriate name of the .EXE being installed}
\r
747 Function ExeName(Unused: string): string;
\r
749 Result := 'WinMergeU.exe';
\r
752 Function FixVersion(strInput: string): string;
\r
753 {Returns a version with four segments A.B.C.D}
\r
755 {Stores the number of periods found within the version string}
\r
756 intPeriods: integer;
\r
758 {Creates a counter}
\r
761 {Generates the string to be returned to the user}
\r
762 strVersion: string;
\r
765 {Creates a copy of the input string before we tear it apart}
\r
766 strVersion := strInput;
\r
768 {Until strInput is empty do..}
\r
769 While Length(strInput) > 0 do
\r
771 {if the first character of the input string is a period then}
\r
772 If Copy(strInput, 1, 1) = '.' Then
\r
774 {Incriment the number of periods found}
\r
775 intPeriods := intPeriods + 1;
\r
777 {Remove the first character from the Input string}
\r
778 strInput := Copy(strINput, 2, length(strINput));
\r
781 {For every period shy of 3 do..}
\r
782 For i := 1 to 3 - intperiods do
\r
784 {Add a '.0' to the version string}
\r
785 strVersion := strVersion + '.0';
\r
787 {Returns the Version string with the correct number of segments}
\r
788 Result := strVersion;
\r
792 Function RemoveLeadingZeros(strInput: string): string;
\r
793 {Removes the leading zeros if any from a numeric string}
\r
796 {While the first character of the string is a zero}
\r
797 While Copy(strInput, 1, 1) = '0' Do
\r
800 {Removes one leading zero from the input string}
\r
801 strInput := Copy(strInput, 2, Length(strINput));
\r
804 {Returns the formatted string}
\r
805 Result := strInput;
\r
810 {Returns whether or not the version string detected is meets the version number requirement}
\r
811 Function VersionAtLeast(strVersion_Installed: string; intMajor: integer; intMinor: integer; intRevision: integer; intBuild: integer): boolean;
\r
814 {Stores the Major of the Version installed (X.0.0.0)}
\r
815 intMajor_Installed: Integer;
\r
817 {Stores the Minor of the Version installed (1.X.0.0)}
\r
818 intMinor_Installed: Integer;
\r
820 {Stores the Revision of the Version installed (1.0.X.0)}
\r
821 intRevision_Installed: Integer;
\r
823 {Stores the Revision of the Version installed (1.0.0.X)}
\r
824 intBuild_Installed: Integer;
\r
826 {Stores the last valid character of a particular segment (Major, Minor, Revision) of the Version string}
\r
827 intEnd_Pos: Integer;
\r
831 Msgbox('The version installed is ' + strVersion_Installed + ' and the required version is ' + IntToStr(intMajor) + '.' + IntToStr(intMinor) + '.' + IntToStr(intRevision) + '.' + IntToStr(intBuild), mbINformation, mb_OK)
\r
834 {Makes sure the version string contains four numberic segments 5.2 ---> 5.2.0.0}
\r
835 strVersion_Installed := FixVersion(strVersion_Installed);
\r
837 {If the version number is empty then quit the function}
\r
838 if strVersion_Installed = '' Then
\r
842 {Stops analyzing the version installed and returns that the version installed was inadequate}
\r
846 {Starts detecting the Major value of the Version Installed}
\r
848 {Sets the end position equal to one character before the first period in the version number}
\r
849 intEnd_Pos := Pos('.', strVersion_Installed) -1
\r
851 {Sets the major version equal to all character before the first period }
\r
852 intMajor_installed := StrToIntDef(RemoveLeadingZeros(Copy(strVersion_Installed, 1, intEnd_Pos)), 0);
\r
855 msgbox('The Major version installed is ' + IntToStr(intMajor_installed) + ' and the required Major is ' + IntToStr(intMajor) + '.', mbInformation, MB_OK)
\r
858 {If the Major Version Installed is greater than the required value then...}
\r
859 if intMajor_Installed > intMajor Then
\r
861 {Returns that the version number was adequate, since it actually exceeded the requirement}
\r
865 msgbox(IntToStr(intMajor_installed) + ' > ' + IntToStr(intMajor), mbInformation, MB_OK)
\r
868 {Stops analyzing the version number since we already know it met the requirement}
\r
872 {If the Major version installed is less than the requirement then...}
\r
873 If intMajor_Installed < intMajor Then
\r
876 msgbox(IntToStr(intMajor_installed) + ' < ' + IntToStr(intMajor), mbInformation, MB_OK)
\r
881 {Stops analyzing the version number since we already know it's inadequate and returns False (inadequate)}
\r
886 {Starts detecting the Minor version of the Version Installed}
\r
888 {Modifies strVersion_Installed removing the first period and everything prior to it (Removes the Major Version)}
\r
889 strVersion_Installed := Copy(strVersion_Installed, intEnd_Pos + 2, Length(strVersion_Installed));
\r
891 {Sets the end position equal to one character before the first period in the version number}
\r
892 intEnd_Pos := Pos('.', strVersion_Installed) -1
\r
894 {Sets the Minor version equal to all character before the first period }
\r
895 intMinor_installed := StrToIntDef(RemoveLeadingZeros(Copy(strVersion_Installed, 1, intEnd_Pos)), 0)
\r
898 msgbox('The Minor version installed is ' + IntToStr(intMinor_installed) + ' and the required Minor is ' + IntToStr(intMinor) + '.', mbInformation, MB_OK)
\r
901 {If the Minor Version Installed is greater than the required value then...}
\r
902 If intMinor_Installed > intMinor Then
\r
904 {Returns that the version number was adequate}
\r
907 {Stops further analyzation of the version number}
\r
911 {If the minor installed is less than what was required}
\r
912 If intMinor_Installed < intMinor Then
\r
916 {Returns that the version installed did not meet the required value and stops analyzing the version number}
\r
921 {Starts Detecting the Revision of the Version Installed}
\r
923 {Modifies strVersion_Installed removing the first period and everything prior to it (Removes the Minor Version)}
\r
924 strVersion_Installed := Copy(strVersion_Installed, intEnd_Pos + 2, Length(strVersion_Installed));
\r
926 {Sets the last character of the Revision to last character before the first period}
\r
927 intEnd_Pos := Pos('.', strVersion_Installed) -1
\r
929 {Sets the Revision Installed equal to everything before the first period}
\r
930 intRevision_Installed := strToIntDef(RemoveLeadingZeros(Copy(strVersion_Installed, 1, intEnd_Pos)), 0);
\r
933 msgbox('The Revision version installed is ' + IntToStr(intRevision_installed) + ' and the required Revision is ' + IntToStr(intRevision) + '.', mbInformation, MB_OK)
\r
936 {If the Revision Installed is greater than the required value then...}
\r
937 If intRevision_Installed > intRevision Then
\r
939 {Return that the version installed was adequate}
\r
942 {Stops further analyzation of the version number}
\r
946 {If the revision installed did not meet the requirement then...}
\r
947 If intRevision_Installed < intRevision Then
\r
951 {Return that the version number failed to meet the requirement and stops further analyzation of the version number}
\r
955 {Start Detection the Build Installed}
\r
957 {Modifies strVersion_Installed removing the first period and everything prior to it (Removes the Revision) leaving behind only the build number}
\r
958 strVersion_Installed := Copy(strVersion_Installed, intEnd_Pos + 2, Length(strVersion_Installed));
\r
960 {Set the build installed = to what's left of the strVersion_Installed text}
\r
961 intBuild_installed := strToIntDef(RemoveLeadingZeros(strVersion_Installed), 0);
\r
964 msgbox('The Build version installed is ' + IntToStr(intBuild_installed) + ' and the required Build is ' + IntToStr(intBuild) + '.', mbInformation, MB_OK)
\r
967 {If the build installed is greater than or equal to the requirement then...}
\r
968 if intBuild_installed >= intBuild Then
\r
970 {Report that the version installed was adequate}
\r
974 {Reports the inadequacy of the version installed and seases processing }
\r
979 {Determines whether or not TortoiseCVS is installed}
\r
980 Function TortoiseCVSInstalled(): boolean;
\r
982 {This absolutely must remain as \CustomIcons, because our application used to create some TortoiseCVS keys even if the application wasn't installed!}
\r
983 Result := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\TortoiseCVS\CustomIcons') or RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\TortoiseCVS\Icons');
\r
986 {Determines whether or not TortoiseGit is installed}
\r
987 Function TortoiseGitInstalled(): boolean;
\r
989 Result := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\TortoiseGit') or RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\Directory\Background\shellex\ContextMenuHandlers\TortoiseGit');
\r
992 {Determines whether or not TortoiseSVN is installed}
\r
993 Function TortoiseSVNInstalled(): boolean;
\r
995 Result := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\TortoiseSVN') or RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\Directory\Background\shellex\ContextMenuHandlers\TortoiseSVN');
\r
998 Function OldGroup(): string;
\r
1000 {Stores where in \All Users\Programs\ our start menu used to be located}
\r
1001 RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinMerge_is1', 'Inno Setup: Icon Group', Result)
\r
1004 Procedure DeletePreviousStartMenu();
\r
1008 strMessage: string;
\r
1010 {Detects the previous start menu group's path, if any}
\r
1011 strOld := OldGroup();
\r
1013 {Detects the current start menu group's path, if any (not creating a group is a valid option)}
\r
1014 strNew := ExpandConstant('{group}');
\r
1016 {removes the start menu portion of the path from the group path making it match the format of strOld}
\r
1017 StringChange(strNew, ExpandConstant('{commonprograms}\'), '')
\r
1019 {if the user does have a previous start menu location then..}
\r
1020 If strOld <> '' Then
\r
1022 {If the current and previous start menu locations are different then...}
\r
1023 If Uppercase(strOld) <> UpperCase(strNew) Then
\r
1025 strMessage := ExpandConstant('{cm:DeletePreviousStartMenu}');
\r
1026 strMessage := Format(strMessage, [strOld, strNew]);
\r
1028 {Display a dialog asking the user if they'd like to delete the previous start menu group}
\r
1029 {If they'd like to delete the previous start menu group then...}
\r
1030 If Msgbox(strMessage, mbConfirmation, mb_YesNo) = mrYes Then
\r
1032 strOld := ExpandConstant('{commonprograms}\') + strOld;
\r
1033 {Remove old start menu}
\r
1034 DelTree(strOld, True, True, True);
\r
1040 {This event procedure is queed each time the user changes pages within the installer}
\r
1041 Procedure CurPageChanged(CurPage: integer);
\r
1043 {if the installer reaches the file copy page then...}
\r
1044 If CurPage = wpInstalling Then
\r
1045 {Delete the previous start menu group if the location has changed since the last install}
\r
1046 DeletePreviousStartMenu;
\r
1049 // Checks if context menu is already enabled for shell extension
\r
1050 // If so, we won't overwrite its existing value in [Registry] section
\r
1051 Function ShellMenuEnabled(Unused: string): string;
\r
1053 ContextMenuEnabled: DWORD;
\r
1055 ContextMenuEnabled := 0;
\r
1056 RegQueryDWORDValue(HKCU, 'Software\Thingamahoochie\WinMerge', 'ContextMenuEnabled', ContextMenuEnabled);
\r
1057 if IsTaskSelected('ShellExtension') then
\r
1058 Result := inttostr(ContextMenuEnabled or 1)
\r
1063 {Replace one occurrence of OldStr in Str with NewStr}
\r
1064 Function ReplaceSubString(Src: string; OldStr: string; NewStr: string) : string;
\r
1066 OldStrStartAt: Integer;
\r
1069 OldStrStartAt := Pos(OldStr, Src);
\r
1070 if OldStrStartAt > 0 then
\r
1072 {Remove old string}
\r
1073 Delete(Src, OldStrStartAt, Length(OldStr));
\r
1074 {Insert new string}
\r
1075 Insert(NewStr, Src, OldStrStartAt);
\r
1080 {Returns WinMerge installed exeutable file name}
\r
1081 Function WinMergeExeName(): string;
\r
1086 Result := ExpandConstant('{app}\') + ExeName(Unused);
\r
1089 {Returns ClearCase external tools configuration file name}
\r
1090 Function ClearCaseMapFile(): string;
\r
1092 if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Rational Software\', 'RSINSTALLDIR', Result) then
\r
1094 Result := {pf} + '\Rational\';
\r
1096 Result := Result + 'ClearCase\lib\mgrs\map';
\r
1099 {Determines whether or not Rational ClearCase is installed}
\r
1100 Function ClearCaseInstalled(): boolean;
\r
1102 Result := FileExists(ClearCaseMapFile());
\r
1105 {Intergrate WinMerge as ClearCase external diff tool}
\r
1106 Procedure IntegrateClearCase(OldExe: String; NewExe: String);
\r
1108 MapFile: TStringList;
\r
1114 FileName := ClearCaseMapFile();
\r
1115 {Create a backup file of the original file first time it gets modified}
\r
1116 BakFile := FileName + '.original';
\r
1117 if not FileExists(BakFile) then
\r
1119 FileCopy(FileName, BakFile, True);
\r
1121 MapFile := TStringList.Create();
\r
1122 {Read the entire map file to a string list}
\r
1123 MapFile.LoadFromFile(FileName);
\r
1124 if MapFile.Count > 0 then
\r
1126 for I := 0 to MapFile.Count do
\r
1128 {Search for the 'text_file_delta xcompare ...' line}
\r
1129 if (MapFile.Strings[I][1] <> ';') and (Pos('text_file_delta', MapFile.Strings[I]) > 0) and (Pos('xcompare', MapFile.Strings[I]) > 0) then
\r
1131 {Replace old executable name with a new executable name}
\r
1132 MapFile.Strings[I] := ReplaceSubString(MapFile.Strings[I], OldExe, NewExe);
\r
1136 { Save the modified file. }
\r
1137 MapFile.SaveToFile(FileName);
\r
1141 // Add WinMerge to system path.
\r
1142 // This requires certain order of things to work:
\r
1143 // #1 ModPathDir function must be first (it gets called by others)
\r
1144 // #2 include of modpath.iss so modpath code gets included
\r
1145 // #3 CurStepChanged and CurUninstallStepChanged procedures as they call
\r
1146 // ModPath (in modpath.iss)
\r
1147 function ModPathDir(): TArrayOfString;
\r
1149 Dir: TArrayOfString;
\r
1151 setArrayLength(Dir, 1)
\r
1152 Dir[0] := ExpandConstant('{app}');
\r
1156 function UseAs3WayMergeTool(): Boolean;
\r
1158 Result := g_CheckListBox.Checked[0];
\r
1161 function TortoiseSVNGITMergeToolCommandLine(Unused: string): string;
\r
1166 if g_CheckListBox.Checked[1] then begin
\r
1168 Args := '/e /ub /fr /wl /wm /dl %bname /dm %tname /dr %yname %base %theirs %mine /o %merged';
\r
1169 end else if g_CheckListBox.Checked[2] then begin
\r
1171 Args := '/e /ub /fm /wl /wr /dl %tname /dm %bname /dr %yname %theirs %base %mine /o %merged';
\r
1174 Args := '/e /ub /fl /wm /wr /dl %yname /dm %tname /dr %bname %mine %theirs %base /o %merged';
\r
1176 if g_CheckListBox.Checked[4] then begin
\r
1177 Args := Args + ' /a' + lmr;
\r
1179 Result := WinMergeExeName() + ' ' + Args;
\r
1182 function ThreeWayMergePage_ShouldSkipPage(Page: TWizardPage): Boolean;
\r
1184 Result := not (IsTaskSelected('TortoiseSVN') or IsTaskSelected('TortoiseGIT'));
\r
1187 #include "modpath.iss"
\r
1189 procedure CurStepChanged(CurStep: TSetupStep);
\r
1191 if CurStep = ssPostInstall then
\r
1193 if IsTaskSelected('modifypath') then
\r
1195 if IsTaskSelected('ClearCase') then
\r
1197 IntegrateClearCase('..\..\bin\cleardiffmrg.exe', WinMergeExeName());
\r
1202 Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
\r
1205 selectedTasks: AnsiString;
\r
1207 appdir := ExpandConstant('{app}')
\r
1208 if CurUninstallStep = usUninstall then begin
\r
1209 if LoadStringFromFile(appdir + '\uninsTasks.txt', selectedTasks) then
\r
1210 if Pos('modifypath', selectedTasks) > 0 then
\r
1212 DeleteFile(appdir + '\uninsTasks.txt')
\r
1215 if CurUninstallStep = usPostUninstall then
\r
1217 if ClearCaseInstalled() then
\r
1218 IntegrateClearCase(WinMergeExeName(), '..\..\bin\cleardiffmrg.exe');
\r
1222 function BooleanToString(Value : Boolean) : String;
\r
1227 Result := 'false';
\r
1230 function StringToBoolean(Value : String) : Boolean;
\r
1232 if Value = 'true' then
\r
1238 procedure RegisterPreviousData(PreviousDataKey: Integer);
\r
1240 SetPreviousData(PreviousDataKey, 'UseAs3WayMergeTool', BooleanToString(g_CheckListBox.Checked[0]));
\r
1241 SetPreviousData(PreviousDataKey, 'MergeAtRightPane', BooleanToString(g_CheckListBox.Checked[1]));
\r
1242 SetPreviousData(PreviousDataKey, 'MergeAtCenterPane', BooleanToString(g_CheckListBox.Checked[2]));
\r
1243 SetPreviousData(PreviousDataKey, 'MergeAtLeftPane', BooleanToString(g_CheckListBox.Checked[3]));
\r
1244 SetPreviousData(PreviousDataKey, 'AutoMergeAtStartup', BooleanToString(g_CheckListBox.Checked[4]));
\r
1247 function GetSysColor(ColorType: Integer): Integer;
\r
1248 external 'GetSysColor@user32.dll';
\r
1250 procedure InitializeWizard();
\r
1252 Page: TWizardPage;
\r
1254 Page := CreateCustomPage(wpSelectTasks, ExpandConstant('{cm:ThreeWayMergeWizardPageCaption}'), ExpandConstant('{cm:ThreeWayMergeWizardPageDescription}'));
\r
1255 Page.OnShouldSkipPage := @ThreeWayMergePage_ShouldSkipPage;
\r
1257 g_CheckListBox := TNewCheckListBox.Create(Page);
\r
1258 g_CheckListBox.Width := Page.SurfaceWidth;
\r
1259 g_CheckListBox.Height := ScaleY(128);
\r
1260 g_CheckListBox.Flat := True;
\r
1261 g_CheckListBox.BorderStyle := bsNone;
\r
1262 g_CheckListBox.Color := GetSysColor(15);
\r
1263 g_CheckListBox.Parent := Page.Surface;
\r
1264 g_CheckListBox.AddCheckBox(ExpandConstant('{cm:RegisterWinMergeAs3WayMergeTool}'), '', 0, StringToBoolean(GetPreviousData('UseAs3WayMergeTool', 'true')), True, False, True, nil);
\r
1265 g_CheckListBox.AddRadioButton(ExpandConstant('{cm:MergeAtRightPane}'), '', 1, StringToBoolean(GetPreviousData('MergeAtRightPane', 'true')), True, nil);
\r
1266 g_CheckListBox.AddRadioButton(ExpandConstant('{cm:MergeAtCenterPane}'), '', 1, StringToBoolean(GetPreviousData('MergeAtCenterPane', 'false')), True, nil);
\r
1267 g_CheckListBox.AddRadioButton(ExpandConstant('{cm:MergeAtLeftPane}'), '', 1, StringToBoolean(GetPreviousData('MergeAtLeftPane', 'false')), True, nil);
\r
1268 g_CheckListBox.AddCheckBox(ExpandConstant('{cm:AutoMergeAtStartup}'), '', 1, StringToBoolean(GetPreviousData('AutoMergeAtStartup', 'true')), True, False, True, nil);
\r