Open elanhickler opened 6 years ago
here's jim's original script which has a few more things in it
#define AppName "Radio"
#define CompanyName "Credland"
#define VisualStudioBaseBuilds ".\Builds\VisualStudio2015"
[Setup]
AppName={#AppName}
AppVersion={#VersionString}
DefaultDirName={pf}\{#CompanyName}\{#AppName}
DefaultGroupName={#AppName}
Compression=lzma2
SolidCompression=yes
OutputDir=.\installer\build\
ArchitecturesInstallIn64BitMode=x64
OutputBaseFilename={#AppName} Installer
LicenseFile=installer\license.txt
InfoAfterFile=installer\readme.rtf
InfoBeforeFile=installer\intro.txt
SetupLogging=yes
DisableDirPage=yes
SourceDir=..
[Types]
Name: "full"; Description: "Full installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom
[Components]
Name: "app"; Description: "Standalone application (.exe)"; Types: full custom;
Name: "vst2_32"; Description: "32-bit VST2 Plugin (.dll)"; Types: full custom;
Name: "vst2_64"; Description: "64-bit VST2 Plugin (.dll)"; Types: full custom; Check: Is64BitInstallMode;
;Name: "vst3_32"; Description: "32-bit VST3 Plugin (.vst3)"; Types: full custom;
;Name: "vst3_64"; Description: "64-bit VST3 Plugin (.vst3)"; Types: full custom; Check: Is64BitInstallMode;
;Name: "rtas_32"; Description: "32-bit RTAS Plugin (.dpm)"; Types: full custom;
;Name: "aax_32"; Description: "32-bit AAX Plugin (Protools 10.3.6+) (.aaxplugin)"; Types: full custom;
Name: "aax_64"; Description: "64-bit AAX Plugin (Protools 11+) (.aaxplugin)"; Types: full custom; Check: Is64BitInstallMode;
;Name: "manual"; Description: "User guide"; Types: full custom; Flags: fixed
[Tasks]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: app
[Files]
Source: "{#VisualStudioBaseBuilds}\Win32\32BitRelease\VST\{#AppName}32.dll"; DestDir: {code:GetVST2Dir_32}; Check: not Is64BitInstallMode; Components:vst2_32; Flags: ignoreversion;
Source: "{#VisualStudioBaseBuilds}\Win32\32BitRelease\VST\{#AppName}32.dll"; DestDir: {code:GetVST2Dir_32}; Check: Is64BitInstallMode; Components:vst2_32; Flags: ignoreversion;
Source: "{#VisualStudioBaseBuilds}\x64\64BitRelease\VST\{#AppName}.dll"; DestDir: {code:GetVST2Dir_64}; Check: Is64BitInstallMode; Components:vst2_64; Flags: ignoreversion;
Source: "{#VisualStudioBaseBuilds}\x64\64BitRelease\AAX\{#AppName}.aaxplugin\*.*"; DestDir: "{cf64}\Avid\Audio\Plug-Ins\{#AppName}.aaxplugin\"; Components:aax_64; Flags: ignoreversion recursesubdirs;
; application
Source: "{#VisualStudioBaseBuilds}\Win32\32BitRelease\Standalone Plugin\{#AppName}32.exe"; DestName: "Radio.exe"; DestDir: "{pf32}\Credland\Radio"; Flags: ignoreversion;
; libraries
Source: ".\libs.win\bass\32bit\*"; DestDir: {pf32}\Credland\Radio;
Source: ".\libs.win\bass\64bit\*"; Check: IsWin64; DestDir: {pf64}\Credland\Radio;
Source: ".\installer\readme.rtf"; DestDir: "{app}"
Source: ".\installer\license.txt"; DestDir: "{app}"
Source: ".\installer\intro.txt"; DestDir: "{app}"
Source: ".\installer\windows.ico"; DestDir: "{app}"
Source: ".\common\{#CompanyName}\*"; DestDir: "{commonappdata}\{#CompanyName}\"; Flags: recursesubdirs
[Icons]
Name: "{group}\Radio"; Filename: "{pf32}\Credland\Radio\Radio.exe";
Name: "{userdesktop}\Radio"; Filename: "{pf32}\Credland\Radio\Radio.exe"; Tasks: desktopicon;
;Name: "{group}\User guide"; Filename: "{app}\Radio_manual.pdf"
;Name: "{group}\Changelog"; Filename: "{app}\changelog.txt"
;Name: "{group}\readme"; Filename: "{app}\readme.rtf"
Name: "{group}\Uninstall Radio"; Filename: "{app}\unins000.exe"
;[Dirs]
;Name: {cf}\Digidesign\DAE\Plugins\
[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 get into this, let me know if you figure out how to make the installer more convenient.
for the initial release of ToolChain (scheduled for sunday - i'm playing santa claus - haha :-)), i'll probably rely on manual installation. i'll have to learn this installer-building stuff myself from scratch. i once dabbled with it but that's long ago and i have forgotten everything. as i'm not planning to have several separate products but lump everything into ToolChain, it's actually a kind of of set-and-forget, do-once-and-for-all thing - so i'll probably do it at some point. but maybe not for the initial release - we'll see
so i'll probably do it at some point. but maybe not for the initial release
uhhhh... no.
give me your files, ill make a mac and win installer for you jeezmus. it's easy. let me just do it... oh but I need to know where your programs expect presets to be so I can put it there... well, I don't know how far you've gotten into being compatible with the rest of the world in terms of paths................ đŸ˜•
oh - thank you! i've not yet decided, where to locate the support-folder (i think, on mac it's standardized? i'll have to look up our old threads. but on win ...maybe in the user's documents folder?). i'm just implementing the infrastructure to make these things easy to set up in AudioModule (maybe have a look at my recent additions)
my idea is to have a global "support-folder" which then can have subfolders "Presets", "Samples", etc. currently, that support-folder is assumed to be the dll-folder but i'm just making that adjustable.
product
.aaxplugin\Contents\company
\product
\
ORcompany
\product
\
company
\product
\Presets\
ORcompany
\product
\Presets\Factory\
username
\AppData\Roaming\company
\product
\Presets\
ORcompany
\product
\Presets\User\
company
\product
\License\
ORusername
\AppData\Roaming\company
\product
\License\
ORcompany
\product
\License\company
/product
/Presets
company
/product
/Presets
company
/product
/
username
/Documents/company
/
* After the company folder, you can do whatever you want, these are just generally used suggestions. There's no standard folder structures, only standard places to put the base folder or file.
i guess, i may just go with whatever
juce::File::getSpecialLocation(juce::File::userApplicationDataDirectory);
returns, append "/RS-MET" and use that as root folder for all support files. you can then do the same using your company name (i may have to figure out how to make that switchable from client code side).
i checked on windows - there it indeed returns that ....AppData/Roaming folder
...hmm...thinking about it, do different versions of windows and/or mac-os use the same folder for this? ...or else, can we tell the installer to inquire this directory, too? otherwise, we may end up installing into a folder which is non-standard for the user's os
i wonder, if i should have separate downloads (and installers) for the actual product (.dll, .so, .component) and the support files. maybe it's not really vital at the moment, but it may make more sense, when the support folder contains a lot of data (for example: samples - which i want to provide more at some point)
the user can disable installing certain components.
also, don't use userApplicationDirectory, use globalApplicationsDirectory if anything... don't put non-user-specific files in the user folder, that would be bad if the computer has multiple users and the program needs access to non-user-specific files.
i'm using userApplicationDataDirectory
edit: do you think commonDocumentsDirectory would be better? that would make the presets available for all users on the machine
edit2: hmm, this commonDocumentsDirectory folder seems to be "C:\Users\Public\Public Documents" on my windows 8.1 machine (well, such a folder exists, at least), but the juce function returns "C:\Users\Public\Documents"
somehow i really dislike the whole idea of storing user data on drive c. that's what we have drives d or e for (preferably a physically different drive). however, my former usage of the dll directory had the same problem anyway
the user can disable installing certain components.
i see, but i think, in this case, it makes more sense, if s/he wouldn't have to download the not-needed components. i mean, if i provide the full set of possibilities vst2/3, x86/x64, standalone, etc. and the user wants only one of them, the download package size would be 6x as large as it would have to be....or does the compression reduce this factor significantly? i suppose, since it's all binary, maybe not - on the other hand, most of the code is the same, so it's inherently highly redundant.
although, i'm not sure, if i will support all formats...i actually think, vst2/x64 for pc and au/x64 for mac is enough, at least initially...and then maybe see, if other formats are actually requested
the download package size would be 6x as large as it would have to be
it would be silly to have 6 installers
edit: also there's compression
Are you going to send me all the release files before / on sunday?
i will try to wrap it up on saturday. but maybe, if i need to fix some thing on sunday, i hope, i can then easily rebuild the installer myself? can you give me the script files along with some info how to use them?
yes, one click rebuild
ok - i have put together everything needed for release. i created a new thread for this: https://github.com/RobinSchmidt/RS-MET/issues/146
Inno Script Studio: https://www.kymoto.org/products/inno-script-studio
Here's my script for Torus Generator. This needs improvement, currently there's two separate pages, one for putting in VST 32, one for putting in VST 64 directory. Other people have a single page for stuff like this. If you get into this, let me know if you figure out how to make the installer more convenient.