Permissions Wix:使用permissionEx设置installfolder中文件夹的权限
我正在使用Wix为ASP.NET MVC web应用程序创建安装程序,我需要在站点中的特定文件夹上设置IIS_WPG的写入权限。我找到了一个关于如何使用cacls.exe执行此操作的示例(我想,它还没有运行):Permissions Wix:使用permissionEx设置installfolder中文件夹的权限,permissions,wix,directory,custom-action,Permissions,Wix,Directory,Custom Action,我正在使用Wix为ASP.NET MVC web应用程序创建安装程序,我需要在站点中的特定文件夹上设置IIS_WPG的写入权限。我找到了一个关于如何使用cacls.exe执行此操作的示例(我想,它还没有运行): <CustomAction Id="PermissionAppData" Directory="TARGETDIR" ExeCommand=""[SystemFolder]cacls.exe"
<CustomAction Id="PermissionAppData" Directory="TARGETDIR"
ExeCommand=""[SystemFolder]cacls.exe"
"[INSTALLDIR]\Content\uploads"
/T /E /G IIS_WPG:M" Return="check" />
严的建议
<Fragment>
<DirectoryRef Id="UPLOAD">
<Component Id="SetFolderPermissions" Guid="*">
<CreateFolder>
<util:PermissionEx GenericRead="yes" GenericExecute="yes" User="[SC_IUSR_USERNAME]" Domain="[SC_IUSR_DOMAIN]"/>
<util:PermissionEx GenericRead="yes" GenericExecute="yes" GenericWrite="yes" Delete="yes" User="[SC_ASPNET_USERNAME]" Domain="[SC_ASPNET_DOMAIN]"/>
</CreateFolder>
</Component>
</DirectoryRef>
</Fragment>
这似乎没什么用。未为IIS\u IUSRS帐户设置权限。我也尝试过这个解决方案
这是一个简单的示例:
<DirectoryRef Id="WebsiteFolder">
<Component DiskId="1" Id="DummyComponentForPermissionsWebsite" Guid="{GUID-GOES-HERE}">
<CreateFolder>
<util:PermissionEx GenericRead="yes" GenericExecute="yes" User="[SC_IUSR_USERNAME]" Domain="[SC_IUSR_DOMAIN]"/>
<util:PermissionEx GenericRead="yes" GenericExecute="yes" GenericWrite="yes" Delete="yes" User="[SC_ASPNET_USERNAME]" Domain="[SC_ASPNET_DOMAIN]"/>
</CreateFolder>
</Component>
</DirectoryRef>
下面是一个简单的解释:
- 上面的示例假定在某个地方定义了一个
,其中定义了Id=“WebsiteFolder”
元素是必需的,因为此组件中没有其他元素。您可以轻松地将
元素添加到包含文件、注册表值等的其他组件中- 当然,上面的组件必须是特性的一部分
- 根WiX元素必须具有
引用了命名空间xmlns:util=”http://schemas.microsoft.com/wix/UtilExtension“
- 编译期间必须引用
wixutileextension
我们可以使用PermissionEx代替Permission
这对我有用。谢谢你。这似乎是在运行和设置权限,但当我通过“文件属性”中的“安全”选项卡检查权限时,我收到以下消息
上载权限的顺序不正确,这可能会导致某些权限无效
(上载是我文件夹的名称),有什么想法吗?唯一的区别是,我为第一个权限节点添加了GenericWrite=“yes”
。嗯,我肯定记得我见过这样的警告,但我不记得它到底是什么。。。似乎这与有效的权限有关。如果我没记错的话,在高级安全区域的某个地方一定有一个“重新排序”按钮。试着点击它,看看有什么变化。重新排序似乎只是修复了权限。此外,上面的代码现在对安装文件夹中的每个文件夹设置这些权限,而不仅仅是上载文件夹。需要明确的是,myDirectoryRef
绝对是正确的文件夹,而不是根文件夹或任何类似的愚蠢文件夹什么是User=“[SC\u ASPNET\u USERNAME]”域=“[SC\u ASPNET\u Domain]
??他们是系统默认用户吗?还是我们需要定义他们?你需要定义他们。这只是我一直在做的项目的一个例子。我记得过去也有过这个问题。当时我们做了很多更改,但据我所知,Traverse=“yes”属性起了作用。使用PermissionEx”是指它添加或修改基本权限,因此如果您想添加一个小的调整,则无需复制它们。“权限”用您的配置替换所有权限。
<Product>
<!-- rest of product code removed for brevity -->
<Property Id="WEBUSER" Value="Byah" />
<Property Id="WEBDOMAIN" Value="Byah" />
<CustomAction Id="SetWebuserIIS7" Return="check" Property="WEBUSER" Value="IIS_IUSRS" />
<CustomAction Id="SetWebuserIIS6" Return="check" Property="WEBUSER" Value="IUSR_[ComputerName]" />
<CustomAction Id="SetDomainIIS7" Return="check" Property="WEBDOMAIN" Value="" />
<CustomAction Id="SetDomainIIS6" Return="check" Property="WEBDOMAIN" Value="[ComputerName]" />
</Product>
<Fragment>
<DirectoryRef Id="UPLOAD">
<Component Id="SetFolderPermissions" Guid="*">
<CreateFolder>
<util:PermissionEx User="NetworkService" GenericAll="yes" />
<util:PermissionEx User="Administrators" GenericAll="yes" />
<util:PermissionEx User="Users" GenericRead="yes" GenericExecute="yes" />
<util:PermissionEx User="[WEBUSER]" Domain="[WEBDOMAIN]" GenericAll="yes" />
</CreateFolder>
</Component>
</DirectoryRef>
</Fragment>
<DirectoryRef Id="WebsiteFolder">
<Component DiskId="1" Id="DummyComponentForPermissionsWebsite" Guid="{GUID-GOES-HERE}">
<CreateFolder>
<util:PermissionEx GenericRead="yes" GenericExecute="yes" User="[SC_IUSR_USERNAME]" Domain="[SC_IUSR_DOMAIN]"/>
<util:PermissionEx GenericRead="yes" GenericExecute="yes" GenericWrite="yes" Delete="yes" User="[SC_ASPNET_USERNAME]" Domain="[SC_ASPNET_DOMAIN]"/>
</CreateFolder>
</Component>
</DirectoryRef>
<CreateFolder>
<Permission User="Users" GenericAll="yes" />
<Permission User="Administrators" GenericAll="yes" />
</CreateFolder>