165 lines
6.0 KiB
Plaintext
165 lines
6.0 KiB
Plaintext
; Script generated by the Inno Setup Script Wizard.
|
|
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
|
|
|
; Versioning
|
|
; we do some #ifdef conditionals because automated compilation passes these as arguments
|
|
|
|
#ifndef MyAppVersion
|
|
#define MyAppVersion "1.15.0"
|
|
#endif
|
|
#ifndef MyAppExpansion
|
|
#define MyAppExpansion "Vanguard 1.0"
|
|
#endif
|
|
|
|
; Other config
|
|
|
|
#define MyAppName "pyfa"
|
|
#define MyAppPublisher "pyfa"
|
|
#define MyAppURL "https://forums.eveonline.com/default.aspx?g=posts&t=466425&p=1"
|
|
#define MyAppExeName "pyfa.exe"
|
|
|
|
; What version starts with the new structure (1.x.0). This is used to determine if we run directory structure cleanup
|
|
#define VersionFlag 16
|
|
|
|
#ifndef MyOutputFile
|
|
#define MyOutputFile LowerCase(StringChange(MyAppName+'-'+MyAppVersion+'-'+MyAppExpansion+'-win-wx3', " ", "-"))
|
|
#endif
|
|
#ifndef MyAppDir
|
|
#define MyAppDir "pyfa"
|
|
#endif
|
|
#ifndef MyOutputDir
|
|
#define MyOutputDir "dist"
|
|
#endif
|
|
|
|
[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={{3DA39096-C08D-49CD-90E0-1D177F32C8AA}
|
|
AppName={#MyAppName}
|
|
AppVersion={#MyAppVersion} ({#MyAppExpansion})
|
|
AppPublisher={#MyAppPublisher}
|
|
AppPublisherURL={#MyAppURL}
|
|
AppSupportURL={#MyAppURL}
|
|
AppUpdatesURL={#MyAppURL}
|
|
DefaultDirName={pf}\{#MyAppName}
|
|
DefaultGroupName={#MyAppName}
|
|
AllowNoIcons=yes
|
|
LicenseFile={#MyAppDir}\LICENSE
|
|
OutputDir={#MyOutputDir}
|
|
OutputBaseFilename={#MyOutputFile}
|
|
SetupIconFile={#MyAppDir}\pyfa.ico
|
|
Compression=lzma
|
|
SolidCompression=yes
|
|
CloseApplications=yes
|
|
AppReadmeFile=https://github.com/pyfa-org/Pyfa/blob/v{#MyAppVersion}/readme.txt
|
|
|
|
[Languages]
|
|
Name: "english"; MessagesFile: "compiler:Default.isl"
|
|
|
|
[Tasks]
|
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
|
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
|
|
|
|
[Files]
|
|
Source: "{#MyAppDir}\pyfa.exe"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "{#MyAppDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
|
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
|
|
|
[Icons]
|
|
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
|
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
|
|
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
|
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
|
|
|
|
[Run]
|
|
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
|
|
|
[InstallDelete]
|
|
; These will delete left over generated files from 1.14 and below
|
|
Type: filesandordirs; Name: "{app}\eos"
|
|
Type: filesandordirs; Name: "{app}\gui"
|
|
Type: filesandordirs; Name: "{app}\service"
|
|
Type: filesandordirs; Name: "{app}\utils"
|
|
Type: files; Name: "{app}\*.pyo"
|
|
Type: files; Name: "{app}\*.pyc"
|
|
|
|
[Code]
|
|
|
|
function IsAppRunning(const FileName : string): Boolean;
|
|
var
|
|
FSWbemLocator: Variant;
|
|
FWMIService : Variant;
|
|
FWbemObjectSet: Variant;
|
|
begin
|
|
Result := false;
|
|
FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');
|
|
FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
|
|
FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName]));
|
|
Result := (FWbemObjectSet.Count > 0);
|
|
FWbemObjectSet := Unassigned;
|
|
FWMIService := Unassigned;
|
|
FSWbemLocator := Unassigned;
|
|
end;
|
|
|
|
function PrepareToInstall(var NeedsRestart: Boolean): String;
|
|
begin
|
|
if(IsAppRunning( 'pyfa.exe' )) then
|
|
begin
|
|
Result := 'Please close pyfa before continuing. When closed, please go back to the previous step and continue.';
|
|
end
|
|
else
|
|
begin
|
|
Result := '';
|
|
end
|
|
end;
|
|
|
|
function GetUninstallString: string;
|
|
var
|
|
sUnInstPath: string;
|
|
sUnInstallString: String;
|
|
begin
|
|
Result := '';
|
|
sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{{3DA39096-C08D-49CD-90E0-1D177F32C8AA}_is1'); //Your App GUID/ID
|
|
sUnInstallString := '';
|
|
if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
|
|
RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
|
|
Result := sUnInstallString;
|
|
end;
|
|
|
|
function IsUpgrade: Boolean;
|
|
begin
|
|
Result := (GetUninstallString() <> '');
|
|
end;
|
|
|
|
function InitializeSetup: Boolean;
|
|
var
|
|
V: Integer;
|
|
iResultCode: Integer;
|
|
sUnInstallString: string;
|
|
iOldVersion: Cardinal;
|
|
begin
|
|
Result := True; // in case when no previous version is found
|
|
if RegValueExists(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Uninstall\{3DA39096-C08D-49CD-90E0-1D177F32C8AA}_is1', 'UninstallString') then //Your App GUID/ID
|
|
begin
|
|
RegQueryDWordValue(HKEY_LOCAL_MACHINE,
|
|
'Software\Microsoft\Windows\CurrentVersion\Uninstall\{3DA39096-C08D-49CD-90E0-1D177F32C8AA}_is1',
|
|
'MinorVersion', iOldVersion);
|
|
if iOldVersion < {#VersionFlag} then // If old version with old structure is installed.
|
|
begin
|
|
V := MsgBox(ExpandConstant('An old version of pyfa was detected. Due to recent changes in the application structure, you must uninstall the previous version first. This will not affect your user data (saved fittings, characters, etc.). Do you want to uninstall now?'), mbInformation, MB_YESNO); //Custom Message if App installed
|
|
if V = IDYES then
|
|
begin
|
|
sUnInstallString := GetUninstallString();
|
|
sUnInstallString := RemoveQuotes(sUnInstallString);
|
|
Exec(ExpandConstant(sUnInstallString), '', '', SW_SHOW, ewWaitUntilTerminated, iResultCode);
|
|
Result := True; //if you want to proceed after uninstall
|
|
//Exit; //if you want to quit after uninstall
|
|
end
|
|
else
|
|
Result := False; //when older version present and not uninstalled
|
|
end;
|
|
end;
|
|
end;
|