为NSIS安装程序设置UAC“发布者”字段

您所在的位置:网站首页 发布者未知发布者 为NSIS安装程序设置UAC“发布者”字段

为NSIS安装程序设置UAC“发布者”字段

2024-02-12 13:45| 来源: 网络整理| 查看: 265

当我打开安装程序(使用NSIS创建)时,会出现UAC对话框,其中包含有关安装程序的信息。 字段发布者是"未知"。 我听说过对应用程序进行数字签名,您知道如何在NSIS中执行此操作吗?

如何将字段/属性发布者设置为"我的安装程序"或其他一些文本?

我认为下面的代码应该设置Publisher字段,但是没有,它仍然保持"未知"状态:

12345678910111213141516171819InstallDir "abc" Name       "def"         OutFile    "def.exe" VIProductVersion                "1.0.0.0" VIAddVersionKey ProductName     "def" VIAddVersionKey Comments        "MY DESCRIPTION" VIAddVersionKey CompanyName     "My Installer" VIAddVersionKey LegalCopyright  "MY COMPANYNAME" VIAddVersionKey FileDescription "MY DESCRIPTION" VIAddVersionKey FileVersion      1 VIAddVersionKey ProductVersion   1 VIAddVersionKey InternalName    "def" VIAddVersionKey LegalTrademarks "PTY LTD" VIAddVersionKey OriginalFilename"def.exe" Section     DetailPrint"Hello World" SectionEnd

相关讨论 除非您要使用svn中未发布的NSIS版本,否则无法轻松进行更改。 见stackoverflow.com/questions/4244497/ 重要的是,那里的"发布者"字段是通过数字签名完成的,发布者是签名的领域。 这意味着您首先需要购买签名。

您必须使用Windows信任的证书颁发机构对Authenticode进行签名(如果您想成为Winqual的一部分,那么您需要一个特殊的证书,而MS仅允许您使用VeriSign),因为该字段是从数字证书中提取的(如果一个存在),而不是来自PE版本信息。

要在构建过程中进行签名,可以使用此技巧,或者,如果您使用的是NSIS v3,则可以使用!finalize命令。

相关讨论 如果证书是使用sha1和sha256选项添加的,则Windows 10正确显示了该字段,如stackoverflow.com/a/58023197/3957090中所述 Windows会将@Anders我的nsis安装程序标记为恶意软件,将其签名可以解决此问题吗?也有其他黑客,因为我不想购买证书吗? @Dragon您确定它被标记为恶意软件吗?签名无法解决该问题。签名(尤其是EV)将有助于Windows智能屏幕。如果检测到为恶意软件,请向反病毒供应商提交误报报告。 @Anders每次更改应用程序时都必须提交报告吗?审核需要多少时间?另外,我是否必须将请求一一提交给所有供应商,还是可以通过任何方式提交到集中存储库? @Dragon检查virustotal,以找出哪些产品可以检测到您,然后基本上向每个供应商报告。但是,如果确实是病毒问题,那么您现在不在主题范围内。

为了提供有关该命令的更多详细信息,这些是我在NSIS 3.03中通过!finalize命令使用的行。

重要提示:您需要在passwd.txt文件中提供与codecert.pfx文件位于同一目录中的codesign证书密码。

123456789101112131415161718192021222324!define PRODUCT_NAME"def" !define PRODUCT_VERSION"1.0.0.0" !define OutputFileName"def.exe" Name"${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile"${OutputFileName}" InstallDir"abc" ShowInstDetails show !define /file OutFileSignPassword".\\CodeSign\\passwd.txt" !define OutFileSignCertificate".\\CodeSign\\certificate.pfx" !define OutFileSignSHA1  ".\\CodeSign\\signtool.exe sign /f ${OutFileSignCertificate} /p ${OutFileSignPassword} /fd sha1   /t  http://timestamp.comodoca.com /v" !define OutFileSignSHA256".\\CodeSign\\signtool.exe sign /f ${OutFileSignCertificate} /p ${OutFileSignPassword} /fd sha256 /tr http://timestamp.comodoca.com?td=sha256 /td sha256 /as /v" !finalize"PING -n 1 127.0.0.1 >nul"                                # Delay Next Step to ensure File isn't locked by previous Process !finalize"${OutFileSignSHA1} .\\${OutputFileName}"                  # CodeSigning with SHA1/AuthentiCode !finalize"PING -n 5 127.0.0.1 >nul"                                # Delay Next Step to ensure File isn't locked by previous Process !finalize"${OutFileSignSHA256} .\\${OutputFileName}"                # CodeSigning with SHA256/RFC 3161   CRCCheck on Section     DetailPrint"Hello World" SectionEnd

之后,您将能够看到类似于以下行的输出:

1234567891011121314The following certificate was selected:     Issued to: Your Company     Issued by: COMODO RSA Code Signing CA     Expires:   Sun Mar 15 00:59:59 2020     SHA1 hash: 0A12223C465069798D940317273C4F56A9BCC6D9 Done Adding Additional Store Successfully signed: .\\def.exe Number of files successfully Signed: 1 Number of warnings: 0 Number of errors: 0

用两个签名对安装程序文件签名似乎很重要,因为svcabre实现了它:

一方面同时使用两个sha1算法

123"c:\\Program Files (x86)\\Windows Kits\\10\\bin\\x86\\signtool.exe" sign /f"YourCertificateFileHere.pfx" /p YourPasswordHere /fd sha1 /t http://timestamp.comodoca.com /v"YourInstallerFilePathHere"

另一方面,sha256

1234"c:\\Program Files (x86)\\Windows Kits\\10\\bin\\x86\\signtool.exe" sign /f"YourCertificateFileHere.pfx" /p YourPasswordHere /fd sha256 /tr http://timestamp.comodoca.com?td=sha256 /td sha256 /as /v"YourInstallerFilePathHere"

使用此选项,Windows 10也会正确显示证书持有者。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3