git-lfs/script/windows-installer/inno-setup-git-lfs-installer.iss
Theodore Tsirpanis 417836ce53 Fix installer error on win32.
On 32-bit versions of Windows (in my case, Windows XP), the windows installer fails because it cannot expand the "pf64"constant.

By changing this very constant to "pf", it gets resolved properly on all versions of Windows.

See http://www.jrsoftware.org/ishelp/index.php?topic=consts for further explanation of the constants.
2016-05-04 15:52:35 +03:00

131 lines
4.4 KiB
Plaintext

; Script generated by the Inno Script Studio Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "Git LFS"
#define MyAppVersion "1.2.0"
#define MyAppPublisher "GitHub, Inc"
#define MyAppURL "https://git-lfs.github.com/"
#define MyAppFilePrefix "git-lfs-windows"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{286391DE-F778-44EA-9375-1B21AAA04FF0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
LicenseFile=..\..\LICENSE.md
OutputBaseFilename={#MyAppFilePrefix}-{#MyAppVersion}
OutputDir=..\..\
Compression=lzma
SolidCompression=yes
DefaultDirName={pf}\{#MyAppName}
UsePreviousAppDir=no
DirExistsWarning=no
DisableReadyPage=True
ArchitecturesInstallIn64BitMode=x64
ChangesEnvironment=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Run]
; Uninstalls the old Git LFS version that used a different installer in a different location:
; If we don't do this, Git will prefer the old version as it is in the same directory as it.
Filename: "{code:GetExistingGitInstallation}\git-lfs-uninstaller.exe"; Parameters: "/S"; Flags: skipifdoesntexist
[Files]
Source: ..\..\git-lfs-x64.exe; DestDir: "{app}"; Flags: ignoreversion; DestName: "git-lfs.exe"; AfterInstall: InstallGitLFS; Check: Is64BitInstallMode
Source: ..\..\git-lfs-x86.exe; DestDir: "{app}"; Flags: ignoreversion; DestName: "git-lfs.exe"; AfterInstall: InstallGitLFS; Check: not Is64BitInstallMode
[Registry]
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}"; Check: NeedsAddPath('{app}')
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "GIT_LFS_PATH"; ValueData: "{app}"
[Code]
// Uses cmd to parse and find the location of Git through the env vars.
// Currently only used to support running the uninstaller for the old Git LFS version.
function GetExistingGitInstallation(Value: string): string;
var
TmpFileName: String;
ExecStdOut: AnsiString;
ResultCode: integer;
begin
TmpFileName := ExpandConstant('{tmp}') + '\git_location.txt';
Exec(
ExpandConstant('{cmd}'),
'/C "for %i in (git.exe) do @echo. %~$PATH:i > "' + TmpFileName + '"',
'', SW_HIDE, ewWaitUntilTerminated, ResultCode
);
if LoadStringFromFile(TmpFileName, ExecStdOut) then begin
if not (Pos('Git\cmd', ExtractFilePath(ExecStdOut)) = 0) then begin
// Proxy Git path detected
Result := ExpandConstant('{pf}')+'\Git\mingw64\bin';
end else begin
Result := ExtractFilePath(ExecStdOut);
end;
DeleteFile(TmpFileName);
end;
end;
// Checks to see if we need to add the dir to the env PATH variable.
function NeedsAddPath(Param: string): boolean;
var
OrigPath: string;
ParamExpanded: string;
begin
//expand the setup constants like {app} from Param
ParamExpanded := ExpandConstant(Param);
if not RegQueryStringValue(HKEY_LOCAL_MACHINE,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path', OrigPath)
then begin
Result := True;
exit;
end;
// look for the path with leading and trailing semicolon and with or without \ ending
// Pos() returns 0 if not found
Result := Pos(';' + UpperCase(ParamExpanded) + ';', ';' + UpperCase(OrigPath) + ';') = 0;
if Result = True then
Result := Pos(';' + UpperCase(ParamExpanded) + '\;', ';' + UpperCase(OrigPath) + ';') = 0;
end;
// Runs the lfs initialization.
procedure InstallGitLFS();
var
ResultCode: integer;
begin
Exec(
ExpandConstant('{cmd}'),
ExpandConstant('/C ""{app}\git-lfs.exe" install"'),
'', SW_HIDE, ewWaitUntilTerminated, ResultCode
);
if not ResultCode = 1 then
MsgBox(
'Git LFS was not able to automatically initialize itself. ' +
'Please run "git lfs install" from the commandline.', mbInformation, MB_OK);
end;
// Event function automatically called when uninstalling:
function InitializeUninstall(): Boolean;
var
ResultCode: integer;
begin
Exec(
ExpandConstant('{cmd}'),
ExpandConstant('/C ""{app}\git-lfs.exe" uninstall"'),
'', SW_HIDE, ewWaitUntilTerminated, ResultCode
);
Result := True;
end;