Удаление параметра восстановления от MSI-установщик
Я создал стандартный установщик MSI для P&D моего приложения, который использует следующие компоненты:
- служба WCF, размещенная как служба Windows.
- графическое приложение, которое взаимодействует с этим сервисом.
- Dll расширения оболочки.
Установщик работает очень хорошо и без каких-либо проблем. Проблема возникает, когда пользователь пытается установить приложение снова поверх существующего приложения с помощью MSI installer. В настоящее время он придумал экран с 2 вариантами "Ремонт" И "Удаление". Оба эти параметра не работают и портят встроенное приложение.
Я хочу пропустить этот экран и показать что-то вроде MessageBox, говорящего, что приложение уже установлено. Поскольку для меня не обязательно предоставлять пользователю возможность ремонта. И как минимум я должен быть в состоянии скрыть или как-то не предусмотреть вариант ремонта.
Любая помощь или предложения для меня? Итак, до сих пор я пробовал так много вещей, таких как использование ORCA add NotRepair property и т. д. Но ни одного из них работали.
6 ответов:
Принятый ответ оставляет несколько вещей для кого-то без большого опыта установки.
Для того, чтобы сделать это, вы должны отредактировать .Компания 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. это графически удаляет выбор разрешения варианта ремонта. За это я благодарю пола Брюна.
- откройте msi-файл с помощью Orca.exe.
- зайдите в таблицу 'Property'.
- добавьте ключ 'ARPNOMODIFY' со значением
1
.- добавьте ключ 'ARPNOREPAIR' со значением
1
.- измените значение свойства "MaintenanceForm_Action" от
Repair
доRemove
.- перейдите в таблицу "управление".
- найдите запись с Dialog_ 'MaintenanceForm' и управление 'BodyText'.
- измените свойство Text на это:
{\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
- найдите запись с Dialog_ 'MaintenanceForm' и управление 'RepairRadioGroup'.
- измените свойство Control_Next с
CancelButton
наFinishButton
.- найдите и удалите запись с помощью 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
раздел в области сведенийЧтобы решить вторую проблему, вы можете просто изменить встроенный диалоговый экран installshield
Disable Change Button
Disable Repair Button
MaintenanceWelcome
.
- измените текст приветственного сообщения на сообщение об ошибке, например: "уже установлена другая версия этого продукта. Установка не может продолжаться."
- в поведении при нажатии кнопки
Next
просто добавьте событиеEndDialog
. Установите условие его выполнения в1
, чтобы он выполнялся всегда. Установите егоValue
вExit
- измените текст кнопки
Next
на "готово".- отключите или спрячьте кнопку
Cancel
, Если вы хотеть.Все готово!