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>
... 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!