
Best Answer deramor , 12 May 2017 - 00:13
Assuming your file paths don't change for each type, you can do:
1. Make sure any major upgrade items are set to "Sharing my upgrade code.
2. Maintain a static list of upgrade codes for each type of release.
3. Before building each release, you can use the automation interface to change/update the property.
In VB:
Set objInst = CreateObject("ISWiAuto22.ISWiProject")
This uses IS 2015 SAB
objInst.OpenProject <your ism file>, false
objInst.UpgradeCode = Your saved upgrade code
You can also set package and product codes in the same way.
objInst.PackageCode = some GUID
objInst.ProjectCode = another GUID
Save and close
objInst.SaveProject
objInst.CloseProject
To generate a guid:
Set TypeLib_project = CreateObject("Scriptlet.TypeLib")
TypeLib_project.GUID <---- the GUID you can use
If you need to change registry keys between configs, you can set up Release flags in your release configurations. It can include and exclude features based on the release you are building. Each feature can have your unique registry values.
You will also need to have unique INSTALLDIR between all 3.
Again you can use the automation interface
objInst.INSTALLDIR = some path
Shortcuts are more complicated in case you need to change these too.
If you have your shortcuts' target all based from INSTALLDIR, the shortcuts will all work.
However the root folder typically isn't dependent on the INSTALLDIR.
For that, you need to change the String table entry. You will need some synchronization between your project file and the script making these changes.
It is possible to not know ahead of time the string entry to edit but that makes things much more complicated (and I don't have an example )
for each entry in ism_project.ISWiLanguages(1).ISWiStringEntries
if entry.ID = "ID_STRINGTABLE_ENTRY" then
entry.Value = "Your new text"
end if
next
