Sunday, September 4, 2011

WiX: Switch per-machine installation to per-user installation

Обнаружил, что для перехода от per-machine установки в WiX на per-user не достаточно просто сменить путь установки, например, заменив CommonAppDataFolder на AppDataFolder. Не помогут даже никакие свойства ALLUSERS и MSIINSTALLPERUSER. Файлы все равно будут устанавливаться в CommonAppDataFolder, причем даже в том случае, когда установщику прав администратора не нужно и это явно прописано в свойстве Package@InstallPrivileges=limited. Чтобы установить файлы в профиль текущего пользователя нужно, чтобы компонент, содержащий эти файлы, отрегистрировался ветке реестра HKCU, вместо HKLM. Для этого компоненту нужно добавить дочерний элемент RegistryValue, например, так:
<RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]\MyComponent" Name="Installed" Type="integer" Value="1" KeyPath="yes"/>
Добавление такого тега также устраняет ошибку: ICE38: Component installs to user profile. It must use a registry key under HKCU as its KeyPath not a file.

No comments: