WIX - تغيير مجلد التثبيت على أساس امتياز
سؤال
ولقد لإنشاء حزمة التثبيت باستخدام WIX. إذا كان المستخدم المشرف بتثبيت الحزمة، يجب أن تثبيت في٪ هذا٪ / [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<>"")</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. انظر أيضا <لأ href = "http://msdn.microsoft.com/en-us/library/windows/desktop/dd408068٪28v=vs.85٪29.aspx" يختلط = "نوفولو" > حزمة واحدة التأليف .