我想创建一个易于安装的应用程序。安装过程相当复杂(很多权限、防火墙规则、服务等)。所以我决定用 C# (.net 4) 编写安装程序,然后让安装程序本身成为一次单击安装。
这个想法是,用户会去网站,点击安装,我的安装程序将通过点击一次安装在他们的计算机上,然后它会运行,设置主程序。
为了使这个过程变得简单,我显然必须签署所有可执行文件。我购买了 Comodo 代码签名证书,将其安装在我的证书存储中,并在 VS Express 2012 中勾选了“Sign the Click Once manifests”。我还包括了一个运行后的构建步骤
SIGNTOOL.EXE sign /f TrumphurstCodeCertificate.pfx /p <my password> TimeClockSetup.exe
我清理了我的构建文件夹和部署网站中的所有内容,并运行了一个干净的构建。
我检查了构建文件夹中可执行文件的属性,它显示为我发布的。
我将程序发布到网站,启动另一台 Windows 8 计算机,导航到该网站,然后单击“安装”按钮。
提示我Do you want to run or save setup.exe
,并选择运行。
然后我被提示setup.exe is not commonly downloaded and could harm your computer
- 我点击了操作,它说This program might harm your computer
。它确实说出版商是 Trumphurst Ltd,并给了我运行的选项,我点击了。
然后我得到了"Open File - Security Warning", for ".....\TimeClockSetup.exe", "Publisher: Unknown Publisher"
。
为什么exe显示为Unknown publisher
?
我浏览到安装它的用户数据目录中的 exe,但“属性”对话框中没有显示“数字签名”选项卡。
但是,如果我浏览到构建文件夹中的 exe,它有一个签名。
[后来]我记得在某处读到,构建或发布过程的某些部分使用 obj 文件夹中的 exe 文件,而不是构建输出文件夹中的那个,所以我在构建后的步骤中添加了签名 - 它没有任何区别。