好吧,我做的不对,我需要一些帮助。这是正在发生的事情:
当我构建和发布时,一切正常! setup.exe是用我的Comodo证书签名的,所以这很好。此外,.application
文件使用Comodo证书签名,我的公司名称显示为发布者 - 这也很好。
问题出现了:将应用程序下载到客户端后,Windows 8会发出有关不受信任程序(MyProgram.exe)的警告,并且发布者不是我的公司名称。因此,除了实际的可执行文件之外,所有内容都已签名。
我尝试在obj \ Release \ MyProgram.exe上添加使用signtool.exe的后期构建脚本,但是当我尝试安装应用程序时,我收到一条清单错误,指出哈希值不匹配。换句话说,清单是在构建后事件之前生成的。
如何签署我的.exe并维护ClickOnce清单的完整性?有没有一种简单的方法可以做到这一点,还是我必须手动使用mage.exe(我希望不是)?
答案 0 :(得分:10)
嗯,没有人跳过这个,但谢天谢地,我明白了!
感谢您提出这个问题:"File has a different computed hash than specified in manifest" error when signing the EXE
我能够编辑项目文件的XML(卸载项目,然后选择“编辑myproject.csproj”)并添加:
<Target Name="SignOutput" AfterTargets="CoreCompile">
<PropertyGroup>
<TimestampServerUrl>http://timestamp.comodoca.com/authenticode</TimestampServerUrl>
<ApplicationDescription>My Project Friendly Name</ApplicationDescription>
<SigningCertificateCriteria>/n MyCertName</SigningCertificateCriteria>
</PropertyGroup>
<ItemGroup>
<SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)" />
</ItemGroup>
<GetFrameworkSdkPath>
<Output TaskParameter="Path" PropertyName="SdkPath" />
</GetFrameworkSdkPath>
<Exec Command=""$(SdkPath)bin\signtool" sign $(SigningCertificateCriteria) /d "$(ApplicationDescription)" /t "$(TimestampServerUrl)" "%(SignableFiles.Identity)"" />
我必须将signtool.exe文件移动到SDK文件夹(C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin,在我的情况下),但之后它就像一个魅力!
我希望将来可以帮助别人。