Набор инструментов Wix - почему это второе настраиваемое действие не запускается при установке? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть эти два настраиваемых действия, которые необходимо выполнить во время установки моего приложения. Одна из них - это форма windows, которая принимает вводимые пользователем данные, другая предназначена для выполнения только что установленного приложения. После всего этого необходимо перезагрузить систему. Однако действие, выполняющее приложение, не работает. Вот что у меня есть в <InstallExecuteSequence>:

<InstallExecuteSequence>
      <Custom Action='UserInputCustomAction' After='InstallFinalize'>NOT Installed</Custom>
      <Custom Action='InstallRuntime' After='InstallFinalize'>NOT Installed</Custom>
      <ScheduleReboot After='InstallFinalize' />
</InstallExecuteSequence>

InstallRuntime - это действие, которое запускает приложение. Я пробовал установить After на UserInputCustomAction, но это тоже не работает. Приложение, которое необходимо запустить, устанавливается в целевой каталог.

Вот как я определил настраиваемые действия:

<Fragment>
    <Binary Id="CustomActionBinary" SourceFile="$(var.GetUserInputAction.TargetDir)$(var.GetUserInputAction.TargetName).CA.dll"/>
    <CustomAction Id="UserInputCustomAction" BinaryKey="CustomActionBinary" DllEntry="GetUserInput" Execute="immediate" Return="check"/>
</Fragment>

<Fragment>
    <CustomAction Id='InstallRuntime' FileKey='runthisplease.exe' ExeCommand='' Return='asyncNoWait' />
</Fragment>

Я попытался поместить InstallRuntime внутри тот же фрагмент, что и UserInputCustomAction, я также пробовал добавить тег Execute='Immediate' к InstallRuntime, но он все еще не работает.

1 Ответ

0 голосов
/ 03 августа 2020

Разобрался с решением.

Мне нужно было добавить ссылку на WixUtilExtension.dll.

Затем мне пришлось определить свое настраиваемое действие следующим образом:

<Property Id="WixShellExecTarget" Value="[#RuntimeID]" />
<CustomAction Id='InstallRuntime' BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />

Где [#RuntimeID] относится к идентификатору файла того, что я пытаюсь запустить.

Затем я мог бы вызвать второе настраиваемое действие после первого следующим образом:

<Custom Action='UserInputCustomAction' After='InstallFinalize'>NOT Installed</Custom>
<Custom Action='InstallRuntime' After='UserInputCustomAction'>NOT Installed</Custom>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...