Jas*_*ams 8 wpf clickonce authenticode
好吧,我做的不对,我需要一些帮助.这是发生了什么:
当我构建和发布时,一切正常!setup.exe是用我的Comodo证书签名的,所以这很好.此外,该.application文件使用Comodo证书签名,我的公司名称显示为发布者 - 这也很好.
问题出现了:将应用程序下载到客户端后,Windows 8会发出有关不受信任程序(MyProgram.exe)的警告,并且发布者不是我的公司名称.因此,除了实际的可执行文件之外,一切都已签名.
我已经尝试添加在obj\Release\MyProgram.exe上使用signtool.exe的后期构建脚本,但是当我尝试安装应用程序时,我收到一个清单错误,指出哈希值不匹配.换句话说,清单是在构建后事件之前生成的.
如何签署我的.exe并维护ClickOnce清单的完整性?有没有一种简单的方法可以做到这一点,还是我必须手动使用mage.exe(我希望不是)?
Jas*_*ams 10
好吧,没有人跳过这个,但谢天谢地,我明白了!
感谢这个问题:签署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)"" />
Run Code Online (Sandbox Code Playgroud)
我不得不将signtool.exe文件移动到SDK文件夹(C:\ Program Files(x86)\ Microsoft SDKs\Windows\v8.0A\bin,在我的情况下),但之后它就像一个魅力!
我希望将来可以帮助别人.