We released a MSI installer, installing our software in version 1.0.
Now we're working on an update of our software and wish to publish it
as version 1.0.1. The new version will contains some bug fixes, small
improvements and a platform extension (additional support of the
operating system Windows Server 2003).
The installer has been designed to perform a minor upgrade from version
1.0 to 1.0.1 (ProductVersion property changed, while product code stays
unchanged). Through the platform extension, the launch conditions has
been changed (one condition has changed to allow installation on
Windows Server 2003). Now, if the 1.0.1 installer detects the version
1.0, a minor upgrade is performed and fails with internal error 2229.
Exact error dialog message:
Internal Error 2229. , LaunchCondition, SELECT 'Condition',
'Description' FROM 'LaunchCondition'
The installer has been created with InstallShield DevStudio 9. It is
available as a network image (single setup.exe file) that extracts the
msi database in the folder "%windir%\Downloaded Installations". The
setup.exe includes the MSI engine and performs the boot strepping.
Note: We wish also to remove some controls, available in the setup
dialogs. As soon as I remove one of the setup dialog controls, the
installation is also interrupted with the internal error 2229.
Has anyone an idea what's going wrong there?
Thanks in advance,
Rafael Baranowski
Does your MSI rely on transforms to "fill in" localizable fields? If so
then the problem is that the old 1.0 transforms will be used during your
update to 1.0.1. This is by design in fact -- transforms are only removed
when the product itself is removed. During a major upgrade the 1.0 product
would be uninstalled thus old transforms will go with it. But during a
minor upgrade the same product remains installed so transforms and patches
are not removed.
A few options available:
1. You can alter the 1.0.1 MSI such that any new Localizable fields in 1.0.1
are populated directly in the MSI itself. The new 1.0.1 transforms can
still be used to change the text for other languages but the MSI has to
function with the old transform.
2. Create an MSP that is applicable to 1.0 (and 1.0.1) that would "fill in
the blanks" that exist in the old 1.0 transforms. If you have multiple
languages then you could create multiple MSP files (one for each language).
If the MSP is applied to 1.0.1 then it will still work (even if wrong
language MSP is used) because the application of transform actions come last
so any changes the MSP makes to a string will be overwritten by changes in
the transform.
3. Make the upgrade a major upgrade because the new transforms would then be
used instead of the old ones.
Sincerely,
Adrian Accinelli
Rafael Baranowski