ConfigurableDirectory : Вы можете использовать атрибут ConfigurableDirectory
элемента Элемент функции , чтобы установитьнастраиваемый каталог функций.См. Внизу страницы в разделе снимков экрана: Как назначить значение пути для каталога в WIX? .
Только макет :
Примечание : Я основываюсь на стандартном наборе диалогов WiX Mondo . Чтобы подключить диалоги Mondo, посмотрите этот ответ .По сути, добавьте ссылку на WixUIExtension.dll
и вставьте элемент <UIRef Id="WixUI_Mondo" />
.Это скомпилирует диалоговое окно WiX по умолчанию, установленное в ваш MSI.
<Feature Id="MyFeature" Title="MyFeature" Level="1" ConfigurableDirectory="INSTALLFOLDER"></Feature>
<..>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="InstallDirConfigurableTesting">
Помните свойство : обратите внимание, что вы должны сохранить свое местоположение каталога самостоятельно в реестре иПрочтите об основных обновлениях, иначе ваш продукт будет «перемещен» во время обновлений (я знаю, это странно).Это упорство не происходит автоматически каким-либо образом, о котором я знаю.Вы можете сохранить свойство и прочитать его обратно, используя «Помни шаблон», как описано создателем WiX и благотворительностью Робом Меншингом здесь: Шаблон «Помнить свойство» набора инструментов WiX .
Совет по реализации : Проверка возврата свойства каталога для основных сценариев обновления может быть немного сложной.Если вы создаете тестовый проект в Visual Studio с помощью Votive, вы можете использовать эту хитрость, чтобы просто скомпилировать версию 1 вашего MSI (теперь добавьте суффикс MSI-файла в выходную папку сборки с _Version1.0.0.msi
или подобным), изатем поднимите одну из первых трех цифр свойства номера версии и создайте версию обновления (суффикс с _Version2.0.0.msi
или подобным).Затем вы устанавливаете последовательность, выбирая пользовательский каталог установки, и проверяете, правильно ли ваша вторая установка обнаруживает измененный путь.Просто используйте макет или тестовый проект с одним компонентом, чтобы это заработало, иначе вы можете свести себя с ума, если вам придется скомпилировать всю вашу установку.Затем просто введите готовую разметку в основной проект.Очевидно, да - просто упоминание.
Некоторые дополнительные ссылки :