Uninstalling old MSI via nested installation method in Wise for Windows Installer 6.2
Hi,
I am running into a problem and hoping to get some assistance. I am trying to create an installation that combines 2 older applications, in which case I need to upgrade both older applications if they exist. The problem I am running into is one of those older applications has a dailog message when you uninstall it, so when I add it to the upgrade table, the dailog will pop up. I found a way to get around this by running the uninstall of that application with a /qn switch. The problem I am running into is I cannot get it to work correctly when I try to run the MSI uninstall of that application as a nested install in my new installation.
Here are the 2 methods I have tried,
1. Run a Execute Program from Destination CA with following settings, Working Directory=SystemFolder and EXE and Command Line= msiexec.exe /x{GUID} /qn
This does not seem to work, as I get an error message.
2. Run a Install MSI From Destination CA with following settings, Product Code={GUID}, Properties=REMOVE=ALL
This runs the uninstall, but runs it the same as adding it to the upgrade table. I do not know how to set it to run silently with a /qn switch with this method.
Thanks in advance for any assistance.
Comments
Don't think it's possible
If I recall correctly, you cannot use a nested CA to remove an existing MSI, unless it was installed by that MSI - the SDK states:
"A nested installation action can only reinstall or remove an application that has been installed by the current application's installation package."
So method 2 is out.
Also, running msiexec /x from the InstallExecute sequence is bound to fail, as msiexec is single threaded and will not permit a concurrent MSI process to run - hence your error with method 1.
Alternative solutions depend on whether you want to be able to perform a silent install or not.
You could use method 1 if the custom action is placed in the InstallUISequence, but since a silent install does not run the InstallUISequence, this method is not suitable should you want to offer silent installs.
The other method which would work in any situation, is to create a Wisescript "wrapper" which is then compiled to an EXE. This would be coded to run msiexec /x for each of the MSI files you need removed, then install the new MSI files into a temp folder, run the installs, clean up the temp folder, and exit. Since Wisescript does not rely on msiexec to run, these processes can be run synchronously without any issues.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Would you like to reply?
Login or Register to post your comment.