Installers
-
@d-healey said in Installers:
I have the ultimate copy restriction solution, GNU GPL ;) notice how no-one has "pirated" HISE. :p
-- how would you know?
-
@Lindon Well you're allowed to copy and redistribute it so there is no copyright infringement (aka piracy). If someone took the HISE source code and used it in a proprietary app without permission that would be copyright infringement but would it be piracy?
-
Actually I found a installer of HISE 1.5.0 on some warez site a few months back :)
EDIT: Found it: https://www.wattpad.com/755629828-complete-new-hart-instruments-sampler-engine-hise
Disclaimer: if you click on it you'll be downloading a spurious .dmg which most likely will contain some nasty malware.
-
@Christoph-Hart Yeah but they're allowed to modify it and redistribute, even if the modification includes adding malware :P
-
But since they are not publishing the source code of the malware, it's a clear case of copy right infringement. GNU Lawyer team, please take over...
-
@Christoph-Hart Oh good point, but they only have to provide the source on request, have you requested it? lol that would be funny.
-
I need help with my installer.
I made feature list where we can select components to install but in next pages order is reversed.
Check list looks like
- 32 Plugin
- 64 Plugin
- Samples
and if I select everything to install next pages are in this order
- Samples
- 64 Plugin
- 32 Plugin
How can I keep the original order?
Here's my code
[Setup] #define AppName "My Plugin" #define DevDir "Developer" AppName={#AppName} AppPublisher={#DevDir} AppVersion=1.0.0 AppId={{C60E272E-F521C-491F-97A0-D61644CAACE3} DefaultDirName={pf}\{#DevDir}\{#AppName} DefaultGroupName={#AppName} Compression=lzma2 SolidCompression=yes OutputDir=.\installerbuild ArchitecturesInstallIn64BitMode=x64 OutputBaseFilename={#AppName} Installer 1.0.1 ;LicenseFile=".\installerAssets\EULA.txt" PrivilegesRequired=admin ;WizardSmallImageFile=".\installerAssets\Logo55x58.bmp" ;WizardImageFile=".\installerAssets\Logo164x314.bmp" DisableWelcomePage=no DisableDirPage=yes 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: "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; Name: "samples"; Description: "{#AppName} Sample Set"; Types: full custom; [Files] ; VST Source: "Binaries\Compiled\VST\{#AppName} x86.txt"; DestDir: "{code:Get32Dir|0}\{#DevDir}"; Flags: ignoreversion; Components: vst2_32; Check: Source: "Binaries\Compiled\VST\{#AppName} x64.txt"; DestDir: "{code:Get64Dir|0}\{#DevDir}"; Flags: ignoreversion; Components: vst2_64; Check: Is64BitInstallMode ; SAMPLE FILE Source: "{#AppName}_1_0_0_Samples.hr1"; DestDir: "{code:GetSamplesDir|0}"; Flags: ignoreversion; Components: samples; [Icons] Name: "{group}\Uninstall {#AppName}"; Filename: "{app}\unins000.exe" [Code] var vst2_32: TInputDirWizardPage;function SkipEvent64 (Sender: TWizardPage): Boolean; begin Result := not IsComponentSelected('vst2_64'); end; var vst2_64: TInputDirWizardPage;function SkipEvent32 (Sender: TWizardPage): Boolean; begin Result := not IsComponentSelected('vst2_32'); end; var samples: TInputDirWizardPage;function SkipEventSamples (Sender: TWizardPage): Boolean; begin Result := not IsComponentSelected('samples'); end; function Get32Dir(Param: String): String; begin Result := vst2_32.Values[StrToInt(Param)]; end; function Get64Dir(Param: String): String; begin Result := vst2_64.Values[StrToInt(Param)]; end; function GetSamplesDir(Param: String): String; begin Result := samples.Values[StrToInt(Param)]; end; procedure InitializeWizard; begin vst2_32 := CreateInputDirPage(wpSelectComponents, 'Select a location', 'Where should the plug-in be installed?', 'Choose the place where you will install {#AppName} 32-bit. Its best to choose the folder where your other plugins are located. Click next to continue', False, 'vst2_32'); vst2_32.Add('Choose a place for {#AppName} 32-bit'); vst2_32.Values[0] := GetPreviousData('Directory1', ExpandConstant('{pf}\Steinberg\VSTPlugins\{#DevDir}\{#AppName} 32-bit')); vst2_32.OnShouldSkipPage := @SkipEvent32; vst2_64 := CreateInputDirPage(wpSelectComponents, 'Select a location', 'Where should the plug-in be installed?', 'Choose the place where you will install {#AppName} 64-bit. Its best to choose the folder where your other plugins are located. Click next to continue', False, 'vst2_64'); vst2_64.Add('Choose a place for {#AppName} 64-bit'); vst2_64.Values[0] := GetPreviousData('Directory2', ExpandConstant('{pf}\Steinberg\VSTPlugins\{#DevDir}\{#AppName} 64-bit')); vst2_64.OnShouldSkipPage := @SkipEvent64; samples := CreateInputDirPage(wpSelectComponents, 'Select a location', 'Where should the samples be installed?', 'Choose the place where you will install {#AppName} samples. Click next to continue', False, 'samples'); samples.Add('Choose a place for {#AppName} Samples'); samples.Values[0] := GetPreviousData('Directory3', ExpandConstant('{sd}\{#AppName} Samples')); samples.OnShouldSkipPage := @SkipEventSamples; end; procedure RegisterPreviousData(PreviousDataKey: Integer); begin SetPreviousData(PreviousDataKey, 'Directory1', vst2_32.Values[0]); SetPreviousData(PreviousDataKey, 'Directory2', vst2_64.Values[0]); SetPreviousData(PreviousDataKey, 'Directory3', samples.Values[0]); end;
-
Samples won't be part of your installer unless your instrument is tiny.
-
@orange said in Installers:
By the way if anyone know how to add aax icons to the installation files or how to create folders with aax icons, it would be good to share from here.
Circling back to this one. To get the AAX icon to appear on your plugin in Windows you have to run the following command:
attrib +s "MyPluginName.aaxplugin"
@Christoph-Hart is it possible to have the Export function automatically set this file attribute?
-
@dustbro said in Installers:
To get the AAX icon to appear on your plugin in Windows you have to run the following command:
Where do you run that?
-
-
@dustbro HISE doesn't actually export the plugin, it generates a JUCE project which generates a Visual Studio project, then Visual Studio does the export. So I don't see how HISE could do this task, but it might be possible to have it written to a script that runs after the compilation is complete.
-
@d-healey Back to square one... Inno seems to strip this property when the file is installed, so the icon disappears again :/
EDIT:
The installer actually appears to ignore hidden files? Plugin.ico and Desktop.ini are missing after inno install.Also just noticed there's a script in the AAX sdk that changes all attributes for you.
AAX\Utilities\CreatePackage.bat
IF EXIST %OutDir% GOTO OUTDIR_EXISTS mkdir %OutDir% :OUTDIR_EXISTS IF EXIST %OutDir%\..\Win32 GOTO Win32_EXISTS mkdir %OutDir%\..\Win32 :Win32_EXISTS IF EXIST %OutDir%\..\x64 GOTO X64_EXISTS mkdir %OutDir%\..\x64 :X64_EXISTS IF EXIST %OutDir%\..\Resources GOTO RESOURCES_EXISTS mkdir %OutDir%\..\Resources :RESOURCES_EXISTS echo Set Folder Icon IF EXIST %OutDir%\..\..\PlugIn.ico GOTO ICON_EXISTS copy /Y %IconSource% %OutDir%\..\..\PlugIn.ico > NUL :ICON_EXISTS attrib -r %OutDir%\..\.. attrib -h -r -s %OutDir%\..\..\desktop.ini echo [.ShellClassInfo] > %OutDir%\..\..\desktop.ini echo IconResource=PlugIn.ico,0 >> %OutDir%\..\..\desktop.ini echo ;For compatibility with Windows XP >> %OutDir%\..\..\desktop.ini echo IconFile=PlugIn.ico >> %OutDir%\..\..\desktop.ini echo IconIndex=0 >> %OutDir%\..\..\desktop.ini attrib +h +r +s %OutDir%\..\..\PlugIn.ico attrib +h +r +s %OutDir%\..\..\desktop.ini attrib %OutDir%\..\..
-
Found some useful info to retain attributes for AAX in Inno
https://www.kvraudio.com/forum/viewtopic.php?t=489036Yes, you have to be careful when "recreating" the AAX. It's all about flags. Definitely works. We do this: [Dirs] Name: "{code:GetAAXDir_64}\{#MyBinaryName}.aaxplugin"; Check: Is64BitInstallMode; Components:aax_64; Attribs: system; [Files] ; AAX Source: "{#MyBinaryName}.aaxplugin\*"; DestDir: "{code:GetAAXDir_64}\{#MyBinaryName}.aaxplugin"; Flags:ignoreversion createallsubdirs recursesubdirs; Check: Is64BitInstallMode; Components:aax_64; Source: "{#MyBinaryName}.aaxplugin\desktop.ini"; DestDir: "{code:GetAAXDir_64}\{#MyBinaryName}.aaxplugin"; Flags:ignoreversion; Attribs: hidden system; Check: Is64BitInstallMode; Components:aax_64; Source: "{#MyBinaryName}.aaxplugin\PlugIn.ico"; DestDir: "{code:GetAAXDir_64}\{#MyBinaryName}.aaxplugin"; Flags:ignoreversion; Attribs: hidden system; Check: Is64BitInstallMode; Components:aax_64;