Wix: установка компонента во время ремонта или переустановки - PullRequest
0 голосов
/ 09 февраля 2012

Проблема:
У меня есть требование пользователя, при котором файл не будет установлен, если на компьютере пользователя отсутствует необходимое приложение. Но после установки моего продукта, когда пользователь установит это необходимое приложение, он запустит мой установщик и выберет восстановление, чтобы установить этот отсутствующий файл и связанные с ним записи реестра.

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

Есть тут и там с AddLocal ???

Ответы [ 3 ]

1 голос
/ 09 февраля 2012

Вы можете использовать условие внутри тега компонента. Пример:

<Component Id="RepairOrReinstallOnly" Guid="YourGUID" Transitive="yes">
    <Condition>
        INSTALLED AND (NOT UPGRADINGPRODUCTCODE)
    </Condition>
    ...
</Component>

Таким образом, компонент должен быть установлен только при ремонте, модификации и повторной установке.

Но он не будет установлен при первой установке (INSTALLED - false) или при значительном обновлении (UPGRADINGPRODUCTCODE - true).

0 голосов
/ 10 февраля 2012

Я не думаю, что это осуществимо, потому что, когда установщик Windows кэширует ваши MSI-файлы, CAB-файлы удаляются. Это означает, что исходные файлы, которые были изначально пропущены, не будут доступны, если пользователь не оставит оригинальный установщик рядом с собой. Это немного натянуто, чтобы сделать такое предположение.

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

0 голосов
/ 09 февраля 2012

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

Теперь, когда вы устанавливаете необходимую программу и хотите, чтобы эта программа 2 не была установлена, она должна быть установлена ​​при повторном запуске программы установки.

В установщике есть 3 варианта. Добавить / удалить функцию, восстановить и удалить. Вы можете перейти к Добавить / Удалить функцию и выбрать программу 2 и установить ее.

Необходимо установить в установщике условия, что, если pre-req не установлен, программа 2 не может быть установлена. Поэтому, когда вы пытаетесь установить в первый раз и выбираете программу 2 или полную установку, она скажет вам, что вы не можете установить ее, так как предварительных требований нет. Он только установит программу 1. И при повторном запуске установки отобразится опция Добавить / Удалить функцию.

...