WiX, условно установка файла на базе ОС - PullRequest
2 голосов
/ 09 июня 2009

В моем проекте WiX мне нужно установить различное содержимое для одного и того же имени файла в зависимости от ОС.

  • Если ОС Windows 7, файл должен иметь содержимое X.
  • Если ОС Windows Vista, файл должен иметь содержимое Y.

Я продумал несколько подходов:

  1. Определите два компонента, один с содержимым для Windows 7, а другой с содержимым для Vista. Запустите пользовательское действие на основе ОС, которое перезаписывает содержимое для Vista, если ОС Windows 7.

  2. Определите две дополнительные функции (конфигурация windows7 и win vista config), чтобы компоненты предназначались для одного и того же файла и устанавливали функцию условно на основе ОС.

Какой самый лучший подход. Какие-нибудь подсказки, уловки и образец wix, чтобы начать это?

Ответы [ 2 ]

3 голосов
/ 09 июня 2009

Я бы сделал слегка измененную версию # 1. Есть два компонента. Один условно для установки на Vista. Другой условно для установки на Win7. Тогда у меня будет соответствующий файл в соответствующем Компоненте. Нет необходимости в CustomAction. CustomActions следует избегать любой ценой, см .: http://robmensching.com/blog/archive/2007/08/17/Zataoca-Custom-actions-are-generally-an-admission-of-failure.aspx

PS: пометьте компоненты как переходные, чтобы при обновлении операционной системы устанавливалось правильное содержимое.

1 голос
/ 09 июня 2009

Другим решением будет установка обоих файлов и чтение приложения из правильного во время выполнения. Если это файл, который впоследствии может быть изменен вашим приложением, то, вероятно, вы все равно не хотите устанавливать его напрямую, а вместо этого установите «по умолчанию», который читается, если файл «для пользователя» не существует. В этом случае, когда файл «на пользователя» не существует, прочитайте соответствующие глобальные значения по умолчанию для ОС и затем запишите их в файл «на пользователя» при первом запуске (или всякий раз, когда определенный файл не существует).

Иногда то, что имеет смысл при первоначальной разработке приложения, не в конечном итоге приводит к «хорошему» результату установщика Windows, и вам необходимо изменить несколько вещей:)

...