Installers



  • Ok, quick question. It seems clear from my recent beta tester experience that the only practical way to deliver a HISE-based plug-in product is to provide it inside some sort of installer.

    So whats everybody using to build their installers with?

    on Windows?

    on Mac?

    any suggestions?



  • Whitebox packages on macOS and Inno Setup on Windows.

    Take a look at David‘s Woodwind library, I added a build script there that uses both formats.



  • And a bash script on GNU/Linux (if anyone cares 😛 )

    https://makeself.io



  • For windows I prefer Inno Setup, for Mac Packages 🙂



  • @Christoph-Hart yep this look exactly what I (and I think everyone else) is looking for, tell me more about this build script ☺



  • OK so before I head off and learn yet another (two) scripting language, any one have a script they'd be prepared to share?



  • @Lindon said in Installers:

    OK so before I head off and learn yet another (two) scripting language, any one have a script they'd be prepared to share?

    @Christoph-Hart said in Installers:

    Take a look at David‘s Woodwind library, I added a build script there that uses both formats.

    https://github.com/davidhealey/sofiawoodwinds/blob/master/build.sh
    https://github.com/davidhealey/sofiawoodwinds/blob/master/build.bat



  • @d-healey yeah, but maybe I'm not being clear.

    I'd like to build my own installer with inno (on windows) and you kindly point me at a batch script that seems to build an installer - but it uses (I think) a file called WinInstaller.iss - which is ( I hope) the script file. But that script file I cant find anywhere on your github.



  • @Lindon I'm about to start trying out the scripts myself. I think that the WinInstaller.iss script is generated by this HISE CLI command %hise_path% create-win-installer which is part of the script I linked to. In the HISE source code there is a wininstallertemplate.cpp file that I believe is involved.



  • @d-healey so then not really any use....any one else prepared to share a windows inno installer script?



  • @Lindon Why no use? Doesn't the wininstaller.iss work? Or do you want to have a custom script?



  • I just tested the script and it generates the wininstaller.iss as expected

    [Setup]
    #define AppName "Michaelas Harp"
    AppName={#AppName}
    AppVersion=1.0.0
    
    DefaultDirName={pf}\Libre Wave\Michaelas Harp
    DefaultGroupName={#AppName}
    Compression=lzma2
    SolidCompression=yes
    OutputDir=.\build
    ArchitecturesInstallIn64BitMode=x64
    OutputBaseFilename={#AppName} Installer 1.0.0
    LicenseFile=EULA.txt
    PrivilegesRequired=admin
    
    SetupLogging=yes
    ChangesAssociations=no
    
    [Types]
    Name: "full"; Description: "Full installation"
    Name: "custom"; Description: "Custom installation"; Flags: iscustom
    
    [Dirs]
    Name: "{app}\"; Permissions: users-modify powerusers-modify admins-modify system-modify
    
    [Components]
    Name: "app"; Description: "{#AppName} Standalone application"; Types: full custom;
    Name: "vst2_32"; Description: "{#AppName} 32-bit VSTi Plugin"; Types: full custom;
    Name: "vst2_64"; Description: "{#AppName} 64-bit VSTi Plugin"; Types: full custom; Check: Is64BitInstallMode;
    ;BEGIN_AAX
    Name: "aax"; Description: "{#AppName} AAX Plugin"; Types: full custom;
    ;END_AAX
    
    [Files]
    
    ; Standalone
    Source: "build\App\{#AppName} x86.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: app; Check: not Is64BitInstallMode
    Source: "build\App\{#AppName} x64.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: app; Check: Is64BitInstallMode
    
    ; VST
    Source: "build\VST\{#AppName} x86.dll"; DestDir: "{code:GetVST2Dir_32}"; Flags: ignoreversion; Components: vst2_32; Check: not Is64BitInstallMode
    
    Source: "build\VST\{#AppName} x86.dll"; DestDir: "{code:GetVST2Dir_32}"; Flags: ignoreversion; Components: vst2_32; Check: Is64BitInstallMode
    Source: "build\VST\{#AppName} x64.dll"; DestDir: "{code:GetVST2Dir_64}"; Flags: ignoreversion; Components: vst2_64; Check: Is64BitInstallMode
    
    ;BEGIN_AAX
    Source: "build\AAX\{#AppName}.aaxplugin\*.*"; DestDir: "{cf}\Avid\Audio\Plug-Ins\{#AppName}.aaxplugin\"; Flags: ignoreversion recursesubdirs; Components: aax
    ;END_AAX
    
    [Icons]
    Name: "{group}\{#AppName}"; Filename: "{app}\{#AppName} x64.exe"; Check: Is64BitInstallMode
    Name: "{group}\{#AppName}"; Filename: "{app}\{#AppName} x86.exe"; Check: not Is64BitInstallMode
    Name: "{group}\Uninstall {#AppName}"; Filename: "{app}\unins000.exe"
    
    [Code]
    var
      OkToCopyLog : Boolean;
      VST2DirPage_32: TInputDirWizardPage;
      VST2DirPage_64: TInputDirWizardPage;
    
    procedure InitializeWizard;
    
    begin
    
      if IsWin64 then begin
        VST2DirPage_64 := CreateInputDirPage(wpSelectDir,
        'Confirm 64-Bit VST2 Plugin Directory', '',
        'Select the folder in which setup should install the 64-bit VST2 Plugin, then click Next.',
        False, '');
        VST2DirPage_64.Add('');
        VST2DirPage_64.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\VST,VSTPluginsPath|{pf}\Steinberg\VSTPlugins}\');
    
        VST2DirPage_32 := CreateInputDirPage(wpSelectDir,
          'Confirm 32-Bit VST2 Plugin Directory', '',
          'Select the folder in which setup should install the 32-bit VST2 Plugin, then click Next.',
          False, '');
        VST2DirPage_32.Add('');
        VST2DirPage_32.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\WOW6432NODE\VST,VSTPluginsPath|{pf32}\Steinberg\VSTPlugins}\');
      end else begin
        VST2DirPage_32 := CreateInputDirPage(wpSelectDir,
          'Confirm 32-Bit VST2 Plugin Directory', '',
          'Select the folder in which setup should install the 32-bit VST2 Plugin, then click Next.',
          False, '');
        VST2DirPage_32.Add('');
        VST2DirPage_32.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\VST,VSTPluginsPath|{pf}\Steinberg\VSTPlugins}\');
      end;
    end;
    
    function GetVST2Dir_32(Param: String): String;
    begin
      Result := VST2DirPage_32.Values[0]
    end;
    
    function GetVST2Dir_64(Param: String): String;
    begin
      Result := VST2DirPage_64.Values[0]
    end;
    
    procedure CurStepChanged(CurStep: TSetupStep);
    begin
      if CurStep = ssDone then
        OkToCopyLog := True;
    end;
    
    procedure DeinitializeSetup();
    begin
      if OkToCopyLog then
        FileCopy (ExpandConstant ('{log}'), ExpandConstant ('{app}\InstallationLogFile.log'), FALSE);
      RestartReplace (ExpandConstant ('{log}'), '');
    end;
    
    [UninstallDelete]
    Type: files; Name: "{app}\InstallationLogFile.log"
    

    If you want to create the wininstaller.iss without using the full build script you can just run it on the HISE CLI with the command HISE create-win-installer

    0636f052-7138-4eab-975a-f6dc0bee5b9d-image.png



  • @d-healey OK thanks.



  • @d-healey said in Installers:

    define AppName "Michaelas Harp"

    yeah but how does it know whihc of my apps to build?



  • Put the script from Christoph - build.bat in your project's folder. Then run it from the terminal and HISE will compile and generate the .iss file for that project and build the installer in one go.

    You will need to set the project path and HISE path in the build.bat file. The instructions are at the top of the file.



  • @d-healey so now I have to have git installed?

    1. You need to have the following tools installed: git, InnoSetup


  • @Lindon I have git installed anyway but I can't see any mention of git in that script so perhaps it isn't required. It could be that there is some other command that HISE runs that makes use of git to prevent files being overwritten but hard to say without testing it.

    If you just want to generate your own .iss script though you can use the command I posted above and it will create the installer script for the last project loaded in HISE (I think) or you can first load a project into HISE using the CLI with this command:

    HISE set_project_folder "-p:replacewithyourprojectpath"



  • @d-healey nope..

    C:\Users\Lindon\Desktop\HISE-master\projects\standalone\Builds\VisualStudio2017\x64\Release\App>HISE create-win-installer
    'HISE' is not recognized as an internal or external command,
    operable program or batch file.



  • Are you using HISE 2.1? And did you build it from source? It could be that there is an option that needs to be enabled in Projucer when building HISE to enable the CLI



  • You need to add the directory where HISE.exe is located to the environment variable PATH. Welcome to the joyful world of build automation 🙂


Log in to reply
 

8
Online

522
Users

1.9k
Topics

14.8k
Posts