WIX - تغيير مجلد التثبيت على أساس امتياز

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

  •  06-07-2019
  •  | 
  •  

سؤال

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top