Reboot required during major upgrade in-between uninstall and re-install

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Reboot required during major upgrade in-between uninstall and re-install

Rami
Hi.

I have a setup installer that installs ext2fsd v0.51 (a third party windows
file system driver found here: http://www.ext2fsd.com/) using the WiX
Toolset v3.5.2201 and DIFxApp:

<difx:Driver PlugAndPlayPrompt="no" AddRemovePrograms="no" />

I basically followed the guide here:
http://kobyk.wordpress.com/2008/10/21/installing-filter-drivers-with-difxapp-and-a-wix-v3-msi/

Install and uninstall work without issues.

The uninstall detects a reboot is required because ext2fsd cannot be
stopped/unloaded on demand.

When asked about this behavior, the ext2fsd author indicated "Ext2Fsd does
NOT support 'STOP' or 'UNLOAD' any more. There are various filters on the
top [and] below [the] file system driver. If you [forcefully] unload the
[files system driver], there might be unexpected NULL structures reference.
All known windows file systems are NOT supporting 'UNLOAD'."
See http://sourceforge.net/p/ext2fsd/discussion/143329/thread/d829b011/

And so the end-user is prompted to reboot after uninstall.

However, the problem occurs during a major upgrade where an uninstall of
the old version is scheduled before the re-install of the new version:

<InstallExecuteSequence>
    ...
    <RemoveExistingProducts After="InstallValidate" />
    ...

The ext2fsd driver is uninstalled but is not re-installed.

Here are some relevant snippets from the upgrade MSI log file on Windows 7
x64:

...
MSI (s) (DC:78) [17:57:41:841]: PROPERTY CHANGE: Adding ADDLOCAL property.
Its value is 'ext2fsd'.
...
MSI (s) (DC:78) [17:57:57:503]: Feature: ext2fsd; Installed: Absent;
Request: Local;   Action: Local
...
MSI (s) (DC:78) [17:57:57:613]: Component: ext2fsd; Installed: Absent;
Request: Local;   Action: Local;   Client State: Unknown
...
MSI (s) (DC:20) [17:58:07:924]: Feature: ext2fsd; Installed: Local;
Request: Absent;   Action: Absent
...
MSI (s) (DC:20) [17:58:07:955]: Component: ext2fsd; Installed: Local;
Request: Absent;   Action: Absent;   Client State: Local
...
DIFXAPP: INFO: 'Component' is 'ext2fsd'
...
DIFXAPP: INFO: Component state 0x3 -> 0x2
...
DIFXAPP: INFO: 'ComponentId' is {01234567-89AB-CDEF-0123-4567890ABCDE}
...
DIFXAPP: INFO: 'Flags' is 6
...
DIFXAPP: INFO: component path is
...
DIFXAPP: INFO: user SID of user performing the install is
'S-1-5-21-31901841-3674642990-1940449072-1000'.
...
DIFXAPP: INFO: creating
HKEY_USERS\S-1-5-21-31901841-3674642990-1940449072-1000\Software\Microsoft\Windows\CurrentVersion\DIFxApp\Components\{01234567-89AB-CDEF-0123-4567890ABCDE}
(User's SID: 'S-1-5-21-31901841-3674642990-1940449072-1000') ...
MSI (s) (DC!00) [17:58:09:250]: PROPERTY CHANGE: Adding MsiUninstallDrivers
property. Its value is '2.1.1 5 {01234567-89AB-CDEF-0123-4567890ABCDE}
6ProductNameCompanyName'.
MSI (s) (DC!00) [17:58:09:250]: Doing action: MsiUninstallDrivers
Action 17:58:09: MsiUninstallDrivers.
Action start 17:58:09: MsiUninstallDrivers.
MsiUninstallDrivers:
Action ended 17:58:09: MsiUninstallDrivers. Return value 1.
...
DIFXAPP: RETURN: ProcessDriverPackages() 0 (0x0)
...
Action ended 17:58:09: MsiProcessDrivers. Return value 1.
...
MSI (s) (DC:20) [17:58:10:249]: Executing op:
FeatureUnpublish(Feature=ext2fsd,Parent=ExtendedFileSystemDriver,Absent=2,Component=dJ8U!QpmK9lZUY0Nwo{I)
UnpublishFeatures: Feature: ext2fsd
MSI (s) (DC:20) [17:58:26:223]: Executing op:
FileRemove(,FileName=ext2fsd.sys,,ComponentId={01234567-89AB-CDEF-0123-4567890ABCDE})
RemoveFiles: File: ext2fsd.sys, Directory: C:\Program Files
(x86)\CompanyName\ProductName\ext2fsd\
MSI (s) (DC:20) [17:58:26:239]: Verifying accessibility of file: ext2fsd.sys
...
MSI (s) (DC:20) [17:58:32:104]: Executing op:
ActionStart(Name=MsiUninstallDrivers,,)
Action 17:58:32: MsiUninstallDrivers.
MSI (s) (DC:20) [17:58:32:104]: Executing op:
CustomActionSchedule(Action=MsiUninstallDrivers,ActionType=3073,Source=BinaryData,Target=UninstallDriverPackages,CustomActionData=2.1.1
5 {01234567-89AB-CDEF-0123-4567890ABCDE} 6ProductNameCompanyName)
...
MSI (s) (DC:24) [17:58:32:104]: Invoking remote custom action. DLL:
C:\Windows\Installer\MSIAA6A.tmp, Entrypoint: UninstallDriverPackages
MSI (s) (DC:D4) [17:58:32:104]: Generating random cookie.
MSI (s) (DC:D4) [17:58:32:120]: Created Custom Action Server with PID 2172
(0x87C).
MSI (s) (DC:3C) [17:58:32:229]: Running as a service.
MSI (s) (DC:3C) [17:58:32:245]: Hello, I'm your 64bit Elevated custom
action server.
...
DIFXAPP: UninstallDriverPackages()
...
DIFXAPP: 'CustomActionData' property 'DIFxApp Version' is 2.1.1.
...
DIFXAPP: 'CustomActionData' property 'UI Level' is 5.
...
DIFXAPP: 'CustomActionData' property 'componentId' is
{01234567-89AB-CDEF-0123-4567890ABCDE}.
...
DIFXAPP: 'CustomActionData' property 'flags' is 0x6.
...
DIFXAPP: 'CustomActionData' property 'ProductName' is ProductName.
...
DIFXAPP: 'CustomActionData' property 'ManufacturerName' is CompanyName.
...
DIFXAPP: INFO: user SID of user performing the install is
'S-1-5-21-31901841-3674642990-1940449072-1000'.
...
DIFXAPP: INFO: opening
HKEY_USERS\S-1-5-21-31901841-3674642990-1940449072-1000\Software\Microsoft\Windows\CurrentVersion\DIFxApp\Components\{01234567-89AB-CDEF-0123-4567890ABCDE}
(User's SID: 'S-1-5-21-31901841-3674642990-1940449072-1000')
...
DIFXAPP: INFO:   ENTER:  DriverPackageUninstallW
...
DIFXAPP: INFO:   Uninstalling driver package
C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\ext2fsd.inf...
...
DIFXAPP: ERROR:  Unable to revert to a previous driver store for service
'Ext2Fsd'.
...
DIFXAPP: ERROR:  Will attempt to uninstall the driver.
...
DIFXAPP: ERROR:  service 'Ext2Fsd' failed to stop with error 0x41C
...
DIFXAPP: WARNING:Service 'Ext2Fsd' never stopped
...
DIFXAPP: INFO:   service 'Ext2Fsd' was deleted.
...
DIFXAPP: WARNING:We've waited a while for the service to get deleted, but
it did not get deleted yet. Will prompt for reboot
...
DIFXAPP: INFO:   Driver store entry
'C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\ext2fsd.inf'
removed.
...
DIFXAPP: SUCCESS:Uninstall completed.
...
DIFXAPP: INFO:   RETURN: DriverPackageUninstallW  (0x0)
...
DIFXAPP: INFO: driver store
'C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\ext2fsd.inf'
uninstalled.
...
DIFXAPP: INFO: deleted add remove programs key for
'C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\ext2fsd.inf'.
...
DIFXAPP: A reboot is needed to uninstall the driver package
'{01234567-89AB-CDEF-0123-4567890ABCDE}'.
...
DIFXAPP: RETURN: UninstallDriverPackages() 0 (0x0)
...
MSI (s) (DC:20) [17:58:53:492]: Executing op:
ActionStart(Name=PublishProduct,Description=Publishing product information,)
Action 17:58:53: PublishProduct. Publishing product information
...
Action ended 17:58:56: InstallFinalize. Return value 1.
MSI (s) (DC:20) [17:58:56:144]: Doing action: MsiCleanupOnSuccess
Action 17:58:56: MsiCleanupOnSuccess.
Action start 17:58:56: MsiCleanupOnSuccess.
...
MSI (s) (DC:E4) [17:58:56:191]: Invoking remote custom action. DLL:
C:\Windows\Installer\MSI873.tmp, Entrypoint: CleanupOnSuccess
...
DIFXAPP: ENTER: CleanupOnSuccess()
...
DIFXAPP: INFO: 'Component' is 'ext2fsd'
...
DIFXAPP: INFO: 'ComponentId' is {01234567-89AB-CDEF-0123-4567890ABCDE}
...
DIFXAPP: INFO: user SID of user performing the install is
'S-1-5-21-31901841-3674642990-1940449072-1000'.
...
DIFXAPP: INFO: opening
HKEY_USERS\S-1-5-21-31901841-3674642990-1940449072-1000\Software\Microsoft\Windows\CurrentVersion\DIFxApp\Components\{01234567-89AB-CDEF-0123-4567890ABCDE}
(User's SID: 'S-1-5-21-31901841-3674642990-1940449072-1000')
...
DIFXAPP: WARNING: The uninstall phase of this upgrade required a reboot.
This may result in errors during the subsequent install phase. If such
errors do occur, please reboot your system and run the upgrade again.
...
MSI (s) (DC!20) [17:58:56:316]: Doing action: ScheduleReboot
Action 17:58:56: ScheduleReboot.
Action start 17:58:56: ScheduleReboot.
MSI (s) (DC!20) [17:58:56:316]: PROPERTY CHANGE: Adding
MsiRebootActionScheduled property. Its value is '1'.
Action ended 17:58:56: ScheduleReboot. Return value 1.
...
DIFXAPP: RETURN: CleanupOnSuccess() 0 (0x0)
...
Action ended 17:58:56: MsiCleanupOnSuccess. Return value 1.
Action ended 17:58:56: INSTALL. Return value 1.
...
Action ended 17:58:59: InstallFiles. Return value 1.
MSI (s) (DC:78) [17:58:59:436]: Doing action: MsiProcessDrivers
Action 17:58:59: MsiProcessDrivers.
Action start 17:58:59: MsiProcessDrivers.
...
MSI (s) (DC:68) [17:58:59:436]: Invoking remote custom action. DLL:
C:\Windows\Installer\MSI1531.tmp, Entrypoint: ProcessDriverPackages
...
DIFXAPP: ENTER: ProcessDriverPackages()
...
DIFXAPP: INFO: 'Component' is 'ext2fsd'
...
DIFXAPP: INFO: Component state 0x2 -> 0x3
...
DIFXAPP: INFO: 'ComponentId' is {01234567-89AB-CDEF-0123-4567890ABCDF}
...
DIFXAPP: INFO: 'Flags' is 6
...
DIFXAPP: INFO: component path is C:\Program Files
(x86)\CompanyName\ProductName\ext2fsd\
...
DIFXAPP: INFO: user SID of user performing the install is
'S-1-5-21-31901841-3674642990-1940449072-1000'.
...
DIFXAPP: INFO: creating
HKEY_USERS\S-1-5-21-31901841-3674642990-1940449072-1000\Software\Microsoft\Windows\CurrentVersion\DIFxApp\Components\{01234567-89AB-CDEF-0123-4567890ABCDF}
(User's SID: 'S-1-5-21-31901841-3674642990-1940449072-1000') ...
MSI (s) (DC!CC) [17:58:59:498]: PROPERTY CHANGE: Adding MsiRollbackInstall
property. Its value is '2.1.1 5 {01234567-89AB-CDEF-0123-4567890ABCDF} 6
2ProductNameCompanyName'.
MSI (s) (DC!CC) [17:58:59:498]: Doing action: MsiRollbackInstall
Action 17:58:59: MsiRollbackInstall.
Action start 17:58:59: MsiRollbackInstall.
MsiRollbackInstall:
Action ended 17:58:59: MsiRollbackInstall. Return value 1.
MSI (s) (DC!CC) [17:58:59:498]: PROPERTY CHANGE: Adding MsiInstallDrivers
property. Its value is '2.1.1 5 {01234567-89AB-CDEF-0123-4567890ABCDF}
C:\Program Files (x86)\CompanyName\ProductName\ext2fsd\ 6
2ProductNameCompanyName'.
MSI (s) (DC!CC) [17:58:59:498]: Doing action: MsiInstallDrivers
Action 17:58:59: MsiInstallDrivers.
Action start 17:58:59: MsiInstallDrivers.
MsiInstallDrivers:
Action ended 17:58:59: MsiInstallDrivers. Return value 1.
...
DIFXAPP: RETURN: ProcessDriverPackages() 0 (0x0)
...
Action ended 17:58:59: MsiProcessDrivers. Return value 1.
...
MSI (s) (DC:78) [17:59:16:174]: File: C:\Program Files
(x86)\CompanyName\ProductName\ext2fsd\ext2fsd.sys;    To be installed;
Won't patch;    No existing file
..
MSI (s) (DC:78) [17:59:44:473]: Executing op:
ActionStart(Name=MsiRollbackInstall,,)
Action 17:59:44: MsiRollbackInstall.
MSI (s) (DC:78) [17:59:44:473]: Executing op:
CustomActionSchedule(Action=MsiRollbackInstall,ActionType=3329,Source=BinaryData,Target=RollbackInstall,CustomActionData=2.1.1
5 {01234567-89AB-CDEF-0123-4567890ABCDF} 6 2ProductNameCompanyName)
MSI (s) (DC:78) [17:59:44:488]: Executing op:
ActionStart(Name=MsiInstallDrivers,,)
Action 17:59:44: MsiInstallDrivers.
MSI (s) (DC:78) [17:59:44:488]: Executing op:
CustomActionSchedule(Action=MsiInstallDrivers,ActionType=3073,Source=BinaryData,Target=InstallDriverPackages,CustomActionData=2.1.1
5 {01234567-89AB-CDEF-0123-4567890ABCDF} C:\Program Files
(x86)\CompanyName\ProductName\ext2fsd\ 6 2ProductNameCompanyName)
...
MSI (s) (DC:F8) [17:59:44:488]: Invoking remote custom action. DLL:
C:\Windows\Installer\MSIC536.tmp, Entrypoint: InstallDriverPackages
...
DIFXAPP: ENTER: InstallDriverPackages()
...
DIFXAPP: INFO: 'CustomActionData' property 'DIFxApp Version' is '2.1.1'.
...
DIFXAPP: INFO: 'CustomActionData' property 'UI Level' is '5'.
...
DIFXAPP: INFO: 'CustomActionData' property 'componentId' is
'{01234567-89AB-CDEF-0123-4567890ABCDF}'.
...
DIFXAPP: INFO: 'CustomActionData' property 'componentPath' is 'C:\Program
Files (x86)\CompanyName\ProductName\ext2fsd\'.
...
DIFXAPP: INFO: 'CustomActionData' property 'flags' is 0x6.
...
DIFXAPP: INFO: 'CustomActionData' property 'installState' is '2'.
...
DIFXAPP: INFO: 'CustomActionData' property 'ProductName' is 'ProductName'.
...
DIFXAPP: INFO: 'CustomActionData' property 'ManufacturerName' is
'CompanyName'.
...
DIFXAPP: INFO: user SID of user performing the install is
'S-1-5-21-31901841-3674642990-1940449072-1000'.
...
DIFXAPP: INFO: opening
HKEY_USERS\S-1-5-21-31901841-3674642990-1940449072-1000\Software\Microsoft\Windows\CurrentVersion\DIFxApp\Components\{01234567-89AB-CDEF-0123-4567890ABCDF}
(User's SID: 'S-1-5-21-31901841-3674642990-1940449072-1000') ...
DIFXAPP: INFO:   ENTER:  DriverPackageInstallW
...
DIFXAPP: INFO:   ext2fsd.inf: checking signature with catalog 'C:\Program
Files (x86)\CompanyName\ProductName\ext2fsd\Ext2Fsd.cat' ...
...
DIFXAPP: INFO:   Driver package 'ext2fsd.inf' is Authenticode signed.
...
DIFXAPP: INFO:   Copied 'ext2fsd.inf' to driver store...
...
DIFXAPP: INFO:   Copied 'Ext2Fsd.cat' to driver store...
...
DIFXAPP: INFO:   Commiting queue...
...
DIFXAPP: INFO:   Copied file: 'C:\Program Files
(x86)\CompanyName\ProductName\ext2fsd\.\Ext2Fsd.sys' ->
'C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\.\Ext2Fsd.sys'.
...
DIFXAPP: INFO:   Copied file: 'C:\Program Files
(x86)\CompanyName\ProductName\ext2fsd\.\Ext2Fsd.inf' ->
'C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\.\Ext2Fsd.inf'.
...
DIFXAPP: INFO:   Installing INF file
"C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\ext2fsd.inf"
of Type 3.
...
DIFXAPP: INFO:   Installing File System Driver
'C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\ext2fsd.inf'
...
DIFXAPP: ERROR:  Unable to start service 'Ext2Fsd' because of error 0x422
...
DIFXAPP: SUCCESS:Installation completed with code 0x0.
...
DIFXAPP: INFO:   RETURN: DriverPackageInstallW  (0x0)
...
DIFXAPP: INFO:   ENTER:  DriverPackageGetPathW
...
DIFXAPP: SUCCESS:Found driver store entry.
...
DIFXAPP: INFO:   RETURN: DriverPackageGetPathW  (0x7A)
...
DIFXAPP: INFO:   ENTER:  DriverPackageGetPathW
...
DIFXAPP: SUCCESS:Found driver store entry.
...
DIFXAPP: INFO:   RETURN: DriverPackageGetPathW  (0x0)
...
DIFXAPP: INFO: driver store entry for 'C:\Program Files
(x86)\CompanyName\ProductName\ext2fsd\ext2fsd.inf' is
'C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\ext2fsd.inf'.
...
DIFXAPP: INFO: The component Id '{01234567-89AB-CDEF-0123-4567890ABCDF}' is
now set to point to driver store:
'C:\Windows\system32\DRVSTORE\ext2fsd_E0684157C2B0E05369F692CE9B6CFB25F27119BC\ext2fsd.inf'
...
DIFXAPP: INFO: A reboot is needed to install the component
'{01234567-89AB-CDEF-0123-4567890ABCDF}'.
...
DIFXAPP: RETURN: InstallDriverPackages() 0 (0x0)
...
MSI (s) (DC:78) [18:00:28:324]: Executing op:
FeaturePublish(Feature=ext2fsd,Parent=ExtendedFileSystemDriver,Absent=2,Component=5[fXny?b&?h`9xD-4.jI)
PublishFeatures: Feature: ext2fsd
...
Action ended 18:00:29: InstallFinalize. Return value 1.
MSI (s) (DC:78) [18:00:29:401]: Doing action: MsiCleanupOnSuccess
Action 18:00:29: MsiCleanupOnSuccess.
Action start 18:00:29: MsiCleanupOnSuccess.
...
MSI (s) (DC:A8) [18:00:29:463]: Invoking remote custom action. DLL:
C:\Windows\Installer\MSI74F0.tmp, Entrypoint: CleanupOnSuccess
...
DIFXAPP: ENTER: CleanupOnSuccess()
...
DIFXAPP: INFO: 'Component' is 'ext2fsd'
...
DIFXAPP: INFO: 'ComponentId' is {01234567-89AB-CDEF-0123-4567890ABCDF}
...
DIFXAPP: INFO: user SID of user performing the install is
'S-1-5-21-31901841-3674642990-1940449072-1000'.
...
DIFXAPP: INFO: opening
HKEY_USERS\S-1-5-21-31901841-3674642990-1940449072-1000\Software\Microsoft\Windows\CurrentVersion\DIFxApp\Components\{01234567-89AB-CDEF-0123-4567890ABCDF}
(User's SID: 'S-1-5-21-31901841-3674642990-1940449072-1000') ...
...
MSI (s) (DC!F4) [18:00:30:306]: Doing action: ScheduleReboot
Action 18:00:30: ScheduleReboot.
Action start 18:00:30: ScheduleReboot.
MSI (s) (DC!F4) [18:00:30:306]: PROPERTY CHANGE: Adding
MsiRebootActionScheduled property. Its value is '1'.
Action ended 18:00:30: ScheduleReboot. Return value 1.
...
DIFXAPP: RETURN: CleanupOnSuccess() 0 (0x0)
...
Action ended 18:00:30: MsiCleanupOnSuccess. Return value 1.
Action ended 18:00:30: INSTALL. Return value 1.
...


Is this scenario supported by the WiX Toolset?

If so, what is the recommend approach to handle it?

Is it possible to ask the user to reboot after the uninstall but before the
re-install during the upgrade?

Otherwise, it seems I have to "manually" perform the uninstall outside of
the new setup installer, prompt the user to reboot, and then allow the user
to reinstall the product after the reboot, which is what I'm trying to
avoid.

Thank you.
------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors
network devices and physical & virtual servers, alerts via email & sms
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Reboot required during major upgrade in-between uninstall and re-install

Phill Hogland
While doing other research I came across these threads, and made note of them in the event that I might need them in the future.  They might be helpful to you:

http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Burn-Resume-Installation-Plan-td7579146.html

http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Burn-restore-after-reboot-not-working-td7585217.html#a7585250

Reply | Threaded
Open this post in threaded view
|

Re: Reboot required during major upgrade in-between uninstall and re-install

Rami
Thank you, Phil.

Unfortunately, I only have one MSI that installs both my application and ext2fsd.

Are you suggesting that I split them up into two MSIs and then bundle them using Burn?

Thank you.
Reply | Threaded
Open this post in threaded view
|

Re: Reboot required during major upgrade in-between uninstall and re-install

Phill Hogland
I guess I misread your question and assumed that you were using Burn.  Given that I came across those posts I thought they might be helpful but if you are not using Burn I can't really make any suggestion.

I have only used the approach of putting each app and each driver in a separate UI-less MSI and then chaining them using Burn.  I have some bundles which have several hundred msi packages in the chain and I find that this approach works well for me.
Reply | Threaded
Open this post in threaded view
|

Re: Reboot required during major upgrade in-between uninstall and re-install

Nir Bar
You may be able to schedule RemoveExistingProducts after InstallExecute if you adhere to component rules. This will perform the uninstall after the reinstall and reboot on installation end.
Nir Bar
Freelance Developer
Mail: nir.bar@panel-sw.com
Web: www.panel-sw.com
- C++ On Windows, Linux and Embedded Platforms
- WiX & InstallShield