杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2400|回复: 0

在Inno中打包隐藏和系统文件的头文件

[复制链接]
发表于 2017-3-24 16:22:36 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
简介:
一直以来,Inno的作者都没有提供打包隐藏文件和系统文件的功能。
但是,如果我们做批量打包,批量封装的时候,总会需要这样的功能,因为我们不能保证没有隐藏文件。
如果有这些文件,但是没有被打包进去,相信后果大家都懂的。
这次我用ISPP功能做了这么一个头文件,不但可以打包隐藏文件,还能保留属性。(支持 系统 和 隐藏)
用法:
为了让大家用起来顺手,我做了一个最简单的用法,不过,如果你要做的包含很多文件夹,那么请看:Example2.iss
  1. ; -- Example1.iss --
  2. ; Demonstrates use InstFiles.ish.
  3. ; Author  : WLDNA
  4. ; WebSite : http://www.wldna.com/archive/inno/ish/instfiles/

  5. #include "InstFiles.ish"

  6. [Setup]
  7. AppName=My Program
  8. AppVersion=1.5
  9. DefaultDirName={pf}\My Program
  10. DefaultGroupName=My Program
  11. UninstallDisplayIcon={app}\MyProg.exe
  12. Compression=lzma2
  13. SolidCompression=yes
  14. OutputDir=userdocs:Inno Setup Examples Output
  15. CreateUninstallRegKey=no
  16. Uninstallable=no

  17. #expr InstFiles("D:\Users", "*.*")
复制代码

如果你需要这个功能,可以下载最后的压缩包,包含了两个示例文件,一个简单的就是贴出来的这个,另外一个是复杂的用法。
测试数据:
用时:1分钟   文件夹:343    文件:12581   内存占用: 37M.   包含隐藏和系统文件
用时:1小时   文件夹:1491  文件:432817  内存占用:900M. 包含隐藏和系统文件

技术细节:
这次做这个头文件,用了我一个星期的时间,因为ISPP限制比较多。做了很多的方案都不合我心里的想法。
ISPP的 array不能动态修改长度,只能重新声明
ISPP的 copy函数对长字符串操作的时候会引起内存泄漏,这个已经提交给了作者。
如果使用两个array倒数据的话,执行效率会非常的低。
所以,我发布的这个头文件使用了如下的方法:
array存储文件夹,因为一般来讲文件夹是比较少的
Files段直接写入到脚本列表
统一使用两个段,无论你前面有多少个[Files] 和 [Dirs],头文件添加的都会在最后。
用for做循环,不断的添加需要搜索的文件夹,改变count


小结:
当然,这个只是权益之计,毕竟,ISPP还没有什么好的字符串列表。
如果,你有更好的方案,可以联系我,非常感谢。
另外,如果官方出现合适的功能之后,我也会改写本函数的。

InstFiles-2012-11-13.7z (2.34 KB, 下载次数: 0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-17 12:42 , Processed in 0.117336 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表