Удалить экран параметров восстановления из установщика MSI

StackOverflow https://stackoverflow.com/questions/819722

Вопрос

Я создал стандартный установщик MSI для P&D моего приложения, который использует следующие компоненты:

  • Служба WCF, размещенная как служба Windows.
  • Приложение с графическим интерфейсом, которое взаимодействует с этим сервисом.
  • Расширение оболочки Dll.

Установщик работает очень хорошо и без каких-либо проблем.Проблема возникает, когда пользователь пытается снова установить приложение поверх существующего приложения с помощью установщика MSI.В настоящее время появляется экран с двумя опциями «Восстановить» и «Удалить».Оба эти варианта не работают и повреждают установленное приложение.

Я хочу пропустить этот экран и показать что-то вроде MessageBox, в котором говорится, что приложение уже установлено.Поскольку мне не обязательно предоставлять пользователю возможность восстановления.И как минимум я должен иметь возможность скрыть или каким-то образом не предоставлять опцию «Восстановить».

Любая помощь или предложения для меня?Итак, я пробовал очень много вещей, таких как использование ORCA, добавление свойства NotRepair и т. д.Но ни один из них не сработал.

Это было полезно?

Решение

Взгляните на Руководство установщика Windows в MSDN для этих двух свойств:

Другие советы

Принятый ответ оставляет некоторые вопросы для тех, у кого нет большого опыта установки.

Для этого вам необходимо отредактировать .MSI после того, как он будет создан установочной сборкой .NET.Самый простой способ сделать это, поддерживаемый Microsoft: Орка.Вы можете установить Orca из Пакет SDK для .NET Framework.Если вы считаете, что у вас уже есть SDK, но в меню «Пуск» нет Orca, найдите на своем компьютере «Orca.exe» или «Orca.msi».

Как только Orca будет установлена, просто запустите ее.Откройте файл MSI с помощью пользовательского интерфейса Orca.Слева вы увидите список «Таблицы».Выберите стол Свойство.На правой панели щелкните правой кнопкой мыши и добавьте.Добавьте узел с именем ARPNOREPAIR.Убедитесь, что вы установили значение в пустую строку "".Также добавьте узел для ARPNOMODIFY если вы не хотите, чтобы опция изменения отображалась в окнах вашей программы.

Поймите, что этой проблеме уже несколько лет, но я полагаю, что такие люди, как я, все еще сталкиваются с этой проблемой.Сумит упоминает в комментарии к принятому решению, что пользователь по-прежнему может получить доступ к экрану с обеими опциями: «Восстановить» и «Удалить».

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

Один:Как уже было сказано, ARPNOMODIFY и ARPNOREPAIR устраняют проблему только при добавлении и удалении программы, это можно сделать с помощью «Orca.exe».

Два:Щелкнув правой кнопкой мыши установщик файла msi.К сожалению, это единственное место, где, похоже, нет возможности избежать обоих вариантов без внесения корректировок на уровне всего компьютера для всех файлов MSI.

Три:При двойном щелчке по установщику, если он уже установлен, появляется экран с переключателями «Восстановить» и «Удалить».

Ниже я нашел эту аккуратную адаптацию для решения третьей точки доступа, несколько переписанную здесь: http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-help-49010162.html.Он графически удаляет выбор разрешения варианта ремонта.За это я благодарен Полу Бруну.

  1. Откройте MSI-файл с помощью Orca.exe.
  2. Зайдите в таблицу «Свойство».
  3. Добавьте ключ «ARPNOMODIFY» со значением 1.
  4. Добавьте ключ «ARPNOREPAIR» со значением 1.
  5. Измените значение свойства MaintenanceForm_Action с Repair к Remove.
  6. Зайдите в таблицу «Контроль».
  7. Найдите запись с Dialog_ «MaintenanceForm» и элементом управления «BodyText».
  8. Измените свойство «Текст» на следующее:{\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. Найдите запись с Dialog_ «MaintenanceForm» и элементом управления «RepairRadioGroup».
  10. Измените свойство Control_Next с CancelButton к FinishButton.
  11. Найдите и удалите запись с помощью Dialog_ «MaintenanceForm» и Control «RepairRadioGroup».

С выполнением вышеописанных шагов может быть связана автоматизация процесса адаптации MSI с помощью преобразования, полученного в результате выполнения этих шагов только один раз.Более подробную информацию о том, как это сделать, можно найти здесь: Используйте Orca для редактирования MSI из командной строки?

Я согласен с Хенриком, но в моем случае последний шаг

Найдите и удалите запись с помощью Dialog_ «MaintenanceForm» и Control «RepairRadioGroup».

вызвать ошибку 2814.
Итак, мое предложение:сделайте RepairRadioGroup невидимым.Чтобы сделать это, просто установите его, с Атрибут до 0

UPDATE Control SET Attributes = 0 WHERE Control = 'RepairRadioGroup'

На сегодняшний день это намного проще, если вы отредактируете файл ISM через installshield.Чтобы отключить Change и Repair Кнопка на экране «Добавить/удалить программу» установите следующие настройки на Yes на Installation Designer вкладка > Installation Information узел на панели навигации > General Information узел на панели навигации > Add or Remove Programs раздел в панели подробностей

  1. Disable Change Button
  2. Disable Repair Button

enter image description here

Чтобы решить вторую проблему, вы можете просто изменить встроенный MaintenanceWelcome Диалоговое окно installshield.

  1. Измените текст метки приветственного сообщения на какое-либо сообщение об ошибке, например.«Другая версия этого продукта уже установлена.Установка не может быть продолжена».
  2. В поведении при нажатии Next кнопка просто добавить EndDialog событие.Установите условие выполнения на 1 чтобы он выполнялся всегда.Установите его Value к Exit
  3. Измените текст Next нажмите кнопку «Готово».
  4. Отключите или скройте Cancel нажмите кнопку, если хотите.

У вас все настроено!

Я завернул setup.exe и MSI в EXE-файл.При нажатии извлекаются файлы и активируется файл Setup.exe.В этот exe я добавил код, проверяющий, установлено ли приложение на компьютере или нет.Если он установлен, я запрашиваю пользователя и выхожу.Таким образом, MSI никогда не запускается, если приложение уже установлено, поэтому экран «Восстановить и удалить» никогда не появляется.Что касается кнопки «Изменить» на экране «Добавить/Удалить», я использовал решение, предоставленное «CheGueVerra».Благодаря вам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top