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