0

カスタム アクションを x64 ビット プロセスとして実行する必要があり、Visual Studio 2010 を使用しています。msi を実行すると、詳細ログ ファイルに次のエントリが表示されます。

こんにちは、私はあなたの 32bit Elevated カスタム アクション サーバーです

また、プロセッサ アーキテクチャが間違っているためにカスタム アクションが失敗します (バッチ ファイル経由で DISM.exe を呼び出しています)。私のプロジェクトはかなり単純です:

    <DirectoryRef Id="APPLICATIONROOTDIRECTORY" >
        <Component Id="Launch.cmd" Guid="{423CD408-F053-496B-8FA7-6C329A2F53BB}" Win64="yes">
            <File Id="Launch.cmd" Name="Launch.cmd" Source="C:\Temp\Build\MSU Wrapper for SCUP\Launch.cmd" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64"/>
        </Component>
        <Component Id="KB977453.cab" Guid="{E8ABB2AE-6F57-4153-B44C-E1083D6702B1}" Win64="yes">
            <File Id="KB977453.cab" Name="KB977453.cab" Source="C:\Temp\Build\MSU Wrapper for SCUP\KB977453.cab" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64"/>
        </Component>
    </DirectoryRef>

    <Feature Id="MainApplication" Title="Main Application" Level="1">
        <ComponentRef Id="Launch.cmd" />
        <ComponentRef Id="KB977453.cab" />
    </Feature>

    <CustomAction Id="BatchCmd" Property="BatchRun" Value="&quot;[#Launch.cmd]&quot; KB977453" Execute="immediate"/>
    <CustomAction Id="BatchRun" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no" />

    <InstallExecuteSequence>
        <Custom Action="BatchCmd" Before="BatchRun">NOT Installed</Custom>
        <Custom Action="BatchRun" After="InstallFiles">NOT Installed</Custom>
        <ScheduleReboot After="InstallFinalize" />
    </InstallExecuteSequence>

</Product>

Visual Studio の構成マネージャーで x64 リリースを選択しています。誰が何が間違っているのか考えていますか?

4

1 に答える 1

1

x64 カスタム アクションのDllEntry= "CAQuietExec64"を設定します。

http://wix.sourceforge.net/manual-wix3/qtexec.htm

于 2013-08-20T08:37:29.323 に答える