如何使MSBuild在Clickonce应用程序中签署所有文件

时间:2017-02-13 11:00:56

标签: c# clickonce sha

我有一个由Clickonce安装的应用程序(WPF),现在我需要签名,因此Windows可以将我的公司识别为受信任的发行者。我的C.I.使用了以下命令行。工具(钻石的参数<>仅用于举例说明情况):

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /target:clean;build;publish /p:ApplicationVersion=<VERSION> /p:SignAssembly=true /p:GenerateManifests=true /p:SignManifests=true /p:AssemblyOriginatorKeyFile=<PFX_PATH> /p:ManifestCertificateThumbprint=<CERTIFICATE_ID> /property:Configuration=<CONFIGURATION>;PublishDir=<PUBLISH_DIR>;BootstrapperEnabled=true;PublishUrl=<PUBLISH_URL>;InstallUrl=<INSTALL_URL>;UpdateUrl=<UPDATE_URL> C:\hudson\slave\workspace\NIMBUS-NFE-NFEasy2\NFeasy2\NFeasy2.sln

问题是:只有setup.exe被签名,并且只能使用SHA-256算法。因此,当用户运行我的应用程序时,不识别发行者。此外,在使用Windows XP运行时,设置将永远不会运行,因为SO无法识别签名(似乎WinXP需要SHA-1)。

如何设置项目或命令行以使用SHA-1和SHA-256算法对所有文件进行签名?此外,每次运行应用程序时,是否会停止提示用户的权限?如果没有,有办法吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

通过互联网阅读了大量解决方案之后,我设法编写了一个批处理文件来进行完整签名。请注意,这仅适用于特定版本,我必须按以下顺序将它们放在我的路径中:

Array
(
    [0] => Hotel Jayakarta Jaya sangat nyaman ditempati
    [1] => Hotel menginap disana selama satu minggu
)

脚本如下:

C:\Program Files (x86)\Windows Kits\8.1\bin\x86;

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin;