0

私のインストーラー パッケージは Windows 8 64 ビットでは失敗しますが、windows7 64 ビットでは問題なく動作します。Windows 8 では INF パッケージの署名が必要であることを知り、その問題を解決しましたが、詳細を提供しないエラー (0x65B) が発生しています。これが何であるかをグーグルで調べるのにかなりの時間を費やしましたが、成功しませんでした。ありがとうございました。

詳細は次のとおりです: MSI ログ (失敗した場合):

MSI (s) (D0:04) [15:47:34:793]: op を実行しています: ActionStart(Name=MsiInstallDrivers,,)
MSI (s) (D0:04) [15:47:34:793]: 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 シリーズ 2 ドライバー 64 ビット Lachat)
MSI (s) (D0:D0) [15:47:34:809]: リモート カスタム アクションを呼び出しています。DLL: C:\Windows\Installer\MSIA78D.tmp、エントリポイント: InstallDriverPackages
DIFXAPP: ENTER: 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' プロパティの 'flags' は 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: 情報: ENTER: 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。

2 行のセクションに注意してください。

DIFXAPP: 情報: ENTER: 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 Toolset v3.8\bin\difxapp_x64.wixlib" -o Qc8500s2DriverInstaller64bit.msi

これは、私の INF バンドルが INF2CAT 化され、署名された方法です。

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

これは私の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 ファイルがそのフォルダーである種の二重ロックを取得していることがわかりました。DifX:Driver の代わりに DPINST を実行するように Wix を書き直すことでこれを発見し、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 に答える