Установить каталог установки по умолчанию в зависимости от прав

Я пытаюсь использовать Wix # для создания установщика MSI, и меня вполне устраивает простой в использовании синтаксис по сравнению с Wix.

Сейчас я пытаюсь сделать что-то нестандартное, и я немного растерялся, так как на самом деле не знаком с Wix.

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

Как обычный пользователь я хочу установить каталог установки по умолчанию на %LocalAppData%\MyProduct, тогда как как администратор каталог установки по умолчанию должен быть %ProgramFiles%.

Используя простой Wix, кажется, есть решение, которым можно управлять.

Как этого добиться с помощью Wix #?

Я должен упомянуть, что мне действительно не хватает навыков, чтобы делать это в одиночку, поскольку я не знаю ни WiX, ни Msi, ни даже C # в какой-либо степени. Следовательно, я ищу минимальное воспроизводимое решение моей проблемы.


person Aleph0    schedule 20.08.2019    source источник


Ответы (1)


В приведенном вами примере (автором WiX) показано, как установить каталог в зависимости от того, для каждого пользователя или для каждого компьютера:

<DirectoryRef Id="TARGETDIR">
    <Directory Id="ApplicationFolder" Name="App" />
</DirectoryRef>

Если администратор устанавливает свою машину на компьютере, если не администратор, значение по умолчанию - на пользователя:

<CustomAction Id="PerMachineInstall" Property="ApplicationFolder" Value="[ProgramFilesFolder]\[ApplicationFolderName]" Execute="immediate" />
<CustomAction Id="PerUserInstall" Property="ApplicationFolder" Value="[LocalAppDataFolder]\Apps\[ApplicationFolderName]" Execute="immediate" />

Вы сможете изменить [LocalAppDataFolder]\Apps\[ApplicationFolderName] на [LocalAppData]\MyProduct

Проблема с кодом в том, что <Directory Id="ApplicationFolder" - это нижний регистр.

Согласно https://wixtoolset.org/documentation/manual/v3/xsd/wix/setdirectory.html

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

По теме: Wix - правильная установка папки для установки

person Jeremy Thompson    schedule 23.08.2019
comment
Большое спасибо за подробное решение. Я просто изменил свой вопрос, так как ищу минимальное воспроизводимое решение с Wix #. Мне просто не хватает навыков работы с WiX и C #, чтобы делать что-либо здесь самостоятельно. Можете ли вы опубликовать полное решение C # с помощью Wix #? - person Aleph0; 23.08.2019