DriverPackageInstallW (DIFXAPP) early exit with error code (0x65B) in Windows 8.0 64 bit, but same WIX-built package installs on Windows 7 64-bit

StackOverflow https://stackoverflow.com/questions/22392755

  •  14-06-2023
  •  | 
  •  

Question

My installer package fails on Windows 8 64 bit, but runs just fine on windows7 64-bit. Now i know that signing of INF packages is required in windows 8, and i worked thru that issue, but now i am running into error (0x65B) which does not provide any detail. I spent considerable amount of time googling what this is but without success. Thank you.

Here are the details : MSI Log (when failed) :

MSI (s) (D0:04) [15:47:34:793]: Executing op: ActionStart(Name=MsiInstallDrivers,,)
MSI (s) (D0:04) [15:47:34:793]: Executing op: CustomActionSchedule(Action=MsiInstallDrivers,ActionType=3073,Source=BinaryData,Target=InstallDriverPackages,CustomActionData=2.15{F4058B90-23CA-4E13-A562-A402ED7A4794}C:\Windows\INF\QC8500s2Driver_64bit\62QuikChem 8500 Series 2 Driver 64-bitLachat)
MSI (s) (D0:D0) [15:47:34:809]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIA78D.tmp, Entrypoint: InstallDriverPackages
DIFXAPP: ENTER: InstallDriverPackages()
DIFXAPP: INFO: 'CustomActionData' property 'DIFxApp Version' is '2.1'.
DIFXAPP: INFO: 'CustomActionData' property 'UI Level' is '5'.
DIFXAPP: INFO: 'CustomActionData' property 'componentId' is '{F4058B90-23CA-4E13-A562-A402ED7A4794}'.
DIFXAPP: INFO: 'CustomActionData' property 'componentPath' is 'C:\Windows\INF\QC8500s2Driver_64bit\'.
DIFXAPP: INFO: 'CustomActionData' property 'flags' is 0x6.
DIFXAPP: INFO: 'CustomActionData' property 'installState' is '2'.
DIFXAPP: INFO: 'CustomActionData' property 'ProductName' is 'QuikChem 8500 Series 2 Driver 64-bit'.
DIFXAPP: INFO: 'CustomActionData' property 'ManufacturerName' is 'Lachat'.
DIFXAPP: INFO: user SID of user performing the install is 'S-1-5-21-2091490019-4240601677-1653081351-1001'.
DIFXAPP: INFO: opening HKEY_USERS\S-1-5-21-2091490019-4240601677-1653081351-1001\Software\Microsoft\Windows\CurrentVersion\DIFxApp\Components\{F4058B90-23CA-4E13-A562-A402ED7A4794} (User's SID: 'S-1-5-21-2091490019-4240601677-1653081351-1001') ...
DIFXAPP: INFO:   ENTER:  DriverPackageInstallW
DIFXAPP: INFO:   RETURN: DriverPackageInstallW  (0x65B)
DIFXAPP: ERROR: encountered while installing driver package 'C:\Windows\INF\QC8500s2Driver_64bit\vcomhach.inf'
DIFXAPP: ERROR: InstallDriverPackages failed with error 0x65B
DIFXAPP: RETURN: InstallDriverPackages() 1627 (0x65B)
CustomAction MsiInstallDrivers returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 15:47:34: InstallFinalize. Return value 3.

notice the section of two lines :

DIFXAPP: INFO:   ENTER:  DriverPackageInstallW
DIFXAPP: INFO:   RETURN: DriverPackageInstallW  (0x65B)

here is how my WIX was created

"C:\Program Files\WiX Toolset v3.8\bin\candle.exe" Qc8500s2DriverInstaller64bit.wxs -ext "C:\Program Files\WiX Toolset v3.8\bin\WixDifxAppExtension.dll" 

"C:\Program Files\WiX Toolset v3.8\bin\light.exe" -ext "C:\Program Files\WiX Toolset v3.8\bin\WixDifxAppExtension.dll" Qc8500s2DriverInstaller64bit.wixobj "C:\Program Files\WiX Toolset v3.8\bin\difxapp_x64.wixlib" -o Qc8500s2DriverInstaller64bit.msi

and this is how my INF bundle was INF2CAT'ed and signed:

"C:\Program Files\Windows Kits\8.0\bin\x86\Inf2Cat.exe" /driver:"C:\repo\thecompany\QC8500dotNet\Qc8500Core\Installer\Qc8500s2DriverInstallerSigned\source\inf" /os:7_X86,7_X64,8_X86,8_X64

"C:\Program Files\Windows Kits\8.0\bin\x86\signtool.exe" sign /f "C:\repo\thecompany\QC8500dotNet\Qc8500Core\Installer\Qc8500s2DriverInstallerSigned\source\Certificate\hach_iim_code_sign.pfx" /p real_password_goes_here  "C:\repo\thecompany\QC8500dotNet\Qc8500Core\Installer\Qc8500s2DriverInstallerSigned\source\inf\vcomhachx64.cat"

"C:\Program Files\Windows Kits\8.0\bin\x86\signtool.exe" sign /f "C:\repo\thecompany\QC8500dotNet\Qc8500Core\Installer\Qc8500s2DriverInstallerSigned\source\Certificate\hach_iim_code_sign.pfx" /p real_password_goes_here  "C:\repo\thecompany\QC8500dotNet\Qc8500Core\Installer\Qc8500s2DriverInstallerSigned\source\inf\vcomhachx64.cat"

and this is my WIX:

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:difx='http://schemas.microsoft.com/wix/DifxAppExtension'>
  <Product Name='QuikChem 8500 Series 2 Driver 64-bit' Id='B195F5DC-2E60-4164-AD9B-5CD174A541BC' UpgradeCode='62B8C01D-3DDD-4300-8FCA-CD01F77F97F7'
    Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='company'>

    <Package Id='*' Keywords='InstallerPackage' Description="QC8500s2Driver Installer 64bit"
      Comments='QC8500s2Driver 64bit' Manufacturer='company' InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

    <Media Id='1' Cabinet='media.cab' EmbedCab='yes' DiskPrompt="Disk #1" />
    <Property Id='DiskPrompt' Value="QC8500s2Driver Installation [1]" />
    <Directory Id='TARGETDIR' Name='SourceDir'>
        <Directory Id='WindowsFolder' Name='WindowsFiles' > 
            <Directory Id='INF' Name='INF'> 
                <Directory Id='QC8500s2Driver_64bit' Name='QC8500s2Driver_64bit'> 
                    <Component Id='InfFolderComponents' Guid='F4058B90-23CA-4E13-A562-A402ED7A4794' > 
                        <File Id='vcomhach_inf' Name='vcomhach.inf' Checksum='yes' DiskId='1' KeyPath='yes' Source="source\inf\vcomhach.inf"/> 
                        <File Id='vcomhachx86_cat' Name='vcomhachx86.cat' Checksum='yes' DiskId='1' Source="source\inf\vcomhachx86.cat"/> 
                        <File Id='vcomhachx64_cat' Name='vcomhachx64.cat' Checksum='yes' DiskId='1' Source="source\inf\vcomhachx64.cat"/> 
                        <difx:Driver AddRemovePrograms="no" Legacy="no" PlugAndPlayPrompt="no" Sequence='1' />
                    </Component> 
                </Directory> 
            </Directory> 
        </Directory> 

    </Directory>

    <Feature Id="MainFeature" Title="MainFeature" Level="1">      
      <ComponentRef Id="InfFolderComponents" />
    </Feature>          
  </Product>
</Wix>
Était-ce utile?

La solution

... after about 3 days of tinkering with this, i found out what the issue was.

As you see in my original WIX, i was deploying to WindowsFolder\INF. well turns out that the INF file got some sort of double lock in that folder. I discovered this thru rewriting my wix to do DPINST instead of DifX:Driver, and when i ran DPINST /C (which logs to attached console) i saw the explanation of the file lock error with the same error code as my original post. Changed my WIX to this :

<Directory Id='TARGETDIR' Name='SourceDir'>
    <Directory Id='ProgramFilesFolder' Name='ProgramFilesFolder' > 
            <Directory Id='QC8500s2Driver_64bit' Name='QC8500s2Driver_64bit'> 
                <Component Id='InfFolderComponents' Guid='F4058B90-23CA-4E13-A562-A402ED7A4794' > 
                    <File Id='vcomhach_inf' Name='vcomhach.inf' Checksum='yes' DiskId='1' KeyPath='yes' Source="source\inf\vcomhach.inf"/> 
                    <File Id='vcomhachx86_cat' Name='vcomhachx86.cat' Checksum='yes' DiskId='1' Source="source\inf\vcomhachx86.cat"/> 
                    <File Id='vcomhachx64_cat' Name='vcomhachx64.cat' Checksum='yes' DiskId='1' Source="source\inf\vcomhachx64.cat"/> 
                    <difx:Driver AddRemovePrograms="no" Legacy="no" PlugAndPlayPrompt="no" Sequence='1' />
                </Component> 
            </Directory> 
    </Directory> 

now works fine with Win 8 64 bit!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top