3

我正在使用 ClickOnce 应用程序部署,并且刚刚从Verisign获得了我的代码证书。我正在使用此证书来签署清单。

当我下载并安装应用程序时,智能屏幕上会显示我的名字(蹩脚,但我认为这是应该发生的)。ClickOnce 安装程序完成后,智能屏幕再次出现以执行实际应用程序,此处显示“未知发布者”。

ClickOnce 默认情况下是否不对程序集进行签名?我该怎么做呢?

编辑:目前我让 VS 为 ClickOnce 签署我的清单(安装程序),并且我正在设置一个 Post-build 事件来签署我的程序集。但是当我安装应用程序时,当我实际运行它时它会显示“未知发布者”。

4

1 回答 1

0

这对我来说听起来不对。我为多个应用程序使用了完全相同的工作流程,并且效果很好。您的后期构建步骤很可能存在问题。确保您在 OBJ 文件夹中签署 EXE 文件(因为 ClickOnce 从那里获取所有文件) - 而不是 BIN 文件。

执行 ClickOnce 发布,转到 OBJ 文件夹,右键单击您的 application.exe 文件,然后选择属性。它应该有六个选项卡 - 最后一个是“数字签名”:

在此处输入图像描述

如果你没有它,你就没有正确地签署你的申请。

这是我的后期构建步骤 - 请注意,我仅签署“RELEASE”配置:

  <Target Name="SignOutput" AfterTargets="CoreCompile" Condition="'$(ConfigurationName)'=='Release'">
    <PropertyGroup>
      <TimestampServerUrl>http://timestamp.verisign.com/scripts/timestamp.dll</TimestampServerUrl>
      <ApplicationDescription>my app</ApplicationDescription>
      <SigningCertificateCriteria>/n "my company."</SigningCertificateCriteria>
    </PropertyGroup>
    <ItemGroup>
      <SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)" />
    </ItemGroup>
    <Exec Condition=" '$(ConfigurationName)'=='Release'" Command="&quot;c:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe&quot; sign $(SigningCertificateCriteria) /d &quot;$(ApplicationDescription)&quot; /t &quot;$(TimestampServerUrl)&quot; &quot;%(SignableFiles.Identity)&quot;" />
  </Target>
于 2013-09-05T12:07:11.713 回答