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

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

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

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

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

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


person Sumeet    schedule 04.05.2009    source источник


Ответы (6)


Ознакомьтесь с этими двумя свойствами в Руководстве по установщику Windows на MSDN:

person CheGueVerra    schedule 04.05.2009
comment
Я уже знаю об этих функциях, но мои требования другие. В моем случае у пользователя есть установщик MSI. Теперь он может попытаться установить программное обеспечение еще раз после однократной установки. Вот проблема, когда MSI показывает экран с двумя вариантами 1. Восстановить 2. Удалить Мне просто не нужен этот экран. Это тот же экран, который появляется после опции изменения в «Добавить и удалить программы», о которых вы упомянули. - person Sumeet; 05.05.2009
comment
Что вы хотите, когда конечный пользователь нажимает на ваш MSI-файл, когда он установлен? - person CheGueVerra; 05.05.2009

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

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

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

person Russell Steen    schedule 24.06.2011

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

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

Первое: как уже было сказано, 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' и Control 'BodyText'.
  8. Измените свойство "Текст" на это: {\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. Найдите запись с Dialog_ 'MaintenanceForm' и Control 'RepairRadioGroup'.
  10. Измените свойство Control_Next с CancelButton на FinishButton.
  11. Найдите и удалите запись с помощью Dialog_ 'MaintenanceForm' и Control 'RepairRadioGroup'.

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

person Henrik    schedule 19.03.2013


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

  1. Disable Change Button
  2. Disable Repair Button

введите описание изображения здесь

Чтобы справиться со второй проблемой, вы можете просто изменить встроенный MaintenanceWelcome диалоговый экран installshield.

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

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

person RBT    schedule 09.05.2017

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

person Sumeet    schedule 25.11.2009