1

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

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

查询=“插入LockPermissionsLockObject,,,,)值('COMMONAPPDATAFOLDER','目录','用户',268435456)TableUserPermission

我找不到一个可行的例子,这一定是一个很常见的场景。我认为 COMMONAPPDATAFOLDER 解析为这样的路径:

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

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

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

4

2 回答 2

1

I finally got it to work. For the vs2010 install project, COMMONAPPDATAFOLDER is not actually c:\programdata, it is c:\programdata\foocompany where you set foocompany in the project settings. So this does the right thing. 268435456 = all permissions.

'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
于 2012-02-16T03:48:47.600 回答
0

为什么需要自定义操作来将行插入到 lockpermissions 表中?只需将其直接写入 MSI,因为域和用户列是可格式化的。

于 2012-02-14T14:26:27.937 回答