374 lines
20 KiB
Text
Executable file
374 lines
20 KiB
Text
Executable file
; Script generated by the Inno Setup Script Wizard.
|
|
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
|
;
|
|
; This script creates an installable FlightGear package for Win32 using the
|
|
; "Inno Setup" package builder. Inno Setup is free (but probably not open
|
|
; source?.) The official web site for this package building software is:
|
|
;
|
|
; http://www.jrsoftware.org/isinfo.php
|
|
;
|
|
; Note: the files must appear in the X: drive.
|
|
; You can do this with the command below:
|
|
;
|
|
; subst X: path_to_files
|
|
;
|
|
; For example:
|
|
;
|
|
; C:\> subst X: F:\Path\to\FlightGear\root
|
|
; C:\> subst X: F:\
|
|
;
|
|
|
|
#include "InstallConfig.iss"
|
|
|
|
#define InstallDir64 "X:\install\msvc140-64"
|
|
#define InstallCompositor64 "X:\install\msvc140-64\compositor"
|
|
#define OSG64InstallDir InstallDir64 + "\OpenSceneGraph"
|
|
#define OSG64PluginsDir OSG64InstallDir + "\bin\osgPlugins-" + OSGVersion
|
|
|
|
#define ThirdPartyDir "X:\windows-3rd-party\msvc140"
|
|
|
|
; we copy everything in install/<arch>/bin except these, which aren't
|
|
; useful to the end-user to ship
|
|
#define ExcludedBinaries "*smooth.exe,metar.exe"
|
|
|
|
[Setup]
|
|
AppId=FlightGear
|
|
AppName=FlightGear
|
|
AppPublisher=The FlightGear Team
|
|
OutputBaseFilename=FlightGear-{#FGVersion}{#FGDetails}
|
|
AppVerName=FlightGear v{#FGVersion}
|
|
AppPublisherURL=http://www.flightgear.org
|
|
AppSupportURL=http://www.flightgear.org
|
|
AppUpdatesURL=http://www.flightgear.org
|
|
DefaultDirName={pf}\FlightGear {#FGVersion}
|
|
UsePreviousAppDir=no
|
|
DefaultGroupName=FlightGear {#FGVersion}
|
|
UsePreviousGroup=no
|
|
LicenseFile=X:\flightgear\COPYING
|
|
Uninstallable=yes
|
|
SetupIconFile=X:\flightgear\package\flightgear.ico
|
|
VersionInfoVersion={#FGVersion}.0
|
|
InfoBeforeFile=X:\flightgear\package\windows\infobefore.txt
|
|
WizardImageFile=X:\flightgear\package\windows\setupimg.bmp
|
|
WizardImageStretch=No
|
|
WizardSmallImageFile=X:\flightgear\package\windows\setupsmall.bmp
|
|
VersionInfoCompany=The FlightGear Team
|
|
UninstallDisplayIcon={app}\bin\fgfs.exe
|
|
ArchitecturesInstallIn64BitMode=x64
|
|
ArchitecturesAllowed=x64
|
|
|
|
; Sign tool must be defined in the Inno Setup GUI, to avoid
|
|
; exposing the certificate password
|
|
; SignTool=fg_code_sign1
|
|
|
|
[Tasks]
|
|
; NOTE: The following entry contains English phrases ("Create a desktop icon" and "Additional icons"). You are free to translate them into another language if required.
|
|
Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"
|
|
|
|
[Files]
|
|
; NOTE: run subst X: F:\ (or whatever path the expanded tree resides at)
|
|
;Source: "X:\*.txt"; DestDir: "{app}"; Flags: ignoreversion
|
|
|
|
|
|
; 64 bits install
|
|
Source: "{#InstallDir64}\bin\*.*"; DestDir: "{app}\bin"; Excludes: "{#ExcludedBinaries}"; Flags: ignoreversion recursesubdirs; Check: Is64BitInstallMode
|
|
Source: "{#InstallCompositor64}\bin\fgfs.exe"; DestDir: "{app}\bin"; DestName: "fgfs-compositor.exe"; Excludes: "{#ExcludedBinaries}"; Flags: ignoreversion recursesubdirs; Check: Is64BitInstallMode
|
|
;locale only exists for fgrun - which has been disabled
|
|
;Source: "{#InstallDir64}\share\locale\*"; DestDir: "{app}\bin\locale"; Flags: ignoreversion recursesubdirs; Check: Is64BitInstallMode
|
|
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\zlib.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\OpenAL32.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\libpng.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\libcurl.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\libintl-8.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\sentry.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\crashpad_handler.exe"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\dbus-1-3.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\event_core.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
|
|
; Include the base package
|
|
#if IncludeData == "TRUE"
|
|
Source: "X:\fgdata\*.*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs skipifsourcedoesntexist
|
|
#endif
|
|
|
|
; 64 bits install
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osg.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgDB.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgGA.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgParticle.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgText.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgUtil.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgViewer.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgSim.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgFX.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\osg{#OSGSoNumber}-osgTerrain.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
Source: "{#OSG64InstallDir}\bin\ot{#OTSoNumber}-OpenThreads.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
|
|
|
|
Source: "{#OSG64PluginsDir}\osgdb_ac.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_osg.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_osga.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_3ds.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_mdl.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_jpeg.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_rgb.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_png.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_dds.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_txf.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_tiff.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
Source: "{#OSG64PluginsDir}\osgdb_freetype.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osg.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osganimation.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osgfx.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osgmanipulator.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osgparticle.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osgshadow.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osgsim.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osgterrain.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osgtext.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_serializers_osgvolume.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_deprecated_osg.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
;Source: "{#OSG64PluginsDir}\osgdb_deprecated_osgparticle.dll"; DestDir: "{app}\bin\osgPlugins-{#OSGVersion}"; Flags: skipifsourcedoesntexist; Check: Is64BitInstallMode
|
|
|
|
[Dirs]
|
|
; Make the user installable scenery directory
|
|
Name: "{userdocs}\FlightGear\Aircraft"; Permissions: everyone-modify; Check: not DirExists(ExpandConstant('{userdocs}\FlightGear\Aircraft'))
|
|
Name: "{userdocs}\FlightGear\TerraSync"; Permissions: everyone-modify; Check: not DirExists(ExpandConstant('{userdocs}\FlightGear\TerraSync'))
|
|
Name: "{userdocs}\FlightGear\Custom Scenery"; Permissions: everyone-modify; Check: not DirExists(ExpandConstant('{userdocs}\FlightGear\Custom Scenery'))
|
|
|
|
[Icons]
|
|
Name: "{userdesktop}\FlightGear {#FGVersion}"; Filename: "{app}\bin\fgfs.exe"; Parameters: "--launcher"; WorkingDir: "{app}\bin"; Tasks: desktopicon;
|
|
Name: "{group}\FlightGear"; Filename: "{app}\bin\fgfs.exe"; Parameters: "--launcher"; WorkingDir: "{app}\bin";
|
|
Name: "{group}\FlightGear - Compositor"; Filename: "{app}\bin\fgfs-compositor.exe"; Parameters: "--launcher"; WorkingDir: "{app}\bin";
|
|
Name: "{group}\FlightGear Manual"; Filename: "{app}\data\Docs\getstart.pdf"
|
|
Name: "{group}\FlightGear Documentation"; Filename: "{app}\data\Docs\index.html"
|
|
Name: "{group}\Flightgear Wiki"; Filename: "http://wiki.flightgear.org"
|
|
Name: "{group}\Tools\Uninstall FlightGear"; Filename: "{uninstallexe}"
|
|
Name: "{group}\Tools\fgjs"; Filename: "cmd"; Parameters: "/k fgjs.exe ""--fg-root={app}\data"""; WorkingDir: "{app}\bin"
|
|
Name: "{group}\Tools\yasim"; Filename: "cmd"; Parameters: "/k ""{app}\bin\yasim.exe"" -h"; WorkingDir: "{app}\bin"
|
|
Name: "{group}\Tools\fgpanel"; Filename: "cmd"; Parameters: "/k ""{app}\bin\fgpanel.exe"" -h"; WorkingDir: "{app}\bin"
|
|
Name: "{group}\Tools\FGCom"; Filename: "{app}\bin\fgcom.exe"; WorkingDir: "{app}\bin"
|
|
Name: "{group}\Tools\FGCom-testing"; Filename: "{app}\bin\fgcom.exe"; Parameters: "--frequency=910"; WorkingDir: "{app}\bin"
|
|
Name: "{group}\Tools\Explore Documentation Folder"; Filename: "{app}\data\Docs"
|
|
|
|
[Code]
|
|
const
|
|
NET_FW_SCOPE_ALL = 0;
|
|
NET_FW_IP_VERSION_ANY = 2;
|
|
NET_FW_ACTION_ALLOW = 1;
|
|
NET_FW_RULE_DIR_ALL = 0;
|
|
NET_FW_RULE_DIR_IN = 1;
|
|
NET_FW_RULE_DIR_OUT = 2;
|
|
NET_FW_IP_PROTOCOL_ALL = 0;
|
|
NET_FW_IP_PROTOCOL_TCP = 6;
|
|
NET_FW_IP_PROTOCOL_UDP = 17;
|
|
NET_FW_PROFILE2_DOMAIN = 1;
|
|
NET_FW_PROFILE2_PRIVATE = 2;
|
|
NET_FW_PROFILE2_PUBLIC = 4;
|
|
|
|
procedure URLLabelOnClick(Sender: TObject);
|
|
var
|
|
ErrorCode: Integer;
|
|
begin
|
|
ShellExec('open', 'http://www.flightgear.org', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
|
|
end;
|
|
|
|
procedure CreateURLLabel(ParentForm: TSetupForm; CancelButton: TNewButton);
|
|
var
|
|
URLLabel: TNewStaticText;
|
|
begin
|
|
URLLabel := TNewStaticText.Create(ParentForm);
|
|
URLLabel.Caption := 'www.flightgear.org';
|
|
URLLabel.Cursor := crHand;
|
|
URLLabel.OnClick := @URLLabelOnClick;
|
|
URLLabel.Parent := ParentForm;
|
|
{ Alter Font *after* setting Parent so the correct defaults are inherited first }
|
|
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
|
|
URLLabel.Font.Color := clBlue;
|
|
URLLabel.Top := CancelButton.Top + CancelButton.Height - URLLabel.Height - 2;
|
|
URLLabel.Left := ScaleX(20);
|
|
end;
|
|
|
|
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
|
|
var
|
|
S: String;
|
|
begin
|
|
S := '';
|
|
S := S + MemoDirInfo + NewLine + NewLine;
|
|
S := S + MemoGroupInfo + NewLine + NewLine;
|
|
S := S + MemoTasksInfo + NewLine + NewLine;
|
|
|
|
Result := S;
|
|
end;
|
|
|
|
procedure AddBasicFirewallException(AppName, FileName: String);
|
|
var
|
|
FirewallObject: variant;
|
|
RuleObject: variant;
|
|
begin
|
|
try
|
|
FirewallObject := CreateOleObject('HNetCfg.FwMgr');
|
|
RuleObject := CreateOleObject('HNetCfg.FwAuthorizedApplication');
|
|
RuleObject.ProcessImageFileName := FileName;
|
|
RuleObject.Name := AppName;
|
|
RuleObject.Scope := NET_FW_SCOPE_ALL;
|
|
RuleObject.IpVersion := NET_FW_IP_VERSION_ANY;
|
|
RuleObject.Enabled := true;
|
|
FirewallObject.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(RuleObject);
|
|
except
|
|
end;
|
|
end;
|
|
|
|
procedure AddAdvancedFirewallException(AppName, AppDescription, FileName: String; Protocol: Integer; LocalPorts, RemotePorts: String; Direction: Integer);
|
|
var
|
|
FirewallObject: variant;
|
|
RuleObject: variant;
|
|
begin
|
|
try
|
|
FirewallObject := CreateOleObject('HNetCfg.FwPolicy2');
|
|
RuleObject := CreateOleObject('HNetCfg.FWRule');
|
|
RuleObject.Name := AppName;
|
|
RuleObject.Description := AppDescription;
|
|
RuleObject.ApplicationName := FileName;
|
|
if (Protocol <> NET_FW_IP_PROTOCOL_ALL) then
|
|
RuleObject.Protocol := Protocol;
|
|
if (LocalPorts <> '') then
|
|
RuleObject.LocalPorts := LocalPorts;
|
|
if (RemotePorts <> '') then
|
|
RuleObject.RemotePorts := RemotePorts;
|
|
if (Direction <> NET_FW_RULE_DIR_ALL) then
|
|
RuleObject.Direction := Direction;
|
|
RuleObject.Enabled := true;
|
|
RuleObject.Grouping := 'FlightGear';
|
|
RuleObject.Profiles := NET_FW_PROFILE2_DOMAIN + NET_FW_PROFILE2_PRIVATE + NET_FW_PROFILE2_PUBLIC;
|
|
RuleObject.Action := NET_FW_ACTION_ALLOW;
|
|
RuleObject.RemoteAddresses := '*';
|
|
FirewallObject.Rules.Add(RuleObject);
|
|
except
|
|
end;
|
|
end;
|
|
|
|
procedure RemoveFirewallException(AppName, FileName: String);
|
|
var
|
|
FirewallObject: variant;
|
|
Version: TWindowsVersion;
|
|
begin
|
|
GetWindowsVersionEx(Version);
|
|
try
|
|
if (Version.Major >= 6) then
|
|
begin
|
|
FirewallObject := CreateOleObject('HNetCfg.FwPolicy2');
|
|
FirewallObject.Rules.Remove(AppName);
|
|
end
|
|
else if (Version.Major = 5) and (((Version.Minor = 1) and (Version.ServicePackMajor >= 2)) or ((Version.Minor = 2) and (Version.ServicePackMajor >= 1))) then
|
|
begin
|
|
FirewallObject := CreateOleObject('HNetCfg.FwMgr');
|
|
FirewallObject.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(FileName);
|
|
end;
|
|
except
|
|
end;
|
|
end;
|
|
|
|
var
|
|
UninstallCheckCleanPage: TNewNotebookPage;
|
|
UninstallBackButton: TNewButton;
|
|
UninstallNextButton: TNewButton;
|
|
DoCleanCheckbox : TNewCheckBox;
|
|
CleanHelp : TNewStaticText;
|
|
|
|
procedure InitializeUninstallProgressForm();
|
|
begin
|
|
UninstallProgressForm
|
|
|
|
UninstallCheckCleanPage := TNewNotebookPage.Create(UninstallProgressForm);
|
|
UninstallCheckCleanPage.Notebook := UninstallProgressForm.InnerNotebook;
|
|
UninstallCheckCleanPage.Parent := UninstallProgressForm.InnerNotebook;
|
|
UninstallCheckCleanPage.Align := alClient
|
|
|
|
DoCleanCheckbox := TNewCheckBox.Create(UninstallProgressForm);
|
|
DoCleanCheckbox.Parent := UninstallCheckCleanPage;
|
|
DoCleanCheckbox.Caption := 'Remove all settings, downloaded scenery and aircraft';
|
|
DoCleanCheckbox.Left := ScaleX(10);
|
|
DoCleanCheckbox.Top := ScaleY(10);
|
|
|
|
DoCleanCheckbox.Width := UninstallProgressForm.InnerNotebook.Width - ScaleX(20)
|
|
DoCleanCheckbox.Height := ScaleY(30)
|
|
|
|
CleanHelp := TNewStaticText.Create(UninstallProgressForm);
|
|
CleanHelp.Parent := UninstallCheckCleanPage;
|
|
CleanHelp.Top := DoCleanCheckbox.Top + DoCleanCheckbox.Height + ScaleY(10);
|
|
CleanHelp.Left := DoCleanCheckbox.Left;
|
|
CleanHelp.Width := DoCleanCheckbox.Width;
|
|
CleanHelp.Height := CleanHelp.AdjustHeight();
|
|
|
|
CleanHelp.WordWrap := True;
|
|
CleanHelp.Caption := 'FlightGear stores some settings in your user folder. In addition, ' +
|
|
'scenery or aircraft data may have been downloaded to the download directory. ' +
|
|
'To completely remove all these files, select this option.';
|
|
|
|
UninstallProgressForm.InnerNotebook.ActivePage := UninstallCheckCleanPage;
|
|
|
|
UninstallNextButton := TNewButton.Create(UninstallProgressForm);
|
|
UninstallNextButton.Caption := 'Next';
|
|
UninstallNextButton.Parent := UninstallProgressForm;
|
|
UninstallNextButton.Left :=
|
|
UninstallProgressForm.CancelButton.Left -
|
|
UninstallProgressForm.CancelButton.Width -
|
|
ScaleX(10);
|
|
UninstallNextButton.Top := UninstallProgressForm.CancelButton.Top;
|
|
UninstallNextButton.Width := UninstallProgressForm.CancelButton.Width;
|
|
UninstallNextButton.Height := UninstallProgressForm.CancelButton.Height;
|
|
UninstallNextButton.ModalResult := mrOk;
|
|
|
|
UninstallProgressForm.CancelButton.Enabled := True;
|
|
UninstallProgressForm.CancelButton.ModalResult := mrCancel;
|
|
|
|
if UninstallProgressForm.ShowModal = mrCancel then Abort;
|
|
|
|
UninstallProgressForm.InnerNotebook.ActivePage := UninstallProgressForm.InstallingPage;
|
|
end;
|
|
|
|
|
|
procedure CurStepChanged(CurStep: TSetupStep);
|
|
var
|
|
Version: TWindowsVersion;
|
|
begin
|
|
if CurStep = ssPostInstall then
|
|
begin
|
|
GetWindowsVersionEx(Version);
|
|
if (Version.Major >= 6) then
|
|
begin
|
|
{ IN and OUT rules must be specified separately, otherwise the firewall will create only the IN rule }
|
|
AddAdvancedFirewallException('FlightGear', 'Allows FlightGear to send and receive data over the multiplayer network and to get METARs.', ExpandConstant('{app}') + '\bin\fgfs.exe', NET_FW_IP_PROTOCOL_ALL, '', '', NET_FW_RULE_DIR_IN);
|
|
AddAdvancedFirewallException('FlightGear', 'Allows FlightGear to send and receive data over the multiplayer network and to get METARs.', ExpandConstant('{app}') + '\bin\fgfs.exe', NET_FW_IP_PROTOCOL_ALL, '', '', NET_FW_RULE_DIR_OUT);
|
|
AddAdvancedFirewallException('FlightGear FGCom', 'Allows FGCom to establish a connection to FlightGear and the VoIP server for voice ATC communication.', ExpandConstant('{app}') + '\bin\fgcom.exe', NET_FW_IP_PROTOCOL_ALL, '', '', NET_FW_RULE_DIR_IN);
|
|
AddAdvancedFirewallException('FlightGear FGCom', 'Allows FGCom to establish a connection to FlightGear and the VoIP server for voice ATC communication.', ExpandConstant('{app}') + '\bin\fgcom.exe', NET_FW_IP_PROTOCOL_ALL, '', '', NET_FW_RULE_DIR_OUT);
|
|
end
|
|
else if (Version.Major = 5) and (((Version.Minor = 1) and (Version.ServicePackMajor >= 2)) or ((Version.Minor = 2) and (Version.ServicePackMajor >= 1))) then
|
|
begin
|
|
{ The Windows XP/Server 2003 firewall does not block outgoing connections at all, so only listening processes should be added }
|
|
AddBasicFirewallException('FlightGear', ExpandConstant('{app}') + '\bin\fgfs.exe');
|
|
AddBasicFirewallException('FlightGear FGCom', ExpandConstant('{app}') + '\bin\fgcom.exe');
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
|
var ResultCode: Integer;
|
|
begin
|
|
if CurUninstallStep = usUninstall then
|
|
begin
|
|
if DoCleanCheckbox.Checked = True then
|
|
begin
|
|
Log('Running clean uninstall');
|
|
Exec(ExpandConstant('{app}\bin\fgfs.exe'), '--uninstall', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
|
Log('clean uninstall completed');
|
|
end;
|
|
end;
|
|
|
|
if CurUninstallStep = usPostUninstall then
|
|
begin
|
|
RemoveFirewallException('FlightGear', ExpandConstant('{app}') + '\bin\fgfs.exe');
|
|
RemoveFirewallException('FlightGear FGCom', ExpandConstant('{app}') + '\bin\fgcom.exe');
|
|
end;
|
|
end;
|