From ba15707b292d827bdce732e7713b26fae3f75c74 Mon Sep 17 00:00:00 2001 From: Alex Bennee Date: Wed, 14 Jul 2010 15:57:06 +0100 Subject: EasyTag 2.1.1 --- easytag.win32.setup.iss | 217 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100755 easytag.win32.setup.iss (limited to 'easytag.win32.setup.iss') diff --git a/easytag.win32.setup.iss b/easytag.win32.setup.iss new file mode 100755 index 0000000..76cf16e --- /dev/null +++ b/easytag.win32.setup.iss @@ -0,0 +1,217 @@ +; --------------------------------------------------------- +; To build this setup follow these steps: +; +; - Download and install Inno Setup QuickStart Pack from +; http://files.jrsoftware.org/ispack/ispack-5.1.9.exe +; +; - Create a subdirectory named "win32-install-dir" of the +; directory that contains this script. Then, copy into the +; directory "win32-install-dir" all the EasyTAG's files +; (easytag.exe, easytag.dll, etc). +; +; - Finally open this script in Inno Setup and click on +; "Build -> Compile", or simply "Compile" in the context +; menu of the file in Windows Explorer. +; +; --------------------------------------------------------- + +; Here you can specify the current version of EasyTAG. +#define APP_NAME "EasyTAG" +#define APP_VERSION "2.1.1" +#define APP_URL "http://easytag.sourceforge.net" +#define APP_NAME_2 "easytag" +#define DEV_NAME "Jérôme COUDERC" + +; Here you can specify the minimum required version of GTK+ +; and the download URL for the Windows version. +#define GTK_VERSION "2.8" +#define GTK_DOWNLOAD "http://sourceforge.net/project/showfiles.php?group_id=121075&package_id=132255" + +; Defining MULTILANGUAGE the installer will support other +; languages, not only English. See also below in sections +; [Languages] and [CustomMessages]. +#define MULTILANGUAGE + +[Setup] +AppVerName={#APP_NAME} {#APP_VERSION} +VersionInfoVersion={#APP_VERSION} +AppName={#APP_NAME} +AppPublisher={#DEV_NAME} +AppPublisherURL={#APP_URL} +AppSupportURL={#APP_URL} +AppUpdatesURL={#APP_URL} +AppCopyright={#DEV_NAME} +VersionInfoCopyright=This program is open-source! +DefaultDirName={pf}\{#APP_NAME} +DefaultGroupName={#APP_NAME} +UninstallDisplayIcon={app}\{#APP_NAME}.exe,0 +DisableStartupPrompt=yes +DirExistsWarning=no +OutputDir=.\ +OutputBaseFilename={#APP_NAME_2}-{#APP_VERSION} +Compression=lzma/max +SolidCompression=yes +AllowNoIcons=yes +PrivilegesRequired=poweruser +ShowLanguageDialog=auto + +WizardImageFile=compiler:WizModernImage-IS.bmp +WizardSmallImageFile=compiler:WizModernSmallImage-IS.bmp + +; Here you can specify which languages are available for the setup +; GUI. Additional languages can be found at this location: +; http://www.jrsoftware.org/files/istrans/ +[Languages] +Name: en; MessagesFile: compiler:Default.isl +#ifdef MULTILANGUAGE +Name: cs; MessagesFile: compiler:Languages\Czech.isl +Name: da; MessagesFile: compiler:Languages\Danish.isl +Name: de; MessagesFile: compiler:Languages\German.isl +Name: es; MessagesFile: compiler:Languages\Spanish.isl +Name: fr; MessagesFile: compiler:Languages\French.isl +Name: hu; MessagesFile: compiler:Languages\Hungarian.isl +Name: it; MessagesFile: compiler:Languages\Italian.isl +#endif + +; These are the labels displayed in the wizard and not contained in +; the Inno Setup's translation files +[CustomMessages] +; ** ENGLISH ** +en.FoldersLink=Add {#APP_NAME} to folders' context menu +en.MissingGTK=The GTK+ libraries v{#GTK_VERSION} (or above) are not installed. Would you like do download them now? +#ifdef MULTILANGUAGE +; ** CZECH ** +cs.FoldersLink=Pridat {#APP_NAME} do kontextového menu adresáre +cs.MissingGTK=Knihovny GTK+ v{#GTK_VERSION} (nebo vyšší) nejsou nainstalovány. Chcete je nyní stáhnout? +; ** DANISH ** +da.FoldersLink=Tilfřj {#APP_NAME} til mappers hřjre-klik menu +da.MissingGTK=GTK+ bibliotekerne v{#GTK_VERSION} (eller hřjere) er ikke installeret. Vil du hente dem nu? +; ** GERMAN ** +de.FoldersLink=Füge {#APP_NAME} zum Kontextmenü von Ordnern hinzu +de.MissingGTK=GTK+ v{#GTK_VERSION} (oder neuer) ist nicht installiert. Wollen sie es jetzt herunterladen? +; ** SPANISH ** ---> NOT TRANSLATED YET! <--- +es.FoldersLink=Add {#APP_NAME} to folders' context menu +es.MissingGTK=The GTK+ libraries v{#GTK_VERSION} (or above) are not installed. Would you like do download them now? +; ** FRENCH ** +fr.FoldersLink=Ajouter {#APP_NAME} au menu contextuel des dossiers +fr.MissingGTK=La librairie GTK+ v{#GTK_VERSION} (ou supérieure) n'est pas installée. Voulez-vous la télécharger maintenant? +; ** HUNGARIAN ** +hu.FoldersLink=Külso program {#APP_NAME} beépítése a menüszerkezetbe +hu.MissingGTK=A GTK+ {#GTK_VERSION} (vagy nagyobb) környezet nincs telepítve. Szeretné most letölteni? +; ** ITALIAN ** +it.FoldersLink=Aggiungi {#APP_NAME} al menů contestuale delle cartelle +it.MissingGTK=Le librerie GTK+ v{#GTK_VERSION} (o superiore) non sono installate. Vuoi scaricarle adesso? +#endif + +[Files] +Source: .\win32-install-dir\*; DestDir: {app}; Flags: ignoreversion recursesubdirs; Tasks: ; Languages: + +[Tasks] +Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons} +;Name: desktopicon\common; Description: "For all users"; GroupDescription: {cm:AdditionalIcons}; Flags: exclusive +;Name: desktopicon\user; Description: "For the current user only"; GroupDescription: {cm:AdditionalIcons}; Flags: exclusive unchecked +Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked +Name: folderslink; Description: {cm:FoldersLink}; GroupDescription: {cm:AdditionalIcons} + +[Registry] +Root: HKCR; Subkey: Directory\shell\{#APP_NAME}; Flags: uninsdeletekey dontcreatekey +Root: HKCR; Subkey: Directory\shell\{#APP_NAME}; ValueType: string; ValueName: ; ValueData: {#APP_NAME}; Tasks: folderslink +Root: HKCR; Subkey: Directory\shell\{#APP_NAME}\Command; ValueType: string; ValueName: ; ValueData: """{app}\{#APP_NAME}.exe"" ""%1"""; Tasks: folderslink + +[Icons] +Name: {group}\{#APP_NAME} {#APP_VERSION}; Filename: {app}\{#APP_NAME}.exe; WorkingDir: {app} +Name: {group}\{cm:UninstallProgram,{#APP_NAME}}; Filename: {uninstallexe}; WorkingDir: {app} +Name: {group}\{cm:ProgramOnTheWeb,{#APP_NAME}}; Filename: {#APP_URL} +Name: {commondesktop}\{#APP_NAME}; Filename: {app}\{#APP_NAME}.exe; WorkingDir: {app}; Tasks: desktopicon + +[Run] +Filename: {app}\{#APP_NAME}.exe; Description: {cm:LaunchProgram,{#APP_NAME} {#APP_VERSION}}; Flags: nowait postinstall skipifsilent + +[Code] +// Parse a version string in a array of Integer ('1.2.3.4' -> [1,2,3,4]) +// -- taken from the Inno Setup forum -- +procedure DecodeVersion(i_oStrVersion: String; var o_panVersion: array of Integer); +var + l_nIndex : Integer; + l_nPos : Integer; + l_oStrTemp : String; +begin + o_panVersion := [0,0,0,0]; + + l_nIndex := 0; + while ((Length(i_oStrVersion) > 0) and (l_nIndex < 4)) do begin + l_nPos := pos('.', i_oStrVersion); + if l_nPos > 0 then begin + if l_nPos = 1 then begin + l_oStrTemp := '0' + end else begin + l_oStrTemp := Copy(i_oStrVersion, 1, l_nPos - 1); + end; + + o_panVersion[l_nIndex] := StrToIntDef(l_oStrTemp, 0); + l_nIndex := l_nIndex + 1; + i_oStrVersion := Copy(i_oStrVersion, l_nPos + 1, Length(i_oStrVersion)); + end else begin + o_panVersion[l_nIndex] := StrToIntDef(i_oStrVersion, 0); + i_oStrVersion := ''; + end; + end; +end; + +// Compare two array of Integer from their string counterpart +// -- taken from the Inno Setup forum -- +function CompareVersion(i_oStrVersionDest, i_oStrVersionFrom: String) : Integer; +var + l_anVersionDest : array of Integer; + l_anVersionFrom : array of Integer; + l_nIndex : Integer; +begin + SetArrayLength(l_anVersionDest, 4); + DecodeVersion(i_oStrVersionDest, l_anVersionDest); + + SetArrayLength(l_anVersionFrom, 4); + DecodeVersion(i_oStrVersionFrom, l_anVersionFrom); + + Result := 0; + l_nIndex := 0; + + while ((Result = 0) and (l_nIndex < 4)) do begin + if l_anVersionDest[l_nIndex] > l_anVersionFrom[l_nIndex] then begin + Result := 1 // i_oStrVersionDest > i_oStrVersionFrom + end else begin + if l_anVersionDest[l_nIndex] < l_anVersionFrom[l_nIndex] then begin + Result := -1 // i_oStrVersionDest < i_oStrVersionFrom + end else begin + Result := 0; // i_oStrVersionDest = i_oStrVersionFrom + end; + end; + + l_nIndex := l_nIndex + 1; + end; +end; + +// Checks, when setup starts, if the installed version of GTK+ mathches requirements +function InitializeSetup(): Boolean; +var + iRetVal: Integer; + sGtkVer: String; +begin + Result := True; + sGtkVer := '0.0.0.0'; + RegQueryStringValue(HKLM, 'SOFTWARE\GTK\2.0', 'Version', sGtkVer); + + if(CompareVersion(sGtkVer, '{#GTK_VERSION}') = -1) then begin + case MsgBox(CustomMessage('MissingGTK'), mbError, MB_YESNOCANCEL) of + IDYES: begin + Result := False; + ShellExec('open', '{#GTK_DOWNLOAD}', '', '', SW_SHOW, ewNoWait, iRetVal); + end + + IDCANCEL: begin + Result := False; + end + end + end +end; +[_ISTool] +UseAbsolutePaths=false -- cgit v1.2.3