Inno Setup - 如何设置文件夹的完全权限,而不仅仅是它的内容

Posted

技术标签:

【中文标题】Inno Setup - 如何设置文件夹的完全权限,而不仅仅是它的内容【英文标题】:Inno Setup - How to set full permission on a folder, not just for it's contents 【发布时间】:2013-07-09 21:11:23 【问题描述】:

我使用 Inno Setup 创建的工具包将我的应用程序安装在 C:\Program Files\MyApp

当我的应用程序启动时,它会尝试在 C:\Program Files\MyApp\logs\ 中创建新的日志文件,但失败了。

在我的 Inno 脚本中,我有以下设置:

[Dirs]
Name: "app";

[Files]
Source: logs\*; DestDir: app\logs\; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: everyone-full

这将授予对 logs 文件夹中所有文件的完全权限,但对文件夹本身没有权限。因此,当我的应用程序尝试在该文件夹中创建新的日志文件时,它会失败。

我怎样才能设置文件夹的完全权限,而不仅仅是文件夹中的现有文件?

【问题讨论】:

same as here 适用于您。 @TLama 感谢您的链接,我会尝试并返回结果 尽可能避免使用完全权限并改用修改。 【参考方案1】:

只需使用以下代码对我有用,我认为它更安全

[Dirs]
Name: "app\logs"; Permissions: users-full

【讨论】:

您对“用户”而不是“每个人”的看法是正确的。尽管如此,正如链接帖子所说,“完整”可能是不必要的。事实上,我的应用程序只有在我将权限设置为“修改”后才能运行,因为系统不允许我将权限设置为“完整”。 您的解决方案是最简单的,对我来说效果很好!【参考方案2】:

在 [Dirs] 部分下为 logs 文件夹设置权限对我有用:

[Dirs]
Name: "app"; 
Name: "app\logs"; Permissions: everyone-full

[Files]
Source: logs\*; DestDir: app\logs\; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: everyone-full

但是,就像this post 一样,我不确定这是否是正确的做法。

【讨论】:

everyone-full 可能太多了,从文档看来 users-modify 就足够了。 jrsoftware.org/ishelp/index.php?topic=dirssectionjrsoftware.org/ishelp/index.php?topic=filessection @Joël Cool。感谢您提及修改权限和文档。

以上是关于Inno Setup - 如何设置文件夹的完全权限,而不仅仅是它的内容的主要内容,如果未能解决你的问题,请参考以下文章

Inno Setup 中如何设置卸载文件的位置

使用 Inno Setup 升级 Windows 服务

inno setup 打包使用超级管理员权限

仅在需要时使 Inno Setup 安装程序请求权限提升

Inno Setup:如何在安装过程中中止/终止设置?

Inno SetupCreateProcess 失败:代码 740(Inno Setup打包的程序提升为管理员权限)(转)