Можно ли добавить диалоговое окно для удаления в wix? - PullRequest
2 голосов
/ 24 декабря 2009

Я хочу добавить настраиваемое диалоговое окно для удаления моего приложения. Я также попробовал следующее:

<InstallUISequence>
   <Show Dialog="RemoveDlg" OnExit="success">REMOVE="ALL"</Show>
</InstallUISequence>

Это возможно или нет в wix? Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

5 голосов
/ 24 декабря 2009

Хотя вы, безусловно, можете создавать диалоги, относящиеся к удалению продукта, деинсталляции, запущенные с помощью кнопки «Удалить» в «Установка и удаление программ» (теперь «Программы и компоненты»), выполняются без последовательности пользовательского интерфейса и, следовательно, не отображают эти диалоги. Одна из распространенных альтернатив - установить свойство ARPNOREMOVE, которое затем требует от конечного пользователя нажать «Изменить» вместо «Удалить». Кнопка «Изменить» запускает обслуживание, которое отображает ваш пользовательский интерфейс.

0 голосов
/ 22 августа 2012

Если данные в% appdata% \ product \ не могут вызвать проблемы при переустановке приложения, я бы порекомендовал оставить его на месте при удалении. Все, что вы устанавливаете в эту папку, считается пользовательскими данными и не должно автоматически удаляться по умолчанию - и часто также не в качестве опции. Многие компании применяют пользовательские разрешения для папок userprofile. Возникновение там может привести к серьезному взлому MSI - особенно на терминальных серверах, вызвав самовосстановление (что обычно не разрешено на TS).

Помните, что для установки, удаления и установки исправлений используется одна и та же последовательность установки. Если вы используете крупные обновления, которые по существу удаляют и переустанавливают продукт, вы можете удалить пользовательские данные и переустановить их для каждой установки. Если это приемлемо, данные, с которыми вы имеете дело, не являются пользовательскими данными и, следовательно, расположены не в том месте на диске.

Если вы выполняете операцию удаления в конце удаления с помощью пользовательского действия, проверяющего код выхода, вы можете запустить откат удаления, что по существу приведет к переустановке продукта и невозможности его удаления! Редко, но так бывает. Если пользовательское действие запускается после InstallFinalize и, следовательно, выходит за пределы последовательности установки MSI, ваша установка может вернуть код ошибки удаления и оставить ваш продукт неработающим, а удаление неполным или ваш продукт частично незарегистрированным.

Короче, я бы не стал возиться с этим. Если у вас настойчивые клиенты, я бы не стал связываться с диалогом, если бы мог помочь. Я бы добавил свойство PUBLIC, чтобы контролировать, выполняется ли настраиваемое действие непосредственно перед InstallFinalize. Сбросьте все коды возврата ошибок и запишите информацию в журнал MSI. Затем пользователи могут удалить пользовательские данные, указав свойство в командной строке или жестко закодировав его в таблице свойств.

Если вам нужен графический интерфейс, вы можете использовать это же свойство для установки в настраиваемом диалоговом окне, чтобы контролировать, выполняется ли удаление. Не забудьте тщательно обставить отображение диалога. Я не показываю это во время операций исправления.

...