417836ce53
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.
131 lines
4.4 KiB
Plaintext
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;
|
|
|