在Inno安装程序安装后隐藏文件夹

时间:2011-11-08 13:18:18

标签: inno-setup file-attributes

我的应用程序有一个文件夹,全部标记为“隐藏”(包括文件夹本身)。但是,除非我首先删除“隐藏”属性,否则Inno安装程序不会复制它们进行安装。

很公平,但有没有办法让Inno Setup在我最终用户的机器上完成设置后将已安装的文件夹标记为“隐藏”?

感谢。

2 个答案:

答案 0 :(得分:11)

请参阅Attribs参数,了解[Dirs]部分中的条目。

[Dirs]
Name: "{app}\blah"; Attribs: hidden;

请注意,这并不能阻止人们看到它,只是让它看起来像你要隐藏的东西。

答案 1 :(得分:1)

首先,确保仅隐藏目录,而不是子目录。假设其名称为 srcHiddenDir 。 现在,创建另一个目录 dstHiddenDir ,但现在不要将其隐藏。但它应该是空的。

然后,打开settings.json,并将所有 srcHiddenDir 替换为 dstHiddenDir

现在,准备好照常复制文件了。在代码的一部分中,您将获得:

[Files]

Source: "wherethewholecodeis\phpdesktop\phpdesktop-chrome.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "wherethewholecodeis\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "wherethewholecodeis\*srcHiddenDir*\*"; DestDir: "{app}\*dstHiddenDir*"; Attribs:hidden; Flags: ignoreversion recursesubdirs createallsubdirs

然后,您需要编写:

[Dirs]
Name: {app}\dstHiddenDir; Attribs:hidden;
Name: {app}\dstHiddenDir\application; Attribs:hidden;
Name: {app}\dstHiddenDir\database; Attribs:hidden;
Name: {app}\dstHiddenDir\css; Attribs:hidden;
....

...以及要隐藏的所有子目录,只是为了提高安全性。但是注意,这些子目录应该是真实的,并且在源/目标目录中。否则,当您运行安装程序时,错误将显示这些目录不存在。

现在,编译程序。 希望这会有所帮助。