Skip to content

Commit

Permalink
Create InnoSetup installer
Browse files Browse the repository at this point in the history
  • Loading branch information
TollyH committed Jun 24, 2024
1 parent 1fb0f69 commit 781ab38
Show file tree
Hide file tree
Showing 7 changed files with 2,013 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -379,3 +379,9 @@ FodyWeavers.xsd

# HxD bin backup files
*.bin.bak

# InnoSetup output
Installer/Output/

# InnoSetup environment-specific file
Installer/folders.txt
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[submodule "Scripts/whitespace"]
path = Scripts/whitespace
url = https://github.com/TollyH/whitespace
[submodule "Installer/InnoDependencyInstaller"]
path = Installer/InnoDependencyInstaller
url = https://github.com/DomGries/InnoDependencyInstaller
94 changes: 94 additions & 0 deletions Installer/AssEmbly Installer.iss
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
; IMPORTANT: These variables must be populated before compilation!
#define CLIRepositoryPath ""
#define VSCodeRepositoryPath ""
#define DebuggerGUIRepositoryPath ""
#define VBCCRepositoryPath ""
; Nothing beyond this point requires editing for compilation to work.

#define MyAppName "AssEmbly"
#define MyAppVersion "4.1.0"
#define MyAppPublisher "Tolly Hill"
#define MyAppURL "https://github.com/TollyH/AssEmbly"

#define VSCodeExtVersion "4.1.0"

#define public Dependency_Path_NetCoreCheck "InnoDependencyInstaller\dependencies\"
#include "InnoDependencyInstaller\CodeDependencies.iss"

[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={{635B54D8-4BE9-4D6F-83AC-30615F2CB0A2}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
; "ArchitecturesAllowed=x64compatible" specifies that Setup cannot run
; on anything but x64 and Windows 11 on Arm.
ArchitecturesAllowed=x64compatible
; "ArchitecturesInstallIn64BitMode=x64compatible" requests that the
; install be done in "64-bit mode" on x64 or Windows 11 on Arm,
; meaning it should use the native 64-bit Program Files directory and
; the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64compatible
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile={#CLIRepositoryPath}\Installer\LICENSE.rtf
InfoBeforeFile={#CLIRepositoryPath}\Installer\Pre-install.rtf
InfoAfterFile={#CLIRepositoryPath}\Installer\Post-install.rtf
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
PrivilegesRequiredOverridesAllowed=dialog
OutputBaseFilename=AssEmbly
Compression=lzma
SolidCompression=yes
WizardStyle=modern
ChangesEnvironment=yes

[Code]
function InitializeSetup: Boolean;
begin
Dependency_AddDotNet80Desktop;
Result := True;
end;
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Components]
Name: cli; Description: "{#MyAppName} Command-Line (Recommended)"; Types: full compact
Name: docs; Description: "Reference Manual"; Types: full compact
Name: vscode; Description: "Visual Studio Code Extension (VSCode must be installed on PATH)"; Types: full
Name: dbggui; Description: "Debugger GUI"; Types: full
Name: vbcc; Description: "C Compiler"; Types: full

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; Components: docs or dbggui
Name: "addpath"; Description: "Add {#MyAppName} folder to PATH (recommended)"; GroupDescription: "Advanced options:"; Components: cli or vbcc

[Files]
Source: "{#CLIRepositoryPath}\Publish\win-x64\{#MyAppName}.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: cli
Source: "{#CLIRepositoryPath}\Documentation\ReferenceManual\Build\*"; DestDir: "{app}\Documentation"; Flags: ignoreversion; Components: docs
Source: "{#VSCodeRepositoryPath}\{#MyAppName}-tolly-{#VSCodeExtVersion}.vsix"; DestDir: "{app}"; Flags: ignoreversion; Components: vscode
Source: "{#DebuggerGUIRepositoryPath}\Publish\{#MyAppName}.DebuggerGUI.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: dbggui
Source: "{#VBCCRepositoryPath}\bin\*"; DestDir: "{app}\vbcc"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: vbcc
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Registry]
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app};{app}\vbcc"

[Icons]
Name: "{group}\{#MyAppName} Reference Manual"; Filename: "{app}\Documentation"; Components: docs
Name: "{group}\{#MyAppName} Debugger GUI"; Filename: "{app}\{#MyAppName}.DebuggerGUI.exe"; Components: dbggui
Name: "{group}\{#MyAppName} GitHub Repository"; Filename: "{#MyAppURL}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{#MyAppName} Reference Manual"; Filename: "{app}\Documentation"; Tasks: desktopicon; Components: docs
Name: "{autodesktop}\{#MyAppName} Debugger GUI"; Filename: "{app}\{#MyAppName}.DebuggerGUI.exe"; Tasks: desktopicon; Components: dbggui

[Run]
Filename: "{app}\Documentation\ReferenceManual.html"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')} Reference Manual}"; Flags: nowait postinstall skipifsilent shellexec; Components: docs
Filename: "code"; Parameters: "--install-extension ""{app}\{#MyAppName}-tolly-{#VSCodeExtVersion}.vsix"""; Description: "Install VSCode extension"; Flags: shellexec waituntilterminated; Components: vscode
1 change: 1 addition & 0 deletions Installer/InnoDependencyInstaller
Loading

0 comments on commit 781ab38

Please sign in to comment.