Wix - измените папку установки на основе привилегий

StackOverflow https://stackoverflow.com/questions/1017294

  •  06-07-2019
  •  | 
  •  

Вопрос

Я должен создать установочный пакет с помощью Wix.Если пользователь с правами администратора устанавливает пакет, он должен быть установлен в %programfiles%/[ApplicationName], если пользователь не является пользователем с правами администратора, то он должен быть установлен в его локальную папку профиля (LocalAppDataFolder).

Как это возможно?

Это было полезно?

Решение

Я написал это для Переход по ссылке очень давно.Решение из этого выглядит очень похоже на это (вы предоставляете свойство с именем "ApplicationFolderName").:

    <Property Id="A" Secure="yes" />

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

    <Condition Message="Must specify TARGETDIR property when doing an administrative install.">Installed OR (ACTION="ADMIN" AND TARGETDIR&lt;&gt;"")</Condition>

    <CustomAction Id="TARGETDIRtoA" Property="A" Value="[TARGETDIR]" Execute="firstSequence" />

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

    <InstallUISequence>
        <Custom Action="SpecifiedA" Before="LaunchConditions">NOT Installed</Custom>
    </InstallUISequence>

    <InstallExecuteSequence>
        <Custom Action="PerMachineInstall" Before="CostFinalize">NOT Installed AND ACTION="INSTALL" AND A="" AND (ALLUSERS=1 OR (ALLUSERS=2 AND Privileged))</Custom>
        <Custom Action="PerUserInstall" Before="CostFinalize">NOT Installed AND ACTION="INSTALL" AND A="" AND (ALLUSERS="" OR (ALLUSERS=2 AND (NOT Privileged))</Custom>
    </InstallExecuteSequence>

Другие советы

Переопределение свойства ProgramFilesFolder должно выполняться следующим образом:

<SetProperty Id="ProgramFilesFolder" Value="[AppDataFolder]" Before="CostFinalize"><![CDATA[ NOT Privileged]]></SetProperty>

<Directory Id="ProgramFilesFolder" Name="PFiles">
    <Directory Id="INSTALLDIR" Name="My Folder">
        ...
    </Directory>
</Directory>

ваш код не может работать на моем проекте wix в настоящее время я использую AdminUser = " 1 " судить, если мы находимся под привилегией администратора

Установить свойство ALLUSERS к 2. См. также Разработка одного пакета .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top