2012-02-14 95 views
1

我想在運行安裝時修改C:\ ProgramData中用戶的權限。只需添加寫權限。我正在使用vb腳本編輯msi表。如何使用vb腳本爲msi安裝程序中的目錄設置ACL?

此查詢運行正常,添加行,但安裝程序未設置權限。我在這裏使用ALL權限設置,我不知道什麼是正確的通用讀/寫值。

查詢= 「INSERT INTO LockPermissionsLockObjectTableUserPermission)VALUES( 'COMMONAPPDATAFOLDER', '目錄', '用戶',268435456)」

我找不到這樣的工作示例,而且這肯定是一個很常見的情況。我認爲COMMONAPPDATAFOLDER解析爲路徑大約是這樣的:

C:\ ProgramData \ CompanyFoo \富產品名稱

,但我不知道。我想在「CompanyFoo」目錄中設置權限,但我不知道如何。

編輯:這是用於構建腳本,而不是自定義msi操作。我的問題是我沒有使用像installshield這樣的安裝框架,我正在修改visual studio部署項目的殘缺輸出。

+0

不,更改系統文件夾的權限並不常見。也不建議。 – 2012-02-14 12:30:19

+0

我在CommonAppDataFolder/Company/Product級別上做了好幾次。問題是,當您進入鎖定環境並且應用程序保存了計算機上其他配置文件預計可用的文件時,您應該在哪裏放置它?我還沒有意識到另一個位置? – 2012-02-14 14:23:44

+0

我試圖建議開發編寫一個服務,可以上傳和下載文件到虛擬商店,但他們不想這樣做。他們只是打開產品數據文件夾。基本上我們需要一個Public Documents \ Company \ Product類型結構。 – 2012-02-14 14:25:13

回答

0

爲什麼需要一個自定義操作將行插入lockpermissions表中?只需將它直接創作到MSI中即可,因爲「域」和「用戶」列是可格式化的。

+0

我無法每次需要執行此操作時都使用orca編輯msi。這是爲了自動構建。 – 2012-02-14 23:53:47

+0

這也不是一個'行動'。它是構建腳本的一部分。 – 2012-02-14 23:59:14

+0

您使用什麼工具構建原始MSI? – 2012-02-15 00:08:10

1

我終於得到它的工作。對於vs2010安裝項目,COMMONAPPDATAFOLDER實際上不是c:\ programdata,它是在項目設置中設置foocompany的c:\ programdata \ 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