Какой должна быть позиция последовательности для типа настраиваемого действия 18 для деинсталляций? - PullRequest
0 голосов
/ 09 июня 2018

Где в последовательности таблиц InstallExecuteSequence должен быть размещен Тип настраиваемого действия 18 (выполнить приложение, являющееся частью установки), чтобы он выполнялся только во время удаления, поскольку"REMOVE="ALL" или "Installed" условие было применено к нему - так что оно не удаляется перед запуском?

1 Ответ

0 голосов
/ 09 июня 2018

WiX Mock-Up

Какой инструмент вы используете? Вот быстрый Фрагмент WiX :

Synchronous, deferred execution in system context, ignore exit code, run on all types of uninstalls (также значительное удаление обновлений) и running before the RemoveFiles Action:

<CustomAction Id="RunExeUninstall" FileKey="notepad.exe" ExeCommand="" 
              Return="ignore" Execute="deferred" Impersonate="no" />

<...>

<InstallExecuteSequence>
   <Custom Action="RunExeUninstall" Before="RemoveFiles">REMOVE="ALL"</Custom>
</InstallExecuteSequence>

Orca : Приведенное выше должно дать что-то подобное в CustomAction table при просмотре с Orca:

|Action: RunExeUninstall |Type: 3154 |Source: Filename.exe |Target: |


Некоторые детали CA

Обычно перед стандартным действием RemoveFiles и running synchronously- так что the EXE custom action thread необходимо завершить, прежде чем the setup's main thread можно продолжить (или основной протектор, скорее всего, удалит файлы, прежде чем вы закончите в вашем EXE CA).

Я обычно устанавливаю error processing на ignore exit code для удаления пользовательских действий (или откат может неожиданно сработать - отложить установку обратно на коробку, отменив удаление - сделатьустановка не удаляется и, возможно, также не обновляется - незначительные обновления все равно должны работать, но основные обновления могут завершиться неудачей.

Вносит ли это пользовательское действие изменения в систему?(в отличие от просто проверки или регистрации чего-либо).Затем он должен иметь соответствующий rollback custom action, вставленный перед последовательностью в ваше основное настраиваемое действие, отменяя его изменения, если установка отменяется вручную (если вы игнорируете код выхода, сам ЦС не должен запускать откат, но установка все равно может быть отменена вручную пользователем или другими центрами сертификации, которые проверяют код выхода - или какой-то сбой во время выполнения, не связанный с вашими пользовательскими действиями - из-за дискового пространства, ошибок диска и т. д.).

Если вы сделаете changes to per-machine locations (не для записи обычным пользователям), вам нужно будет запустить с elevated rights (deferred execution in system context).

Здесь много подводных камней.Обратите внимание, что откат может быть отключен политикой или свойством - в результате откат и принятие пользовательских действий никогда не будут выполняться.Я добавлю несколько ссылок внизу.


Некоторые ссылки (очень хорошо):

...