如何使用vb脚本在msi安装程序中为目录设置ACL?

时间:2012-02-14 08:26:22

标签: vbscript windows-installer orca

我想在安装运行时修改C:\ ProgramData中的用户权限。只需添加WRITE权限即可。我正在使用vb脚本来编辑msi表。

此查询正常运行,添加了行,但安装程序未设置权限。我在这里使用ALL权限设置,我不知道正确的通用读/写值是什么。

query =“INSERT INTO LockPermissionsLockObjectTableUserPermission)VALUES('COMMONAPPDATAFOLDER','目录','用户',268435456)“

我找不到一个有效的例子,它必须是一个非常常见的场景。我认为COMMONAPPDATAFOLDER解析为这样的路径:

C:\ ProgramData \ CompanyFoo \ Foo产品名称

但我不确定。我想在“CompanyFoo”目录上设置权限,但我不知道如何。

编辑:这是针对构建脚本,而不是自定义msi操作。我的问题是我没有使用像installshield这样的安装框架,我正在修改visual studio部署项目的残缺输出。

2 个答案:

答案 0 :(得分:1)

我终于开始工作了。对于vs2010安装项目,COMMONAPPDATAFOLDER实际上不是c:\ programdata,它是c:\ programdata \ foocompany,您可以在项目设置中设置foocompany。所以这是正确的。 268435456 =所有权限。

'COMMONAPPDATAFOLDER
query = "INSERT INTO `LockPermissions` (`LockObject`, `Table` , `User`, `Permission`) VALUES ('COMMONAPPDATAFOLDER', 'CreateFolder', 'Everyone',  268435456)" 
Set view = database.OpenView (query)         
view.Execute

query = "INSERT INTO `LockPermissions` (`LockObject`, `Table` , `User`, `Permission`) VALUES ('COMMONAPPDATAFOLDER', 'CreateFolder', 'Administrators',  268435456)" 
Set view = database.OpenView (query)         
view.Execute

答案 1 :(得分:0)

为什么需要自定义操作将行插入lockpermissions表?只需将其直接写入MSI,因为Domain和User列是Formattable。

相关问题