我希望创建一个易于安装的应用程序。 安装过程非常复杂(包括许多权限、防火墙规则、服务等)。 因此,我决定使用C#(.NET 4)编写设置程序,然后使设置程序本身成为单击安装。
我的想法是用户将转到网站,点击安装,我的设置程序将通过单击一次在他们的计算机上安装,然后运行,设置主程序。
为了使这个过程变得简单,显然我必须签署所有可执行文件。 我购买了Comodo代码签名证书,在我的证书存储中安装了它,并在VS Express 2012中勾选了“签名单击清单”。 我还包括了一个后构建步骤,其中运行了:
我的想法是用户将转到网站,点击安装,我的设置程序将通过单击一次在他们的计算机上安装,然后运行,设置主程序。
为了使这个过程变得简单,显然我必须签署所有可执行文件。 我购买了Comodo代码签名证书,在我的证书存储中安装了它,并在VS Express 2012中勾选了“签名单击清单”。 我还包括了一个后构建步骤,其中运行了:
SIGNTOOL.EXE sign /f TrumphurstCodeCertificate.pfx /p <my password> TimeClockSetup.exe
我清空了生成文件夹和部署网站的所有内容,并进行了干净的构建。
我查看了生成文件夹中可执行文件的属性,显示是由我发布的。
我将程序发布到网站上,在另一台Windows 8电脑上导航到网站,然后单击“安装”按钮。
接着我收到提示是否要运行或保存setup.exe
,我选择运行。
然后我又收到提示setup.exe不常见,可能会损害您的计算机
- 我点击操作,上面说此程序可能会损害您的计算机
。但它确实显示出版商是Trumphurst Ltd,并给我选项继续运行,我点击了这个选项。
然后我得到了一个"打开文件 - 安全警告",指的是".....\TimeClockSetup.exe","发行商: 未知发行商"
。
为什么exe显示为未知发行商
?
我浏览到用户数据目录中的exe文件,没有在属性对话框中显示"数字签名"选项卡。
然而,如果我浏览到生成文件夹中的exe文件,它就有签名了。
[稍后]我记得曾在某个地方阅读到一些构建或发布过程使用obj文件夹中的exe文件而不是生成输出文件夹中的exe文件,因此我将签名添加到了后续构建步骤中 - 但并没有什么不同。