When using the Uninstall task directly (rather than through the Deploy task), it executes msiexec /qn /x ProductCode. This fails on a machine that does not have the product code installed. This is because msiexec throws up a message box saying that you can't uninstall something that isn't installed. With quiet mode, this just fails.
For a team build scenario, there are often times when a new build/product comes along. When the process attempts to install the msi the first time for a target machine, the build will always fail. I think this activity should use similar logic to Deploy where it resolves the ProductCode from a ProductName. The Uninstall task should search the target machine registry to see if the package is installed before calling out to msiexec /x.
The next time a build kicks off, the package is installed, the product code will be in the registry and the uninstallation will then be invoked.
Comments: ** Comment from web user: mikedouglas **
For a team build scenario, there are often times when a new build/product comes along. When the process attempts to install the msi the first time for a target machine, the build will always fail. I think this activity should use similar logic to Deploy where it resolves the ProductCode from a ProductName. The Uninstall task should search the target machine registry to see if the package is installed before calling out to msiexec /x.
The next time a build kicks off, the package is installed, the product code will be in the registry and the uninstallation will then be invoked.
Comments: ** Comment from web user: mikedouglas **
Great suggestion! I agree this is the way it should work. I'll get this implemented in the next release.
Thanks,
Mike