(More evidence of something going wrong, no solution as yet sadly.)
I'm trying to create an installation package for Windows 95/98/NT/2000 using ISWI 2.03.
One of the many problems I've had includes the following:
I modify the installation package to detect a previous version of my product by using the Upgrade table, changing the product code/version number etc, and calling FindRelatedProducts. I need to move the RemoveExistingProducts action to lie between InstallValidate and InstallInitialise, so that my previous application files will be unregistered before they are deleted/overwritten by the new versions. Ah, now I've done it. The installation comes to a crunching halt after detecting the previous product and uninstalling it. "The wizard has been interrupted before the application was completely installed." But only under 95. Under NT, it works. Getting desperate, I install ISWI 2.03 under 95 and NT and difference the log files:
95 Log file:
<blah>
Action ended 10:01:48: RemoveExistingProducts. Return value 1.
MSI © (2D:05): Doing action: InstallInitialize
Action start 10:01:48: InstallInitialize.
MSI © (2D:05): BeginTransaction: Locking Server
MSI © (2D:05): Server not locked: locking for product {8760E910-9DA4-11D2-B6D2-00E029B09B27}
MSI © (2D:05): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-user non-managed key
MSI © (2D:05): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-machine key
MSI © (2D:05): Did not find item Products\019E06784AD92D116B2D000E920BB972
MSI © (2D:05): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-user non-managed key
MSI © (2D:05): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-machine key
MSI © (2D:05): Did not find item Products\019E06784AD92D116B2D000E920BB972
Action ended 10:01:49: InstallInitialize. Return value 1.
MSI © (2D:05): Doing action: Rollback_CleanUp
Action start 10:01:49: Rollback_CleanUp.
Action 10:01:49: GenerateScript. Generating script operations for action:
GenerateScript: Rollback_CleanUp
Action ended 10:01:49: Rollback_CleanUp. Return value 1.
MSI © (2D:05): Doing action: CheckForPreviousFiles
Action start 10:01:49: CheckForPreviousFiles.
MSI © (2D:05): Creating MSIHANDLE (152) of type 790542 for thread -815867
Action ended 10:01:49: CheckForPreviousFiles. Return value 3.
MSI © (2D:05): User policy value 'DisableRollback' is 0
MSI © (2D:05): Machine policy value 'DisableRollback' is 0
MSI © (2D:05): Note: 1: 1402 2: Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI © (2D:05): Note: 1: 1402 2: Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI © (2D:05): Unlocking Server
Action ended 10:01:49: INSTALL. Return value 3.
Action ended 10:01:49: ExecuteAction. Return value 3.
MSI © (2D:05): Doing action: SetupCompleteError
Action start 10:01:49: SetupCompleteError.
Action 10:01:49: SetupCompleteError. Dialog created
Action start 10:01:53: CleanUp.
Action ended 10:01:53: CleanUp. Return value 1.
Action ended 10:01:53: SetupCompleteError. Return value 2.
Action ended 10:01:53: INSTALL. Return value 3.
<setup terminates shortly thereafter>
NT log:
<blah>
Action ended 14:35:18: RemoveExistingProducts. Return value 1.
MSI (s) (0C:CE): Doing action: InstallInitialize
Action start 14:35:18: InstallInitialize.
MSI (s) (0C:CE): BeginTransaction: Locking Server
MSI (s) (0C:CE): Server not locked: locking for product {8760E910-9DA4-11D2-B6D2-00E029B09B27}
MSI (s) (0C:CE): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-user managed key
MSI (s) (0C:CE): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-user non-managed key
MSI (s) (0C:CE): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-machine key
MSI (s) (0C:CE): Did not find item Products\019E06784AD92D116B2D000E920BB972
MSI (s) (0C:CE): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-user managed key
MSI (s) (0C:CE): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-user non-managed key
MSI (s) (0C:CE): Searching for item Products\019E06784AD92D116B2D000E920BB972 in per-machine key
MSI (s) (0C:CE): Did not find item Products\019E06784AD92D116B2D000E920BB972
Action ended 14:35:18: InstallInitialize. Return value 1.
MSI (s) (0C:CE): Doing action: Rollback_CleanUp
Action start 14:35:19: Rollback_CleanUp.
Action 14:35:19: GenerateScript. Generating script operations for action:
GenerateScript: Rollback_CleanUp
Action ended 14:35:19: Rollback_CleanUp. Return value 1.
MSI (s) (0C:CE): Doing action: CheckForPreviousFiles
Action start 14:35:19: CheckForPreviousFiles.
MSI (s) (0C:CE): Creating MSIHANDLE (230) of type 790542 for thread 206
Action ended 14:35:48: CheckForPreviousFiles. Return value 1.
<setup continues nicely after this point and completes successfully>
So it looks like my custom action 'CheckForPreviousFiles' is failing under 95, but not NT. Sadly, it makes not a jot of difference what this custom action does. I've changed it to simply return ERROR_SUCCESS with the exact same result. When I run the installation package again, this time round there is no uninstallation of the previous product to be done and the process runs to completion. The act of running the Standard Action RemoveExistingProducts seems to cause the next Custom Action to fail with error code 3.