如何在Inno Setup中实现MD5检查,以便它可以验证InitializeSetup
上的基本安装程序文件(exe + bin) - 这是标准的NSIS功能,这非常有用,因为它会通知安装程序是否正常或损坏?如何在Inno Setup安装程序中实现MD5检查以获得'像NSIS完整性检查'?
如果IS可能需要嵌入MD5Summer或其他MD5检查器,并在编译期间/之后创建MD5总和。
如何在Inno Setup中实现MD5检查,以便它可以验证InitializeSetup
上的基本安装程序文件(exe + bin) - 这是标准的NSIS功能,这非常有用,因为它会通知安装程序是否正常或损坏?如何在Inno Setup安装程序中实现MD5检查以获得'像NSIS完整性检查'?
如果IS可能需要嵌入MD5Summer或其他MD5检查器,并在编译期间/之后创建MD5总和。
如何为所有.bin文件创建md5散列? 这应该在2个步骤来完成:
1)编制的.bin(S)创造的MD5哈希 - 哈希值将被存储为文本文件,里面的setup.exe [所以这是一个2步编译:创建.bins ,为.bins创建散列并再次编译以将散列包含到setup.exe中]
2)在使用插件的InitializeWizard()函数的runtine中。
您可以轻松地将散列与某些Pascal字符串比较函数或简单的'='进行比较。 如果散列不匹配,则可以在显示任何窗口之前使安装程序存在。
重要的是要有小的setup.exe - 哈希必须总是在[文件]部分顶部附近的某个地方进行快速解压缩。 而且一切都必须稳定,所以在setup.exe中添加哈希将不会修改.bins的md5。
Inno已经对其内容进行了全面的完整性检查。没有必要做额外的检查。
如果您在使用磁盘延伸(由.bin
文件的所有脑干暗示的),那么.bin
文件可能无法使用(在不同的磁盘)等不进行扫描,直到建立获取到该磁盘。
它在安装过程中会发生异常。无论如何,我可以破坏文件并安装程序将运行。它会在安装过程中通知有关问题。我想/需要的是验证'InitializeSetup'上的所有文件。所以我不能同意你的答案。 – RobeN
你失去了我。我们同意安装程序验证其文件。你想要检查什么? – Deanna
运行任何NSIS安装程序。在显示向导之前,它将验证整个安装程序。如果安装程序文件损坏,它会通知有关问题并退出。所以...用户可以确定,如果安装程序将显示向导,安装程序是OK(没有损坏)。即使机柜发生故障,损坏,Inno Setup Setup也可以运行。它会在安装过程中显示错误。我希望IS在向导之前验证安装程序的文件。为什么?因为如果应用程序很大 - 例如12 BINs - 在提取最后一个柜子时遇到错误,我会非常生气。更好的了解之前... – RobeN
您需要暂时提取文件并使用['GetMD5OfFile'](http://www.jrsoftware.org/ishelp/topic_isxfunc_getmd5offile.htm)函数来实现此目的。 – TLama
在编译时,您可以使用同名的['GetMD5OfFile'](http://www.jrsoftware.org/ispphelp/topic_getmd5offile.htm)预处理器函数并存储MD5总和,例如转换成您可以在运行时加载的文本文件。但是,这并不容易,因为你['不能访问文件列表](http://stackoverflow.com/a/11736521/960757)。 – TLama
如果您没有指定['dontverifychecksum'](http://www.jrsoftware.org/ishelp/topic_filessection.htm)标志,则应该足够使用['ExtractTemporaryFile'](http:// www。 jrsoftware.org/ishelp/topic_isxfunc_extracttemporaryfile.htm)函数(快速查看源代码)。当文件生病时它会抛出异常:-) – TLama