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


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

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

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

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

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

6 5

6 ответов:

Посмотрите на руководство по установке Windows в MSDN для этих двух свойств:

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

Для того, чтобы сделать это, вы должны отредактировать .Компания MSI после того, как он создан .Чистая установка сборки. Простой поддерживаемый Microsoft способ сделать это - Orca. Вы можете установить Orca из.NET Framework SDK . Если вы думаете, что у вас уже есть SDK, но нет Orca в меню Пуск, то найдите на своей машине "Orca.ехе " или " орка.компания MSI".

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

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

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

Один: Как уже ответили ARPNOMODIFY и ARPNOREPAIR исправляет проблему в Add Remove Program only, can быть сделано с "косатка.исполняемый".

Два: Щелкнув правой кнопкой мыши установщик для 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. зайдите в таблицу 'Property'.
  3. добавьте ключ 'ARPNOMODIFY' со значением 1.
  4. добавьте ключ 'ARPNOREPAIR' со значением 1.
  5. измените значение свойства "MaintenanceForm_Action" от Repair до Remove.
  6. перейдите в таблицу "управление".
  7. найдите запись с Dialog_ 'MaintenanceForm' и управление 'BodyText'.
  8. измените свойство Text на это: {\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 "Ремонтрадиогруппа".

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

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

Найдите и удалите запись с помощью Dialog_ 'MaintenanceForm' и элемента управления 'RepairRadioGroup'.

Причина 2814 ошибка. Поэтому мое предложение таково: сделайте RepairRadioGroup невидимым. Для этого просто установите его, s атрибут в 0

Обновить набор атрибутов управления = 0, где RepairRadioGroup управления = ''

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

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

  1. Disable Change Button
  2. Disable Repair Button

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

Чтобы решить вторую проблему, вы можете просто изменить встроенный диалоговый экран installshield MaintenanceWelcome.
  1. измените текст приветственного сообщения на сообщение об ошибке, например: "уже установлена другая версия этого продукта. Установка не может продолжаться."
  2. в поведении при нажатии кнопки Next просто добавьте событие EndDialog. Установите условие его выполнения в 1, чтобы он выполнялся всегда. Установите его Value в Exit
  3. измените текст кнопки Next на "готово".
  4. отключите или спрячьте кнопку Cancel, Если вы хотеть.

Все готово!