MSI安装程序文件/文件夹权限

时间:2009-10-26 09:21:09

标签: c# file installer permissions windows-installer

我正在尝试使用基本的MSI安装程序在programdata文件夹中安装一组文件。由于文件内容是动态的并且在安装过程中生成,因此我在安装过程中使用C#代码创建文件。

文件是在相应的文件夹中创建的,除文件权限外,一切都很好。据我所知,文件应该从父文件夹(如果启用)继承其权限,但在这种情况下,这不会发生。我创建的文件对于普通用户应该是可写的,我不想为每个创建的文件显式设置权限。问题可能是安装程序以不同的权限运行,因此文件不会从其父文件夹继承权限吗?

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

安装程序以管理员访问权限运行,这将允许它更改程序文件中的任何内容。普通用户只能读取程序文件文件夹和ProgramData / Common Application Data文件夹。

MSI的lock permission table允许安装程序在ProgramData / Common Application Data中创建后更改文件夹的权限。 Visual Studio的安装项目不支持MSI的锁定权限表,因此如果您需要创建的文件夹可以在安装项目中向普通用户写入,则需要使用SetNamedSecurityInfo在自定义操作中授予权限,或者将MSI数据库修改为帖子建立步骤。您还可以找到可以处理MSI锁定权限表的MSI创作软件。

答案 1 :(得分:2)

我遇到了非常类似的问题,我可以使用示例here来解决它。

答案 2 :(得分:1)

如果使用自定义操作手动设置文件夹权限,并使用其他自定义操作生成并安装文件,则问题可能是由执行顺序引起的。

答案 3 :(得分:1)

我在这里遇到过类似的问题。这里的问题是msi用用户SYSTEM创建文件。并且运行时期间的应用程序使用的是已记录的用户(该文件没有写入权限)。 我所做的是在应用程序初始化期间使用安装程序创建的文件创建一个新文件(如果不存在)。然后该文件将具有写入权限。这不是一个好习惯,但解决了我的问题。