aboutsummaryrefslogtreecommitdiffhomepage
path: root/easytag.win32.setup.iss
diff options
context:
space:
mode:
Diffstat (limited to 'easytag.win32.setup.iss')
-rwxr-xr-xeasytag.win32.setup.iss217
1 files changed, 217 insertions, 0 deletions
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