我已阅读所有相关主题,但未找到问题的完整答案.
我想将SYSTEM的完全权限和用户组的读取和执行权限授予Program Files下的文件夹.没有更多,没有更少.
我知道有三种方法可以使用WIX为文件夹授予权限,但这些方法对我来说都不是很好,我将解释原因:
1)常规权限元素:
<CreateFolder Directory="Test">
<Permission User="SYSTEM" GenericAll="yes"/>
<Permission User="Users" Domain="[LOCAL_MACHINE_NAME]"
GenericRead="yes" Read="yes" GenericExecute="yes" ChangePermission="yes"/>
</CreateFolder>
Run Code Online (Sandbox Code Playgroud)
问题:它在外部操作系统上失败,因为它不知道"Users"关键字.我也尝试过SID.除此之外,我需要将Permission元素放在Test目录中的每个文件下(但如果这是唯一的情况,我会管理)
2)WixUtilsExtension PermissionEx元素:
<CreateFolder Directory="Test">
<util:PermissionEx User="SYSTEM" GenericAll="yes"/>
<util:PermissionEx User="Users" Domain="[LOCAL_MACHINE_NAME]"
GenericRead="yes" Read="yes" GenericExecute="yes" ChangePermission="yes"/>
</CreateFolder>
Run Code Online (Sandbox Code Playgroud)
问题:该文件夹还保留Program Files文件夹的默认权限.我不能允许.
3)使用Sddl的PermissionEx:
问题:此元素仅在使用MSI 5.0安装时可用.我正在使用安装程序3.01.
我很乐意获得任何解决方案,包括采用自定义操作的解决方案......
我在XP英文机器和XP日本机器上运行相同的UI代码.出于某种原因 - 这两台机器之间的行为是不同的:
在日语机器上,OnResize事件在InitializeComponent调用期间被触发(我认为是来自ResumeLayout函数).在英语机器上它没有.
我有一个OnResize的覆盖方法,它改变我定义的私有变量的值.由于组件未完全加载(Ctor仍在运行),这些变量为空,我得到一个异常.
我可以通过检查变量是否为null来修复代码,但我想了解为什么它首先被调用以及为什么它只在这台机器上发生.
在我通过网络搜索期间,我发现了其他人发布的相同问题,但没有解决方案(http://social.msdn.microsoft.com/Forums/en/winforms/thread/95aefae4-45d8-4ac5-a8f2- 6e2142dfb631).