Пользовательское действие WIX, работающее как 32-разрядный процесс

Мне нужно, чтобы мое пользовательское действие запускалось как 64-разрядный процесс, и я использую Visual Studio 2010. Когда я запускаю msi, я вижу следующую запись в подробном файле журнала:

Здравствуйте, я ваш 32-битный сервер настраиваемых действий с повышенными правами.

и пользовательское действие не выполняется из-за неправильной архитектуры процессора (я вызываю 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>

I have x64 release selected in Configuration Manager in Visual Studio. Does anyone have an idea of what is wrong?


person MattGrimshaw    schedule 23.08.2012    source источник
comment
Привет, не весь мой код был опубликован, поэтому вот первая часть: ‹Package InstallerVersion=200 Compressed=yes InstallScope=perMachine Platform=x64/› ‹Media Id=1 Cabinet=MSUWrapper.Cab EmbedCab=yes /› ‹Directory Id =TARGETDIR Name=SourceDir› ‹Directory Id=ProgramFiles64Folder› ‹Directory Id=APPLICATIONROOTDIRECTORY Name=Maxwell_KB977453/› ‹/Directory› ‹/Directory›   -  person MattGrimshaw    schedule 23.08.2012


Ответы (1)


Установите DllEntry="CAQuietExec64" для пользовательских действий x64.

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

person Tom P.    schedule 20.08.2013