如何在 Wix 中指定 PermissionEx 的条件?
How can I specify a condition on a PermissionEx in wix?
我想有条件地将 ACE 添加到目录。 WiX documentation 和 XSD 声明它是 util:PermissionEx 的有效子项,但我无法让它工作。真的支持吗?
我有这个安装程序定义:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="*" Name="test" Language="1033" Version="0.0.1" Manufacturer="Microsoft Corporation" UpgradeCode="89028746-7cf3-42e7-8121-d0bf0140e2dd">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64" />
<MediaTemplate EmbedCab="yes" />
<Feature Id="ProductFeature" Title="test" Level="1">
<ComponentRef Id="Component_TokenFolder_HybridAgent" />
</Feature>
<Property Id="ISDOMAINCONTROLLER" Value="0"/>
<Property Id="SERVICEUSERGROUP" Value="foo"/>
<InstallExecuteSequence>
</InstallExecuteSequence>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="CommonAppDataFolder">
<Directory Id="AppDataFolder_HybridAgent" Name="FOO">
<Directory Id="TokenFolder_HybridAgent" Name="Tokens">
<Component Id="Component_TokenFolder_HybridAgent" Guid="b733054f-b0df-40fe-942a-a492fa8109a3">
<CreateFolder>
<util:PermissionEx GenericAll="yes" User="NT AUTHORITY\SYSTEM"/>
<util:PermissionEx GenericAll="yes" User="Administrators"/>
<util:PermissionEx Read="yes" ReadAttributes="yes" ReadExtendedAttributes="yes" ReadPermission="yes" GenericRead="yes" User="[SERVICEUSERGROUP]">
<Condition>ISDOMAINCONTROLLER=0</Condition>
</util:PermissionEx>
</CreateFolder>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Fragment>
</Wix>
当我尝试在 WiX 3.11 中使用 candle.exe 编译它时,我得到:
C:\onebranch\HybridAgent\src\deploy\Deployment\Deployment\test.wxs(30) : error CNDL0203 : The util:PermissionEx element contains an unsupported extension element 'Condition'. The util:PermissionEx element does not currently support extension elements. Is the Condition element using the correct XML namespace?
PermissionEx
是一个有点棘手的元素。有一个来自 WixUtilExtension
(您从 util:
命名空间获得的那个),一个内置于 Windows 安装程序(您从默认的 wix 命名空间获得的那个) .
为什么有两个?好吧,我们添加了 util:PermissionEx
可以做普通 Permission
元素做不到的事情。然后在 Windows Installer 5.0 中他们添加了 PermissionEx
创建碰撞。
所以你想确保你在正确的 link:
要回答您的问题,您可以通过调节 Component
来调节 util:PermissionEx
。如果您可以采用 Windows Installer 5.0(在 Win7+ 中可用),那么您可以使用 PermissionEx
及其更多 fine-grained 条件支持。
我想有条件地将 ACE 添加到目录。 WiX documentation 和 XSD 声明它是 util:PermissionEx 的有效子项,但我无法让它工作。真的支持吗?
我有这个安装程序定义:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="*" Name="test" Language="1033" Version="0.0.1" Manufacturer="Microsoft Corporation" UpgradeCode="89028746-7cf3-42e7-8121-d0bf0140e2dd">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64" />
<MediaTemplate EmbedCab="yes" />
<Feature Id="ProductFeature" Title="test" Level="1">
<ComponentRef Id="Component_TokenFolder_HybridAgent" />
</Feature>
<Property Id="ISDOMAINCONTROLLER" Value="0"/>
<Property Id="SERVICEUSERGROUP" Value="foo"/>
<InstallExecuteSequence>
</InstallExecuteSequence>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="CommonAppDataFolder">
<Directory Id="AppDataFolder_HybridAgent" Name="FOO">
<Directory Id="TokenFolder_HybridAgent" Name="Tokens">
<Component Id="Component_TokenFolder_HybridAgent" Guid="b733054f-b0df-40fe-942a-a492fa8109a3">
<CreateFolder>
<util:PermissionEx GenericAll="yes" User="NT AUTHORITY\SYSTEM"/>
<util:PermissionEx GenericAll="yes" User="Administrators"/>
<util:PermissionEx Read="yes" ReadAttributes="yes" ReadExtendedAttributes="yes" ReadPermission="yes" GenericRead="yes" User="[SERVICEUSERGROUP]">
<Condition>ISDOMAINCONTROLLER=0</Condition>
</util:PermissionEx>
</CreateFolder>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Fragment>
</Wix>
当我尝试在 WiX 3.11 中使用 candle.exe 编译它时,我得到:
C:\onebranch\HybridAgent\src\deploy\Deployment\Deployment\test.wxs(30) : error CNDL0203 : The util:PermissionEx element contains an unsupported extension element 'Condition'. The util:PermissionEx element does not currently support extension elements. Is the Condition element using the correct XML namespace?
PermissionEx
是一个有点棘手的元素。有一个来自 WixUtilExtension
(您从 util:
命名空间获得的那个),一个内置于 Windows 安装程序(您从默认的 wix 命名空间获得的那个) .
为什么有两个?好吧,我们添加了 util:PermissionEx
可以做普通 Permission
元素做不到的事情。然后在 Windows Installer 5.0 中他们添加了 PermissionEx
创建碰撞。
所以你想确保你在正确的 link:
要回答您的问题,您可以通过调节 Component
来调节 util:PermissionEx
。如果您可以采用 Windows Installer 5.0(在 Win7+ 中可用),那么您可以使用 PermissionEx
及其更多 fine-grained 条件支持。