如何配置Inno Setup安装包全量完整性校验,提前识别文件损坏问题
Inno Setup安装包全量完整性校验实现方案
对应报错场景:安装过程中弹出如下错误提示
尝试复制文件时出错:源文件已损坏
该报错为安装包文件损坏触发的原生校验提示,默认校验逻辑在文件复制阶段触发,可通过调整Inno Setup原生配置将校验时机提前到安装初始化阶段,无需手动开发哈希校验逻辑。
方案1:开启固实压缩实现提前校验
默认非固实压缩模式下,仅当读取到损坏的对应文件块时才会触发报错,在[Setup]段开启固实压缩即可大幅提前校验时机:
[Setup] SolidCompression=yes
开启后所有打包文件会合并为单个压缩块,只要安装包任意位置出现损坏,安装程序初始化解压首个块时就会触发损坏提示,不会等到文件复制阶段才报错,是最轻量的原生实现方案。
方案2:叠加数字签名实现最严格全量校验
如果需要同时防范文件损坏和恶意篡改,可在编译阶段为生成的安装EXE添加正规数字签名,同时添加如下配置:
[Setup] ; 启动时校验安装包自身的数字签名有效性,文件被篡改/损坏会直接拦截启动 VerifyDigitalSignature=yes
开启后安装程序启动时会优先校验自身PE签名的完整性,只要整个EXE文件有任何修改都会直接提示签名无效,终止安装流程,完全符合启动即全量校验的需求。
补充说明
逐文件哈希校验(触发「源文件已损坏/SHA-1哈希不匹配」报错的逻辑)本身就是Inno Setup原生自带的能力,仅默认触发时机靠后,调整以上配置即可满足需求。
内容的提问来源于stack exchange,提问作者StayOnTarget
相关产品推荐
相关产品推荐

