2009-10-26 86 views
7

我想使用基本的MSI安裝程序在programdata文件夾內安裝一組文件。由於這些文件的內容是動態的並且在安裝過程中生成,因此我在安裝過程中使用C#代碼創建了這些文件。MSI安裝程序文件/文件夾權限

的文件在適當的文件夾創建的,一切都是美好的,除了文件的權限。據我瞭解,文件應該從父文件夾繼承他們的權限(如果啓用),但在這種情況下,這不會發生。我創建的文件對於普通用戶應該是可寫的,我不想爲每個創建的文件明確設置權限。問題可能是安裝程序以不同的權限運行,因此這些文件不會從父文件夾繼承權限?

在此先感謝您的幫助。

+0

我覺得這很奇怪。你安裝後檢查了權限嗎?即他們不只是只讀? –

+0

是的。問題是安裝程序期間創建的文件夾獲取管理員的默認權限(或類似的東西)。我手動設置文件夾權限,使普通用戶能夠寫入。但是,在文件夾中創建的文件不會繼承在文件夾上手動設置的權限(當然,該文件是在安裝程序中創建的,可能以管理員身份運行)。也許解決方案是手動調整文件的權限,但是,我不覺得這是一個好方法。 – Kenneth

回答

3

安裝程序具有管理員訪問權限,這將允許它來更改程序文件的任何運行。普通用戶只能讀取程序文件文件夾和ProgramData/Common Application Data文件夾。

微星lock permission table允許安裝程序在ProgramData /通用應用程序數據創建後更改文件夾的權限。 Visual Studio的安裝項目不支持MSI的鎖權限表,因此如果您需要創建的文件夾可供安裝項目中的普通用戶使用,您需要使用SetNamedSecurityInfo授予自定義操作中的權限,或將MSI數據庫修改爲帖子建立一步。您還可以找到一個MSI創作軟件,它可以處理MSI的鎖定權限表。

+0

這是關於ProgramData文件夾(Vista),普通用戶應該有讀/寫訪問權限。 –

+0

Common ProgramData只讀爲普通用戶,授予所有用戶安裝程序必須在創建子文件夾後更改權限的R/W。 –

1

如果你有一個自定義操作手動設置文件夾的權限,然後生成和安裝與其他自定義操作文件的問題可能是由執行的命令所造成的。

2

我有非常類似的問題,我能夠使用的例子here來解決它。

1

我在這裏有類似的問題。這裏的問題是,msi正在用用戶SYSTEM創建文件。運行時應用程序使用已記錄的用戶(對此文件沒有寫權限)。 我所做的是在應用程序初始化期間使用安裝程序創建的文件創建新文件(如果不存在)。然後這個文件將具有寫入權限。這不是一個好的做法,但解決了我的問題。