当前位置:主页 > 公司动态 >

安装包UI美化之路-NSIS卸载程序签名(防报毒)

浏览记录: 116次日期:2022-12-08

总是有朋友反馈说,打包出来的程序会被360报毒!

嗯... 这是一个问题,360误报不是一天两天了。

原因及理论

被误报,一般是两个原因:

问题即答案啊,那就是添加代码签名,然后提交360认证就好!^_^ 我们重点讲签名,在这个层面尽可能减少误报。 还有朋友反馈,我已经给打好包的程序签名了,可是还是会被360误报,这个是什么原因呢?

原来,NSIS在打包的过程中,会同步的生成卸载方案,在安装的过程中,有一个释放卸载程序的步骤:

WriteUninstaller "$INSTDIR\uninst.exe"

就是这个WriteUninstaller指令,会在安装时,动态的向目标安装目录下释放一个卸载程序,而这个程序由于是动态写入的,并没有添加签名,这是最主要的引起误报的原因。

今天我们就来看一下,在nsNiuniuSkin的安装包打包方案中,是如何优雅的解决这个问题的。

目标与实现方案

我们的目标是:生成的安装包中,要带上已经签好名的卸载程序。

我们的卸载程序的卸载逻辑是卸载其自身所在目录下的文件,所以可以提前生成他,签名后保存起来,后续直接使用他,我们本可以这样干:

然而,这样会导致安装程序与卸载程序脱节,容易在后续的版本发展过程中引起卸载出问题;考虑到我们生成安装包时,是可能修改了安装界面与卸载界面的,所以我们的方案是每次打包时,都是同步生成最新的卸载程序,把卸载程序的生成、签名、打包进主安装包中的流程统一起来,统一控制,一次性从0生成最终的安装包!

以下是我们一键生成的完整方案,脚本流程如下:

实际操作

以上流程,在我们最新的打包脚本中已经完全包含了,同时提供了代码签名的脚本,如果你手头已经有了代码签名证书,只要配置上证书名称、证书密码,然后通过我们的一键打包脚本,就可以制作出完全签名且界面精美的安装包了。

  1. 生成卸载程序、释放、签名、复制到FilesToInstall的入口脚本

    签名效果:

  2. 主程序签名效果

  3. 签名脚本介绍

    签名使用微软的signcode.exe进行签名,核心签名脚本如下:

    @echo off
    set pfx_password=%3
    set timestamp=http://timestamp.digicert.com
    
    :doSign
       echo "doSign %1-------"
       signtool.exe sign /f %2  /p "%pfx_password%" /t %timestamp% /du %4 "%1"
       if errorlevel 2 goto :doSign
       if errorlevel 1 goto :doSign
       if errorlevel 0 goto :eof
       :offline
       echo "no network"
       pause
       exit
    

    相应的脚本我们已经进行了bat封装,且整合到了整个打包的过程中,如果不想花时间动手自己写,就联系我吧!

您也可以直接安装nsNiuniuSkin界面在线设计引擎来实际看看效果:

http://www.leeqia.com/download/NSNiuniuSKin_DuiDesigner_Setup.exe

后记

至此,我们已经有了一个完全签名的安装包程序了,理论上被误报的可能性会大大降低,但也不能说就完全不会;为确保正常,建议还是到360提交软件白名单。

福利分享

又有朋友有疑问了,那么要去哪里购买代码签名证书呢? 这个不是随便买的,要去正规的CA机构购买,目前已经很难买到个人的代码签名证书了,都需要以公司的名义购买; 国内的CA机构可以买沃通;国外的话,选择会更多一些,这里推荐一家比较便宜的代码签名证书购买代理网站: https://cheapsslsecurity.com/

比如sectigo的代码签名证书,最低可以做到70美金一年,我们家的代码签名证书就是这上面买的,实际上还是由sectigo进行签发,可以放心购买!

结语

在安装包安装过程中,精美的UI往往能让客户对所安装产品的印象更加深刻,更能体现出软件服务商在用户体验上的专注与用心! 希望我们的努力,能够让安装包制作再容易一点,再快乐一点!

愿天下没有难做的安装包!

Copyright © 2015 - 2023 深圳市利洽科技有限公司 All Rights Reserved 粤ICP备15043258号-2