Проверка WiX на наличие предыдущей установки

У меня есть устаревшее приложение, которое установлено непосредственно на диск c: пользователя в каталоге (например, c: \ MyApp). Гадость. Проблема в том, что пользователь может указать вторую установку на втором диске (например, e: \ MyApp), и у них могут быть одновременно установлены две разные версии приложения в любом каталоге. Они также могут решить установить приложение в другом месте дерева каталогов, но это два наиболее распространенных места.

Я эту схему не писал. Насколько я понимаю, это заставляет младенца Иисуса плакать.

Мне нужно написать установщик, чтобы добавить модуль в эту схему, и пользователь должен иметь возможность выбрать, на какой установке он хочет установить модуль. Думал попробовать это в WiX.

Как мне это сделать?

Я собирался выполнить поиск в каталоге, например

<Property Id="MyAppInstallationSearch">
  <DirectorySearch Id="MyAppDirectory" Path="C:\MyApp">
  </DirectorySearch>
</Property>

а потом:

<Directory Id="TARGETDIR" Name="MyAppInstallationSearch">
    <Directory Id="INSTALLLOCATION" Name="AdditionalTools">
    </Directory>
</Directory>

иметь место для установки.

Итак, как мне:

  1. Сделать этот поиск относительным, а не абсолютным? (в документации указано, что это можно сделать, просто не понимаю, как).

  2. Если у пользователя несколько расположений, дать ему выбор, какую установку использовать?


person mmr    schedule 01.04.2009    source источник
comment
Записывала ли что-нибудь в реестр исходная установка (и)? Поиск по всему диску (есть настройка глубины в поиске в каталоге iirc) может занять много времени. Какая исходная установка была выполнена с использованием (installshield и т. Д.)?   -  person user53794    schedule 06.04.2009
comment
хороший вопрос, не знаю. Я знаю, что предыдущий установщик был installshield, но я считаю, что это была версия, купленная в 98 или 99.   -  person mmr    schedule 06.04.2009
comment
Как определить, что в конкретном каталоге C: \ MyApp установлено ваше приложение? Какая ОС используется?   -  person NileshChauhan    schedule 09.04.2009
comment
ОС - это любая установка Windows, начиная с xp sp2; сам установщик намного старше, поэтому я полагаю, что может поддерживаться win2k или 98, но я не думаю, что это будет проблемой.   -  person mmr    schedule 12.04.2009


Ответы (2)


  1. Это будет относительное значение, AdditionalTools будет находиться в папке, найденной MyAppInstallationSearch.
  2. Это потребует создания пользовательского интерфейса, что в Wix нелегко, существуют продукты, которые могут создавать выходные данные Wix или WixEdit . Вам нужно будет выполнить поиск в каталоге во всех возможных местах и ​​показать пользовательские переключатели (каждая из которых привязана к результатам поиска), чтобы выбрать место для установки нового продукта.
person Shay Erlichmen    schedule 01.04.2009
comment
Хорошо, но как мне вообще найти результаты? - person mmr; 02.04.2009
comment
Результаты поиска где-то хранятся, да? Где? Как мне получить к ним доступ? И как мне указать «искать весь компьютер»? - person mmr; 03.04.2009
comment
Я думаю, что будет лучше, если вы напишете VBS, который будет искать диски. MSI не знает, как выполнять поиск по нескольким файлам. он остановится на первом найденном. - person Shay Erlichmen; 08.04.2009
comment
Я считаю, что вы не можете использовать сценарий, который еще не был установлен. - person mmr; 12.04.2009
comment
Нет, вы можете использовать скрипт, который встроен в установку или будет установлен при установке. - person Shay Erlichmen; 12.04.2009

Мне пришлось реализовать то же самое, и я использовал внешний обработчик пользовательского интерфейса, чтобы полностью настроить процесс установки. Я также отображаю страницу мастера, где пользователь может выбрать версию, с которой он хочет обновить. Но имейте в виду, что это не то, что вы можете сделать в течение дня или двух.

Я не знаю, какой язык программирования вы используете, но если вы хотите использовать .NET, вы можете использовать Development Tools Foundation, включенную в Wix3. Библиотеки можно найти в папке SDK вашей установки Wix (в основном вам понадобится Microsoft.Deployment.WindowsInstaller.dll), документация находится в DTF.chm в каталоге doc. Вам также понадобится загрузчик для установки .NET framework.

Вы также можете дождаться Wix 3.5, который будет включать Burn, ускоритель и внешний обработчик пользовательского интерфейса, который вы можете легко настроить.

HTH

person Simon    schedule 28.07.2009