2009-06-19 2 views
6

Wix를 사용하여 설치 패키지를 만들어야합니다. 관리자가 패키지를 설치하는 경우 % programfiles %/[applicationName]에 설치해야합니다. 사용자가 관리자가 아닌 경우 로컬 프로필 폴더 (LocalAppDataFolder)에 설치해야합니다.Wix - 권한에 따라 설치 폴더 변경

어떻게 가능합니까?

답변

4

나는 이것을 ClickThrough에 오래 전 작성했습니다. 그것과 해결 방법은 다음과 같이 많은 (당신은 "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> 
0

내 윅스 프로젝트를 작업 할 수 없습니다 당신이 코드 현재 전 = "1"판사 관리 사용자를 사용 우리가 관리자 권한 아래에있는 경우

는 다음과 같이
2

재정 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>