Как лучше всего перейти с InstallScript на набор инструментов WiX?

Мы используем проекты InstallShield InstallScript для создания наших установщиков и ищем хороший способ перехода на набор инструментов WiX. Насколько я знаю, нет UpgradeCode (как и для MSI) для обновления проекта Installshield InstallScript до проекта WiX.

Единственное решение, которое я нашел до сих пор, это:

  1. вручную сохранять конфигурации
  2. полностью удалить установку InstallScript
  3. установить установку WiX
  4. применить сохраненные конфигурации

Есть ли способ лучше?


person Letho    schedule 18.05.2016    source источник
comment
Удалите проект installshield и поклянитесь больше никогда о нем не говорить. Вы уверены, что нет UpgradeCode? Можете ли вы открыть MSI, который вы устанавливаете с Orca, и посмотреть его таблицу свойств и посмотреть, есть ли в списке UpgradeCode? Вы также должны иметь возможность реализовать сохранение и восстановление конфигураций как настраиваемые действия в вашей установке wix.   -  person Brian Sutherland    schedule 18.05.2016
comment
Я бы с удовольствием, но, к сожалению, это не вариант. Я поверил, что ответ содержится в этом ссылка, в которой говорится, что UpgradeCode отсутствует. Я не могу, потому что я только генерирую EXE, несовместимый с Orca   -  person Letho    schedule 18.05.2016
comment
Вы должны иметь возможность использовать installer.exe /bC:\Path\to\extract, а затем проверить этот каталог на наличие msi. это также может быть /extract_all:C:\Path\To\extract   -  person Brian Sutherland    schedule 18.05.2016
comment
setup.exe — это просто программа-оболочка вокруг msi. MSI — это то, что фактически устанавливается при запуске программы установки. Установка просто позволяет запускать некоторые дополнительные вещи, такие как выбор языка и необходимые пакеты.   -  person Brian Sutherland    schedule 18.05.2016
comment
Также должна быть какая-то запись в реестре для вашего установленного продукта, которая в конечном итоге ссылается на отформатированный GUID обновления, но ее обнаружение может раздражать.   -  person Brian Sutherland    schedule 18.05.2016
comment
В соответствии с этой справкой для InstallScript< не существует такой опции. /я> проект. Он доступен только для проекта InstallScript MSI.   -  person Letho    schedule 19.05.2016
comment
Я также попытался извлечь UpgradeCode, как описано здесь, но его нет только для установки InstallScript. Также WMIC не перечисляет установку InstallScript. но он показывает все установки MSI.   -  person Letho    schedule 19.05.2016
comment
Ух ты, на самом деле я не вижу msi.   -  person Brian Sutherland    schedule 19.05.2016


Ответы (1)


Хорошо, после всех этих комментариев я думаю, что понимаю, почему это такая проблема. К сожалению, я не думаю, что есть очень простой способ сделать то, что вы хотите сделать.

Я думаю, что ваш метод будет единственным реальным способом перехода с этой установки на основе установки isntallscript. В HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall должна быть запись реестра, относящаяся к вашему продукту. Здесь может быть команда удаления, которую вы можете прочитать в переменной из вашего пакета записи и передать это значение в качестве свойства вашему msi.

В вашем MSI вы можете иметь 3 настраиваемых действия, специально связанных с обновлением с установки продукта installshield. Все эти задачи должны быть отложены настраиваемыми действиями, чтобы их можно было запускать с правами администратора. Первая задача должна скопировать все параметры конфигурации в безопасное место (обычно подойдет %temp%\ProductConfig\). Вторая часть после сохранения конфигурации запустит эту команду удаления для удаления продукта, вам может потребоваться добавить /q или что-то еще, чтобы он работал пассивно/тихо. Затем в конце установки вы можете скопировать файлы конфигурации из temp.

Каждое из настраиваемых действий должно выполняться в зависимости от того, установлено ли свойство, которое вы передали, на что-либо. Я бы запланировал копирование конфигурации после InstallInitialize, удаление после копирования и восстановление перед InstallFinalize, чтобы убедиться, что все скопировано после, когда установщик поместит все файлы в систему.

В идеале вы хотели бы получить все для обновления без необходимости взаимодействия пользователя, за исключением минимального способа, нажав «Далее» и «Установить».

Я имел дело с InstallShield только настолько, чтобы понять, что он мне действительно не нравится, поэтому, если кто-то еще знает больше и знает лучший способ сделать это, он, надеюсь, присоединится.

person Brian Sutherland    schedule 19.05.2016
comment
Большое спасибо за подробное описание! Попробую. - person Letho; 20.05.2016
comment
Для тех, кто столкнулся с той же проблемой, есть также возможность использовать setup.exe в C:\Program Files\InstallShield Installation Information\{ProductCodeFromIsmProject}. для удаления продукта. Когда все скрыто, будет отображаться только одно всплывающее окно: setup.exe /removeonly /hide_splash /hide_usd /hide_progress Это всплывающее окно можно отключить, используя беззвучный режим, примерно так: setup.exe /removeonly /hide_splash /hide_usd /hide_progress /s /f1"SilentUninstall.iss" Думаю, есть лучший способ, но я его пока не нашел. - person Letho; 20.05.2016