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
).
Здесь много подводных камней.Обратите внимание, что откат может быть отключен политикой или свойством - в результате откат и принятие пользовательских действий никогда не будут выполняться.Я добавлю несколько ссылок внизу.
Некоторые ссылки (очень хорошо):