【问题标题】:Inno Setup- make sure that directory is NOT readonly?Inno Setup-确保该目录不是只读的?
【发布时间】:2023-01-30 05:04:03
【问题描述】:

我有一个 Inno Setup 安装程序,它将一些文件复制到 Program Files[Files] 部分设置如下:

[Files]
Source: "Bundled_Files\*"; DestDir: "{commonpf64}\StudioLinked\Romplur\"; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: users-full;

Bundled_Files 内部复制的文件总是最终被设置为只读。我已将权限设置为users-full,但这似乎没有任何改变。有没有办法确保文件不是只读的?

我尝试在 [Files] 部分之前添加一个额外的 [Dirs] 部分,如下所示:

[Dirs]
Name: "{commonpf64}\StudioLinked\Romplur\"; Permissions: users-full;

但这也没有改变文件夹的只读设置。

在 Windows 10 上使用 Inno Setup 6.2.1。感谢任何帮助!

【问题讨论】:

  • “只读设置”很模棱两可。这是关于只读属性吗?或者关于缺少写权限?在任何情况下,“程序文件”文件夹都不应是可写的。另见How to set permissions of installation folder in Inno Setup
  • 那么需要可复制和可编辑的文件应该存储在“Program Files”之外?
  • 是的,这是正确的做法。

标签: windows installation permissions inno-setup


【解决方案1】:

我使用以下代码使我的安装目录的子目录可写和可编辑:

[Dirs]
Name: "{app}MyWritableSubDir"; Permissions: users-modify

但是,您应该只将数据文件存储在“C:Program Files”的任何可写目录或子目录中,而不是可执行文件:否则这会打开一个安全漏洞(“C:Program Files”是只读的是有原因的普通用户!)。

按照 Microsoft 的预期,存储应用程序特定数据的正确位置是 ProgramData 目录或 AppData 目录。有关更一般的讨论,请参阅Where is the correct place to store my application specific data?

请参阅https://jrsoftware.org/ishelp/index.php?topic=consts 如何在 Inno Setup 中使用这些目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2016-08-13
    • 2017-05-30
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多