0

我的安装程序包在 Windows 8 64 位上失败,但在 Windows7 64 位上运行得很好。现在我知道在 Windows 8 中需要对 INF 包进行签名,并且我解决了这个问题,但现在我遇到了错误(0x65B),它没有提供任何细节。我花了相当多的时间在谷歌上搜索这是什么但没有成功。谢谢你。

以下是详细信息: MSI 日志(失败时):

MSI (s) (D0:04) [15:47:34:793]:执行操作:ActionStart(Name=MsiInstallDrivers,,)
MSI (s) (D0:04) [15:47:34:793]:执行操作:CustomActionSchedule(Action=MsiInstallDrivers,ActionType=3073,Source=BinaryData,Target=InstallDriverPackages,CustomActionData=2.15{F4058B90-23CA-4E13- A562-A402ED7A4794}C:\Windows\INF\QC8500s2Driver_64bit\62QuikChem 8500 系列 2 驱动程序 64-bitLachat)
MSI (s) (D0:D0) [15:47:34:809]:调用远程自定义操作。DLL:C:\Windows\Installer\MSIA78D.tmp,入口点:InstallDriverPackages
DIFXAPP:输入:InstallDriverPackages()
DIFXAPP:信息:“CustomActionData”属性“DIFxApp 版本”为“2.1”。
DIFXAPP:信息:“CustomActionData”属性“UI 级别”为“5”。
DIFXAPP:信息:“CustomActionData”属性“componentId”为“{F4058B90-23CA-4E13-A562-A402ED7A4794}”。
DIFXAPP:信息:“CustomActionData”属性“componentPath”为“C:\Windows\INF\QC8500s2Driver_64bit\”。
DIFXAPP:信息:“CustomActionData”属性“标志”为 0x6。
DIFXAPP:信息:“CustomActionData”属性“installState”为“2”。
DIFXAPP:信息:“CustomActionData”属性“ProductName”是“QuikChem 8500 系列 2 驱动程序 64 位”。
DIFXAPP:信息:“CustomActionData”属性“ManufacturerName”是“Lachat”。
DIFXAPP:信息:执行安装的用户的用户 SID 是“S-1-5-21-2091490019-4240601677-1653081351-1001”。
DIFXAPP:信息:打开 HKEY_USERS\S-1-5-21-2091490019-4240601677-1653081351-1001\Software\Microsoft\Windows\CurrentVersion\DIFxApp\Components\{F4058B90-23CA-4E13-A562-A402ED7A4794}(用户的 SID: 'S-1-5-21-2091490019-4240601677-1653081351-1001') ...
DIFXAPP:信息:输入:DriverPackageInstallW
DIFXAPP:信息:返回:DriverPackageInstallW (0x65B)
DIFXAPP:错误:安装驱动程序包“C:\Windows\INF\QC8500s2Driver_64bit\vcomhach.inf”时遇到
DIFXAPP:错误:InstallDriverPackages 失败,错误为 0x65B
DIFXAPP:返回:InstallDriverPackages() 1627 (0x65B)
CustomAction MsiInstallDrivers 返回实际错误代码 1603(请注意,如果翻译发生在沙箱内,这可能不是 100% 准确)
操作于 15:47:34 结束:InstallFinalize。返回值 3。

注意两行的部分:

DIFXAPP:信息:输入:DriverPackageInstallW
DIFXAPP:信息:返回:DriverPackageInstallW (0x65B)

这是我的 WIX 的创建方式

"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 工具集 v3.8\bin\difxapp_x64.wixlib" -o Qc8500s2DriverInstaller64bit.msi

这就是我的 INF 包是如何被 INF2CAT'ed 和签名的:

"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" 签名 /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" 签名 /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"

这是我的 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>
4

1 回答 1

1

...经过大约 3 天的修补,我发现了问题所在。

正如您在我原来的 WIX 中看到的,我正在部署到 WindowsFolder\INF。事实证明,INF 文件在该文件夹中获得了某种双重锁定。我通过重写我的 wix 来执行 DPINST 而不是 DifX:Driver 发现了这一点,当我运行 DPINST / C(它记录到附加的控制台)时,我看到了文件锁定错误的解释,错误代码与我原来的帖子相同。将我的 WIX 更改为:

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

现在适用于 Win 8 64 位!

于 2014-03-17T15:40:34.390 回答