3

ClickOnce アプリケーション配置を使用しており、Verisignからコード証明書を取得しました。この証明書を使用してマニフェストに署名しています。

アプリケーションをダウンロードしてインストールすると、スマートスクリーンに私の名前が表示されます (不自由ですが、これは起こるべきことだと思います)。ClickOnce インストーラーが完了すると、実際のアプリケーションを実行するためにスマートスクリーンが再び表示されます。ここでは、「不明な発行元」と表示されます。

ClickOnce は既定でアセンブリに署名しませんか? どうすればいいですか?

編集:現在、VS に ClickOnce のマニフェスト (インストーラー) に署名させており、ビルド後のイベントを設定してアセンブリに署名しています。しかし、アプリケーションをインストールすると、実際に実行すると「不明な発行元」と表示されます。

4

1 に答える 1

0

それは私には正しく聞こえません。複数のアプリケーションでまったく同じワークフローを使用しましたが、問題なく動作します。ほとんどの場合、ビルド後の手順に問題があります。BINファイルではなく、OBJフォルダー内のEXEファイルに署名してください(ClickOnceがすべてのファイルを取得する場所であるため)。

ClickOnce パブリッシュを実行し、OBJ フォルダーに移動して、application.exe ファイルを右クリックし、プロパティを選択します。6 つのタブがあり、最後のタブは「デジタル署名」です。

ここに画像の説明を入力してください

持っていない場合は、アプリケーションに適切に署名していません。

そして、これがビルド後のステップです。「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 に答える