1; Script generated by the Inno Script Studio Wizard.
2; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3
4#define MyAppName "Valentina"
5#define MyAppVersion GetFileVersion('valentina\valentina.exe')
6#define MyAppPublisher "Roman Telezhynskyi"
7#define MyAppURL "https://smart-pattern.com.ua/"
8#define MyAppExeName "valentina.exe"
9#define MyAppCopyright "(C) 2013-2021 Valentina project"
10#define MyDateTimeString GetDateTimeString('yyyymmddhhnnss', '', '');
11; Appstatus: "" = release, "b" = beta, "a" = alpha
12; this only modifies the resulting exe name of the installer package ;-)
13#define MyAppStatus ""
14
15[Setup]
16; NOTE: The value of AppId uniquely identifies this application.
17; Do not use the same AppId value in installers for other applications.
18; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
19AppId={{7081AEC7-38FC-479F-B712-DB073BB76512}
20AppName={#MyAppName}
21AppVersion={#MyAppVersion}
22AppVerName={#MyAppName} {#MyAppVersion}
23;AppVerName={#MyAppName} {#MyAppVersion}
24AppPublisher={#MyAppPublisher}
25AppPublisherURL={#MyAppURL}
26AppSupportURL={#MyAppURL}
27AppUpdatesURL={#MyAppURL}
28DefaultDirName={pf}\{#MyAppName}
29DefaultGroupName={#MyAppName}
30LicenseFile=.\LICENSE_VALENTINA
31InfoAfterFile=.\valentina\README.txt
32OutputDir=.\
33OutputBaseFilename=valentina_{#MyAppVersion}{#MyAppStatus}_i386
34SetupIconFile=.\valentina\valentina.ico
35UninstallDisplayIcon={app}\valentina.ico
36Compression=lzma
37SolidCompression=yes
38VersionInfoVersion={#MyAppVersion}
39ShowLanguageDialog=yes
40VersionInfoProductName=Valentina
41AppComments=Patternmaking program
42AppContact={#MyAppURL}
43AppCopyright={#MyAppCopyright}
44ChangesAssociations=yes
45DisableDirPage=auto
46DisableProgramGroupPage=auto
47;MinVersion=6.1
48;SignTool=MySign
49;Uncomment the previous string for code signing
50;The next string is an example of parameter SignTool. Should not be uncommented.
51;MySign=signtool.exe sign /v /a /n $qOpen Source Developer, Roman Telezhynskyi$q /t http://time.certum.pl /fd sha256 /d $qValentina$q $f
52
53[Languages]
54Name: "english"; MessagesFile: "compiler:Default.isl"
55Name: "armenian"; MessagesFile: "compiler:Languages\Armenian.islu"
56Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
57Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
58Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
59Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
60Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
61Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
62Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
63Name: "french"; MessagesFile: "compiler:Languages\French.isl"
64Name: "german"; MessagesFile: "compiler:Languages\German.isl"
65Name: "greek"; MessagesFile: "compiler:Languages\Greek.isl"
66Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
67Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
68Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
69Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
70Name: "nepali"; MessagesFile: "compiler:Languages\Nepali.islu"
71Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
72Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
73Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
74Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
75Name: "scottishgaelic"; MessagesFile: "compiler:Languages\ScottishGaelic.isl"
76Name: "serbiancyrillic"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
77Name: "serbianlatin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
78Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
79Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
80Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
81Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
82
83[Tasks]
84Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
85Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
86Name: "fileassoc1"; Description: "{cm:CreateFileAssocVal}"; GroupDescription: "{cm:FileAssoc}"
87Name: "fileassoc2"; Description: "{cm:CreateFileAssocVit}"; GroupDescription: "{cm:FileAssoc}"
88Name: "fileassoc3"; Description: "{cm:CreateFileAssocVst}"; GroupDescription: "{cm:FileAssoc}"
89Name: "deletesettings"; Description: "{cm:RemoveAnyExistingSettings}"; GroupDescription: "{cm:ManageSettings}"; Flags: unchecked
90
91[Types]
92Name: "full_english"; Description: "System language"; Languages: english;
93;Name: "full_armenian"; Description: "System language"; Languages: armenian;
94Name: "full_brazilianportuguese"; Description: "System language"; Languages: brazilianportuguese;
95;Name: "full_catalan"; Description: "System language"; Languages: catalan;
96;Name: "full_corsican"; Description: "System language"; Languages: corsican;
97Name: "full_czech"; Description: "System language"; Languages: czech;
98;Name: "full_danish"; Description: "System language"; Languages: danish;
99Name: "full_dutch"; Description: "System language"; Languages: dutch;
100Name: "full_finnish"; Description: "System language"; Languages: finnish;
101Name: "full_french"; Description: "System language"; Languages: french;
102Name: "full_german"; Description: "System language"; Languages: german;
103Name: "full_greek"; Description: "System language"; Languages: greek;
104Name: "full_hebrew"; Description: "System language"; Languages: hebrew;
105;Name: "full_hungarian"; Description: "System language"; Languages: hungarian;
106Name: "full_italian"; Description: "System language"; Languages: italian;
107;Name: "full_japanese"; Description: "System language"; Languages: japanese;
108;Name: "full_nepali"; Description: "System language"; Languages: nepali;
109;Name: "full_norwegian"; Description: "System language"; Languages: norwegian;
110Name: "full_polish"; Description: "System language"; Languages: polish;
111Name: "full_portuguese"; Description: "System language"; Languages: portuguese;
112Name: "full_russian"; Description: "System language"; Languages: russian;
113;Name: "full_scottishgaelic"; Description: "System language"; Languages: scottishgaelic;
114;Name: "full_serbiancyrillic"; Description: "System language"; Languages: serbiancyrillic;
115;Name: "full_serbianlatin"; Description: "System language"; Languages: serbianlatin;
116;Name: "full_slovenian"; Description: "System language"; Languages: slovenian;
117Name: "full_spanish"; Description: "System language"; Languages: spanish;
118;Name: "full_turkish"; Description: "System language"; Languages: turkish;
119Name: "full_ukrainian"; Description: "System language"; Languages: ukrainian;
120Name: "full"; Description: "Full installation"
121Name: "custom"; Description: "Custom installation"; Flags: iscustom
122
123[Components]
124Name: "lang_files"; Description: "Language Component"; Types: full custom; Flags: fixed
125Name: "lang_files\english"; Description: "English"; Types: full full_english custom; Flags: disablenouninstallwarning
126Name: "lang_files\english\us"; Description: "English (United States)"; Types: full full_english custom; Flags: disablenouninstallwarning
127Name: "lang_files\english\in"; Description: "English (India)"; Types: full full_english custom; Flags: disablenouninstallwarning
128Name: "lang_files\english\ca"; Description: "English (Canada)"; Types: full full_english custom; Flags: disablenouninstallwarning
129;Name: "lang_files\armenian"; Description: "Armenian"; Types: full full_armenian custom; Flags: disablenouninstallwarning
130Name: "lang_files\brazilianportuguese"; Description: "Brazilian portuguese"; Types: full full_brazilianportuguese custom; Flags: disablenouninstallwarning
131;Name: "lang_files\catalan"; Description: "Catalan"; Types: full full_catalan custom; Flags: disablenouninstallwarning
132;Name: "lang_files\corsican"; Description: "Corsican"; Types: full full_orsican custom; Flags: disablenouninstallwarning
133Name: "lang_files\czech"; Description: "Czech"; Types: full full_czech custom; Flags: disablenouninstallwarning
134;Name: "lang_files\danish"; Description: "Danish"; Types: full full_danish custom; Flags: disablenouninstallwarning
135Name: "lang_files\dutch"; Description: "Dutch"; Types: full full_dutch custom; Flags: disablenouninstallwarning
136Name: "lang_files\finnish"; Description: "Finnish"; Types: full full_finnish custom; Flags: disablenouninstallwarning
137Name: "lang_files\french"; Description: "French"; Types: full full_french custom; Flags: disablenouninstallwarning
138Name: "lang_files\german"; Description: "German"; Types: full full_german custom; Flags: disablenouninstallwarning
139Name: "lang_files\greek"; Description: "Greek"; Types: full full_greek custom; Flags: disablenouninstallwarning
140Name: "lang_files\hebrew"; Description: "Hebrew"; Types: full full_hebrew custom; Flags: disablenouninstallwarning
141;Name: "lang_files\hungarian"; Description: "Hungarian"; Types: full full_hungarian custom; Flags: disablenouninstallwarning
142Name: "lang_files\italian"; Description: "Italian"; Types: full full_italian custom; Flags: disablenouninstallwarning
143;Name: "lang_files\japanese"; Description: "Japanese"; Types: full full_japanese custom; Flags: disablenouninstallwarning
144;Name: "lang_files\nepali"; Description: "Nepali"; Types: full full_nepali custom; Flags: disablenouninstallwarning
145;Name: "lang_files\norwegian"; Description: "Norwegian"; Types: full full_norwegian custom; Flags: disablenouninstallwarning
146Name: "lang_files\polish"; Description: "Polish"; Types: full full_polish custom; Flags: disablenouninstallwarning
147Name: "lang_files\portuguese"; Description: "Portuguese"; Types: full full_portuguese custom; Flags: disablenouninstallwarning
148Name: "lang_files\russian"; Description: "Russian"; Types: full full_russian custom; Flags: disablenouninstallwarning
149;Name: "lang_files\scottishgaelic"; Description: "Scottish gaelic"; Types: full full_scottishgaelic custom; Flags: disablenouninstallwarning
150;Name: "lang_files\serbiancyrillic"; Description: "Serbian cyrillic"; Types: full full_serbiancyrillic custom; Flags: disablenouninstallwarning
151;Name: "lang_files\serbianlatin"; Description: "Serbian latin"; Types: full full_serbianlatin custom; Flags: disablenouninstallwarning
152;Name: "lang_files\slovenian"; Description: "Slovenian"; Types: full full_slovenian custom; Flags: disablenouninstallwarning
153Name: "lang_files\spanish"; Description: "Spanish"; Types: full full_spanish custom; Flags: disablenouninstallwarning
154;Name: "lang_files\turkish"; Description: "Turkish"; Types: full full_turkish custom; Flags: disablenouninstallwarning
155Name: "lang_files\ukrainian"; Description: "Ukrainian"; Types: full full_ukrainian custom; Flags: disablenouninstallwarning
156Name: "lang_files\indonesian"; Description: "Indonesian"; Types: full custom; Flags: disablenouninstallwarning
157Name: "lang_files\romanian"; Description: "Romanian"; Types: full custom; Flags: disablenouninstallwarning
158Name: "lang_files\chinese"; Description: "Chinese (China)"; Types: full custom; Flags: disablenouninstallwarning
159
160[Files]
161; Signing
162Source: ".\valentina\valentina.exe"; DestDir: "{app}"; Flags: ignoreversion sign
163Source: ".\valentina\tape.exe"; DestDir: "{app}"; Flags: ignoreversion sign
164Source: ".\valentina\vpropertyexplorer.dll"; DestDir: "{app}"; Flags: ignoreversion sign
165Source: ".\valentina\qmuparser2.dll"; DestDir: "{app}"; Flags: ignoreversion sign
166; Localizations
167Source: ".\valentina\translations\*_en_US.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\english\us
168Source: ".\valentina\translations\*_en_IN.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\english\in
169Source: ".\valentina\translations\*_en_CA.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\english\ca
170Source: ".\valentina\translations\*_ru_RU.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\russian
171Source: ".\valentina\translations\*_ru.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\russian
172Source: ".\valentina\translations\*_uk_UA.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\ukrainian
173Source: ".\valentina\translations\*_uk.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\ukrainian
174Source: ".\valentina\translations\*_de_DE.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\german
175Source: ".\valentina\translations\*_de.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\german
176Source: ".\valentina\translations\*_cs_CZ.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\czech
177Source: ".\valentina\translations\*_cs.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\czech
178Source: ".\valentina\translations\*_he_IL.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\hebrew
179Source: ".\valentina\translations\*_he.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\hebrew
180Source: ".\valentina\translations\*_fr_FR.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\french
181Source: ".\valentina\translations\*_fr.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\french
182Source: ".\valentina\translations\*_it_IT.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\italian
183Source: ".\valentina\translations\*_it.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\italian
184Source: ".\valentina\translations\*_nl_NL.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\dutch
185Source: ".\valentina\translations\*_id_ID.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\indonesian
186Source: ".\valentina\translations\*_es_ES.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\spanish
187Source: ".\valentina\translations\*_fi_FI.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\finnish
188Source: ".\valentina\translations\*_fi.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\finnish
189Source: ".\valentina\translations\*_ro_RO.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\romanian
190Source: ".\valentina\translations\*_zh_CN.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\chinese
191Source: ".\valentina\translations\*_pt_BR.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\brazilianportuguese
192Source: ".\valentina\translations\*_el_GR.qm"; DestDir: "{app}\translations"; Flags: ignoreversion; Components: lang_files\greek
193; Additional languages provided by Qt
194Source: ".\valentina\translations\*_sk.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
195Source: ".\valentina\translations\*_pl.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
196Source: ".\valentina\translations\*_ar.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
197Source: ".\valentina\translations\*_pt.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
198Source: ".\valentina\translations\*_sl.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
199Source: ".\valentina\translations\*_sv.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
200Source: ".\valentina\translations\*_zh_TW.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
201Source: ".\valentina\translations\qtxmlpatterns_ca.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
202Source: ".\valentina\translations\qtbase_ca.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
203Source: ".\valentina\translations\qt_ca.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
204Source: ".\valentina\translations\*_da.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
205Source: ".\valentina\translations\*_en.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
206Source: ".\valentina\translations\*_fa.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
207Source: ".\valentina\translations\*_gl.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
208Source: ".\valentina\translations\*_he.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
209Source: ".\valentina\translations\*_hu.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
210Source: ".\valentina\translations\*_ja.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
211Source: ".\valentina\translations\*_ko.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
212Source: ".\valentina\translations\*_lt.qm"; DestDir: "{app}\translations"; Flags: ignoreversion
213; Other files
214Source: ".\valentina\bearer\*"; DestDir: "{app}\bearer"; Flags: recursesubdirs createallsubdirs
215Source: ".\valentina\iconengines\*"; DestDir: "{app}\iconengines"; Flags: recursesubdirs createallsubdirs
216Source: ".\valentina\imageformats\*"; DestDir: "{app}\imageformats"; Flags: recursesubdirs createallsubdirs
217Source: ".\valentina\platforms\*"; DestDir: "{app}\platforms"; Flags: recursesubdirs createallsubdirs
218Source: ".\valentina\printsupport\*"; DestDir: "{app}\printsupport"; Flags: recursesubdirs createallsubdirs
219Source: ".\valentina\tables\*"; DestDir: "{app}\tables"; Flags: ignoreversion recursesubdirs createallsubdirs
220Source: ".\valentina\labels\*"; DestDir: "{app}\labels"; Flags: ignoreversion recursesubdirs createallsubdirs
221; Since qt 5.10
222Source: ".\valentina\styles\*"; DestDir: "{app}\styles"; Flags: recursesubdirs createallsubdirs
223Source: ".\valentina\*.exe"; DestDir: "{app}"; Flags: ignoreversion
224Source: ".\valentina\*.dll"; DestDir: "{app}"
225Source: ".\valentina\*.txt"; DestDir: "{app}"; Flags: ignoreversion
226Source: ".\valentina\*.rcc"; DestDir: "{app}"; Flags: ignoreversion
227Source: ".\valentina\*.ico"; DestDir: "{app}"; Flags: ignoreversion
228Source: ".\valentina\*.ini"; DestDir: "{app}"; Flags: ignoreversion
229; NOTE: Don't use "Flags: ignoreversion" on any shared system files
230; DLL used to check if the target program is running at install time
231Source: ".\valentina\EUDC.TTE"; DestDir: "{fonts}"; FontInstall: "EUDC"; Flags: onlyifdoesntexist uninsneveruninstall
232
233[InstallDelete]
234Type: filesandordirs; Name: "{app}\translations"
235Type: files; Name: "{userappdata}\ValentinaTeam\*.ini"; Tasks: deletesettings
236
237[Icons]
238Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
239Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
240Name: "{group}\Tape"; Filename: "{app}\tape.exe"
241Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
242Name: "{commondesktop}\Tape"; Filename: "{app}\tape.exe"; Tasks: desktopicon
243Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
244
245[Run]
246Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
247
248[Registry]
249Root: "HKCR"; Subkey: ".val"; ValueType: string; ValueName: ""; ValueData: "Valentina.Pattern"; Flags: uninsdeletevalue; Tasks: fileassoc1
250Root: "HKCR"; Subkey: ".vit"; ValueType: string; ValueName: ""; ValueData: "Valentina.IndividualMeasurements"; Flags: uninsdeletevalue; Tasks: fileassoc2
251Root: "HKCR"; Subkey: ".vst"; ValueType: string; ValueName: ""; ValueData: "Valentina.StandardMeasurements"; Flags: uninsdeletevalue; Tasks: fileassoc3
252
253Root: "HKCR"; Subkey: "Valentina.Pattern"; ValueType: string; ValueData: "Valentina pattern file"; Flags: uninsdeletekey; Tasks: fileassoc1
254Root: "HKCR"; Subkey: "Valentina.Pattern\DefaultIcon"; ValueType: string; ValueData: "{app}\pattern.ico,0"; Tasks: fileassoc1
255Root: "HKCR"; Subkey: "Valentina.Pattern\shell\open\command"; ValueType: string; ValueData: """{app}\valentina.exe"" ""%1"""; Tasks: fileassoc1
256
257Root: "HKCR"; Subkey: "Valentina.IndividualMeasurements"; ValueType: string; ValueData: "Valentina individual measurement file"; Flags: uninsdeletekey; Tasks: fileassoc2
258Root: "HKCR"; Subkey: "Valentina.IndividualMeasurements\DefaultIcon"; ValueType: string; ValueData: "{app}\i-measurements.ico,0"; Tasks: fileassoc2
259Root: "HKCR"; Subkey: "Valentina.IndividualMeasurements\shell\open\command"; ValueType: string; ValueData: """{app}\tape.exe"" ""%1"""; Tasks: fileassoc2
260
261Root: "HKCR"; Subkey: "Valentina.StandardMeasurements"; ValueType: string; ValueData: "Valentina standard measurement file"; Flags: uninsdeletekey; Tasks: fileassoc3
262Root: "HKCR"; Subkey: "Valentina.StandardMeasurements\DefaultIcon"; ValueType: string; ValueData: "{app}\s-measurements.ico,0"; Tasks: fileassoc3
263Root: "HKCR"; Subkey: "Valentina.StandardMeasurements\shell\open\command"; ValueType: string; ValueData: """{app}\tape.exe"" ""%1"""; Tasks: fileassoc3
264
265[CustomMessages]
266FileAssoc = Create file associations
267english.FileAssoc = Create file associations
268russian.FileAssoc = Создание ассоциаций файлов
269ukrainian.FileAssoc = Створити асоціації файлів
270german.FileAssoc = Dateizuordnungen erstellen
271
272CreateFileAssocVal = *.val (Pattern file)
273english.CreateFileAssocVal = *.val (Pattern file)
274russian.CreateFileAssocVal = *.val (Файл выкройки)
275ukrainian.CreateFileAssocVal = *.val (Файл викрійки)
276german.CreateFileAssocVal = *.val (Schnittmusterdatei)
277
278CreateFileAssocVit = *.vit (Individual measurement file)
279english.CreateFileAssocVit = *.vit (Individual measurement file)
280russian.CreateFileAssocVit = *.vit (Файл индивидуальных мерок)
281ukrainian.CreateFileAssocVit = *.vit (Файл індивідуальних мірок)
282german.CreateFileAssocVit = *.vit (Individuelle Maßdatei)
283
284CreateFileAssocVst = *.vst (Multisize measurement file)
285english.CreateFileAssocVst = *.vst (Multisize measurement file)
286russian.CreateFileAssocVst = *.vst (Мультиразмерный файл мерок)
287ukrainian.CreateFileAssocVst = *.vst (Мультирозмірний файл мірок)
288german.CreateFileAssocVst = *.vst (Multi-Size Maßdatei)
289
290WarnRemoveOld = is installed at the moment. Remove old version?
291english.WarnRemoveOld = is installed at the moment. Remove old version?
292russian.WarnRemoveOld = установлена на данный момент. Удалить старую версию?
293ukrainian.WarnRemoveOld = встановлено на даний момент. Видалити стару версію?
294german.WarnRemoveOld = ist im Moment installiert. Alte Version entfernen?
295
296WarnSameVersionExit = is already installed. This installer will exit.
297english.WarnSameVersionExit = is already installed. This installer will exit.
298russian.WarnSameVersionExit = уже установлено. Установщик завершит свою работу.
299ukrainian.WarnSameVersionExit = вже встановлено. Інсталятор завершить свою роботу.
300german.WarnSameVersionExit = ist bereits installiert. Dieses Installationsprogramm wird beendet.
301
302WarnRunningOnUnInstall1 = is currently running.
303english.WarnRunningOnUnInstall1 = is currently running.
304russian.WarnRunningOnUnInstall1 = в настоящее время работает.
305ukrainian.WarnRunningOnUnInstall1 = в даний час працює.
306german.WarnRunningOnUnInstall1 = läuft derzeit.
307
308WarnRunningOnUnInstall2 = Please close it and then click on ''Retry'' to proceed.
309english.WarnRunningOnUnInstall2 = Please close it and then click on ''Retry'' to proceed.
310russian.WarnRunningOnUnInstall2 = Закройте его и нажмите ''Повторить'', чтобы продолжить.
311ukrainian.WarnRunningOnUnInstall2 = Закрийте його та натисніть ''Повторити'', щоб продовжити.
312german.WarnRunningOnUnInstall2 = Bitte schließen Sie es und klicken Sie auf ''Wiederholen'', um fortzufahren.
313
314WarnCancelInstall = The installation was canceled.
315english.WarnCancelInstall = The installation was canceled.
316russian.WarnCancelInstall = Установка была отменена.
317ukrainian.WarnCancelInstall = Установка була скасована.
318german.WarnCancelInstall = Die Installation wurde abgebrochen.
319
320WarnCancelUninstall = The uninstallation process was canceled.
321english.WarnCancelUninstall = The uninstallation process was canceled.
322russian.WarnCancelUninstall = Процесс удаления был отменен.
323ukrainian.WarnCancelUninstall = Процес деінсталяції скасовано.
324german.WarnCancelUninstall = Der Deinstallationsvorgang wurde abgebrochen.
325
326WarnOverwrite = is already installed. Overwrite existing installation?
327english.WarnOverwrite= is already installed. Overwrite existing installation?
328russian.WarnOverwrite= уже установлено. Перезаписать существующую установку?
329ukrainian.WarnOverwrite= вже встановлено. Перезаписати існуючу установку?
330german.WarnOverwrite = ist bereits installiert. Vorhandene Installation überschreiben?
331
332SetupIsRunningWarning = Valentina setup is already running!
333english.SetupIsRunningWarning = Valentina setup is already running!
334russian.SetupIsRunningWarning = Установка Valentina уже запущена!
335ukrainian.SetupIsRunningWarning = Встановлення Valentina вже працює!
336german.SetupIsRunningWarning = Valentina-Setup läuft bereits!
337
338DeinstIsRunningWarning = Valentina uninstall is already running!
339english.DeinstIsRunningWarning = Valentina uninstall is already running!
340russian.DeinstIsRunningWarning = Удаление Valentina уже запущено!
341ukrainian.DeinstIsRunningWarning = Видалення Valentina вже працює!
342german.DeinstIsRunningWarning = Die Deinstallation von Valentina läuft bereits!
343
344RemoveAnyExistingSettings = Remove any existing settings
345english.RemoveAnyExistingSettings = Remove any existing settings
346russian.RemoveAnyExistingSettings = Удалить все существующие настройки
347ukrainian.RemoveAnyExistingSettings = Видалити всі існуючі налаштування
348german.RemoveAnyExistingSettings = Alle vorhandenen Einstellungen entfernen
349
350ManageSettings = Manage settings
351english.ManageSettings = Manage settings
352russian.ManageSettings = Управление настройками
353ukrainian.ManageSettings = Керування налаштуваннями
354german.ManageSettings = Einstellungen verwalten
355
356QuestionRemoveAnyExistingSettings = Do you want to remove any existing settings?
357english.QuestionRemoveAnyExistingSettings = Do you want to remove any existing settings?
358russian.QuestionRemoveAnyExistingSettings = Вы хотите удалить существующие настройки?
359ukrainian.QuestionRemoveAnyExistingSettings = Видалити будь-які існуючі налаштування?
360german.QuestionRemoveAnyExistingSettings = Möchten Sie vorhandene Einstellungen entfernen?
361
362ErrorFindApp = Unable to check if a program is running. Please, close the program before continue and press OK to continue the installation.
363english.ErrorFindApp = Unable to check if a program is running. Please, close the program before continue and press OK to continue the installation.
364russian.ErrorFindApp = Невозможно проверить, запущена ли программа. Пожалуйста, закройте программу перед продолжением и нажмите OK, чтобы продолжить установку.
365ukrainian.ErrorFindApp = Неможливо перевірити, чи запущена програма. Будь ласка, закрийте програму перед продовженням та натисніть OK, щоб продовжити встановлення.
366german.ErrorFindApp = Es kann nicht geprüft werden, ob ein Programm läuft. Bitte schließen Sie das Programm, bevor Sie fortfahren, und drücken Sie OK, um die Installation fortzusetzen.
367
368[Code]
369const
370
371// Executable names to check before any setup/uninstall operation
372  ProgramName1 = 'Valentina';
373  ProgramExeName1 = 'valentina.exe';
374  ProgramName2 = 'Tape';
375  ProgramExeName2 = 'tape.exe';
376
377/////////////////////////////////////////////////////////////////////
378// Convert version strings into float and compare
379// easier than string comparison
380
381function CompareVersion(str1, str2: String): Integer;
382var
383  temp1, temp2: String;
384  num1, num2 : Variant;
385begin
386    temp1 := str1;
387    temp2 := str2;
388    StringChangeEx(temp1, '.', '', True);
389    StringChangeEx(temp2, '.', '', True);
390    num1 := 100*StrToFloat(temp1);
391    num2 := 100*StrToFloat(temp2);
392    Result := num1 - num2
393end;
394
395// Global variables/constants and general functions
396const installer_mutex_name = '{#MyAppName}' + '_setup_mutex';
397const uninstaller_mutex_name = '{#MyAppName}' + '_uninstall_mutex';
398
399/////////////////////////////////////////////////////////////////////
400// Find application by name in current process list
401// -> AppName: Name of running exe file
402// <- True if the program found, False if not
403
404function FindApp(const AppName: String): Boolean;
405var
406  WMIService: Variant;
407  WbemLocator: Variant;
408  WbemObjectSet: Variant;
409  InstallationFindAppMessage: String;
410begin
411  try
412    WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
413    WMIService := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
414    WbemObjectSet := WMIService.ExecQuery('SELECT * FROM Win32_Process Where Name="' + AppName + '"');
415    if not VarIsNull(WbemObjectSet) and (WbemObjectSet.Count > 0) then
416    begin
417      Result := True;
418    end
419    else begin
420      Result := False;
421    end;
422  except
423    InstallationFindAppMessage := ExpandConstant('{cm:ErrorFindApp}');
424    MsgBox( InstallationFindAppMessage, mbError, MB_OK );
425    Result := False;
426  end;
427end;
428
429/////////////////////////////////////////////////////////////////////
430// Prompt the user to close a program that's still running.
431// Finish when the executable is closed or the user cancels the process.
432
433//  -> ProgramExeName: Name of executable
434//  -> Message : User message to prompt to close
435//  <- True if the program was closed (or was not running),
436//     False if the user clicked on the Cancel button and didn't close the program
437
438function PromptUntilProgramClosedOrInstallationCanceled(
439              ProgramExeName: String;
440              Message: String ): Boolean;
441var
442  ButtonPressed : Integer;
443begin
444  ButtonPressed := IDRETRY;
445
446  // Check if the program is running or if the user has pressed the cancel button
447  while FindApp( ProgramExeName ) and ( ButtonPressed <> IDCANCEL ) do
448  begin
449    ButtonPressed := MsgBox( message , mbError, MB_RETRYCANCEL );
450  end;
451
452  // Has the program been closed?
453  Result := Not FindApp( ProgramExeName );
454end;
455
456
457/////////////////////////////////////////////////////////////////////
458// Version comparison on installation
459
460function VersionCompareAndUninstall(): Boolean;
461var
462  oldVersion: String;
463  uninstaller: String;
464  ErrorCode: Integer;
465  tmpId : String;
466begin
467  tmpId := '{#emit SetupSetting("AppId")}';
468  Delete(tmpId,1,1);
469  if RegKeyExists(HKEY_LOCAL_MACHINE,
470    'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + tmpId + '_is1') then
471  begin
472    RegQueryStringValue(HKEY_LOCAL_MACHINE,
473      'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + tmpId + '_is1',
474      'DisplayVersion', oldVersion);
475    if (CompareVersion(oldVersion, '{#emit SetupSetting("AppVersion")}') < 0) then
476    begin
477      if MsgBox('Version ' + oldVersion + ExpandConstant('{cm:WarnRemoveOld}'),
478        mbConfirmation, MB_YESNO) = IDNO then
479      begin
480        Result := False;
481      end
482      else
483      begin
484          RegQueryStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + tmpId + '_is1','UninstallString', uninstaller);
485          If ShellExec('', uninstaller, '/SILENT', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
486          begin
487            // handle success if necessary; ResultCode contains the exit code
488            Result := True
489          end
490          else begin
491            // handle failure if necessary; ResultCode contains the error code
492            Result := False
493          end
494      end;
495    end
496    else
497    begin
498        //MsgBox('Version ' + oldVersion + ExpandConstant('{cm:WarnSameVersionExit}'),mbInformation, MB_OK);
499        if MsgBox('Version ' + oldVersion + ExpandConstant('{cm:WarnOverwrite}'),
500          mbConfirmation, MB_YESNO) = IDNO then
501          Result := False
502        else
503          Result := True;
504    end;
505  end
506  else
507  begin
508    Result := True;
509  end;
510end;
511
512/////////////////////////////////////////////////////////////////////
513// Run on setup
514
515function InitializeSetup(): Boolean;
516var
517 // User messages
518 ProgramRunningOnInstallMessage : String;
519 InstallationCanceledMessage : String;
520
521 begin
522  // Create a mutex for the installer and if it's already running then show a message and stop installation
523  if CheckForMutexes(installer_mutex_name) then begin
524    SuppressibleMsgBox(ExpandConstant('{cm:SetupIsRunningWarning}'), mbError, MB_OK, MB_OK);
525    Result := False;
526  end
527  else begin
528    Result := True;
529    CreateMutex(installer_mutex_name);
530
531    ProgramRunningOnInstallMessage := ExpandConstant('{cm:WarnRunningOnUnInstall1}') + #13 + #13 + ExpandConstant('{cm:WarnRunningOnUnInstall2}');
532    InstallationCanceledMessage := ExpandConstant('{cm:WarnCancelInstall}');
533
534    Result := PromptUntilProgramClosedOrInstallationCanceled( ProgramExeName1, ProgramName1 + ProgramRunningOnInstallMessage)
535    If Result Then
536    begin
537      Result := PromptUntilProgramClosedOrInstallationCanceled( ProgramExeName2, ProgramName2 + ProgramRunningOnInstallMessage)
538    end;
539
540    if Not Result then
541    begin
542      MsgBox( InstallationCanceledMessage, mbInformation, MB_OK );
543    end else begin
544        Result := VersionCompareAndUninstall
545    end;
546  end;
547end;
548
549/////////////////////////////////////////////////////////////////////
550// Run on uninstall
551
552function InitializeUninstall(): Boolean;
553var
554 // User message
555 ProgramRunningOnUninstallMessage : String;
556 UninstallationCanceledMessage : String;
557
558 begin
559  if CheckForMutexes(uninstaller_mutex_name) then begin
560    SuppressibleMsgBox(ExpandConstant('{cm:DeinstIsRunningWarning}'), mbError, MB_OK, MB_OK);
561    Result := False;
562  end else
563  begin
564    Result := True;
565    CreateMutex(uninstaller_mutex_name);
566
567    ProgramRunningOnUninstallMessage := ExpandConstant('{cm:WarnRunningOnUnInstall1}') + #13 + #13 + ExpandConstant('{cm:WarnRunningOnUnInstall2}');
568    UninstallationCanceledMessage := ExpandConstant('{cm:WarnCancelUninstall}');
569
570    Result := PromptUntilProgramClosedOrInstallationCanceled( ProgramExeName1, ProgramName1 + ProgramRunningOnUninstallMessage);
571    If Result Then
572    begin
573      Result := PromptUntilProgramClosedOrInstallationCanceled( ProgramExeName2, ProgramName2 + ProgramRunningOnUninstallMessage);
574    end;
575
576    if not Result then
577    begin
578      MsgBox( UninstallationCanceledMessage, mbInformation, MB_OK );
579    end;
580  end;
581end;
582
583procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
584begin
585  if CurUninstallStep = usPostUninstall then
586  begin
587    if MsgBox(ExpandConstant('{cm:QuestionRemoveAnyExistingSettings}'), mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then
588    //this is the msg that will display after uninstall
589    begin
590        DelTree(ExpandConstant('{userappdata}\ValentinaTeam'), True, True, True);
591    end;
592  end;
593end;
594