deployment - 使用 Visual Studio 2012, list 已签名,但程序集未签名

标签 deployment visual-studio-2012 clickonce

我正在使用 ClickOnce 应用程序部署,我刚刚从 Verisign 获得了我的代码证书.我正在使用此证书签署 list 。

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

默认情况下,ClickOnce 不会对程序集进行签名吗?我该怎么做?

编辑:目前我让 VS 为 ClickOnce 签署我的 list (安装程序),我正在设置一个构建后事件来签署我的程序集。但是当我安装应用程序时,当我实际运行它时它仍然显示“未知发布者”。

最佳答案

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

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

Enter image description here

如果您没有它,则您没有正确签署您的申请。

这是我的构建后步骤 - 请注意,我只签署了“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>

关于deployment - 使用 Visual Studio 2012, list 已签名,但程序集未签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16876281/

相关文章:

vb6 - 如何使用 VB6 的参数启动离线 ClickOnce 应用程序?

java - JBoss 4.3 eap 一听就找不到 war

javascript - 强制 Visual Studio 插入相对文件引用路径

c# - 在 Visual Studio 2012 中发布时为 "target location"设置默认文件夹

C++ lambda 代表

c# - 在 .NET 中加载应用程序 list

ClickOnce 无法在 Internet Explorer 9 中运行

java - 自动构建和部署 Java Web 应用程序

java - 如何在 weblogic 12C 中使用 REST 异步部署应用程序?

javascript - Meteor Galaxy 部署失败 - 容器崩溃