2009-06-19 11 views
6

पर आधारित स्थापना फ़ोल्डर को बदलें, मुझे Wix का उपयोग करके एक इंस्टॉलेशन पैकेज बनाना होगा। यदि कोई व्यवस्थापक उपयोगकर्ता पैकेज स्थापित कर रहा है, तो उसे% प्रोग्रामफाइल%/[applicationName] में स्थापित करना चाहिए, यदि उपयोगकर्ता एक गैर-व्यवस्थापक उपयोगकर्ता है तो उसे अपने स्थानीय प्रोफ़ाइल फ़ोल्डर (LocalAppDataFolder) में स्थापित करना चाहिए।विक्स - विशेषाधिकार

यह कैसे संभव है?

उत्तर

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

आप कोड मेरी wix परियोजना पर काम नहीं कर सकते वर्तमान में मैं = "1" न्यायाधीश को AdminUser का उपयोग

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> 
संबंधित मुद्दे