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 WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users