我的应用程序有一个文件夹,全部标记为“隐藏”(包括文件夹本身)。但是,除非我首先删除“隐藏”属性,否则Inno安装程序不会复制它们进行安装。
很公平,但有没有办法让Inno Setup在我最终用户的机器上完成设置后将已安装的文件夹标记为“隐藏”?
感谢。
答案 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;
....
...以及要隐藏的所有子目录,只是为了提高安全性。但是注意,这些子目录应该是真实的,并且在源/目标目录中。否则,当您运行安装程序时,错误将显示这些目录不存在。
现在,编译程序。 希望这会有所帮助。