8

大丈夫、私は何か正しいことをしていないので、助けが必要です。何が起こっているかは次のとおりです。

  1. 支払ったComodoからの「本物の」Authenticode 証明書を持っています。
  2. Visual Studio 2012 および .NET 4.5 で記述された WPF アプリケーションに署名して展開しようとしています。
  3. プロジェクトのプロパティで、「ClickOnce マニフェストに署名する」をチェックし、証明書を選択しました。
  4. Comodo のタイムスタンプ サーバー ( http://timestamp.comodoca.com/authenticode )も使用しています。
  5. [公開] タブと [前提条件] ボタンの下で、[前提条件コンポーネントをインストールするためのセットアップ プログラムを作成する] をオンにしました。

ビルドして公開すると、すべてが機能します。setup.exe は私の Comodo 証明書で署名されているので、問題ありません。また、.applicationファイルは Comodo 証明書で署名されており、私の会社名が発行元として表示されます。これも良いことです。

ここで問題が発生します。アプリケーションがクライアントにダウンロードされると、Windows 8 は信頼できないプログラム (MyProgram.exe) に関する警告をスローし、発行元は私の会社名ではありません。したがって、実際の実行可能ファイルを除いて、すべてが署名されています。

signtool.exe を使用するビルド後のスクリプトを obj\Release\MyProgram.exe に追加しようとしましたが、アプリケーションをインストールしようとすると、ハッシュ値が一致しないというマニフェスト エラーが表示されます。つまり、ビルド後のイベントの前にマニフェストが生成されます。

.exe に署名し、ClickOnce マニフェストの整合性を維持するにはどうすればよいですか? これを行う簡単な方法はありますか、それともすべてのファイルで手動で mage.exe を使用する必要がありますか?

4

1 に答える 1

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="&quot;$(SdkPath)bin\signtool&quot; sign $(SigningCertificateCriteria) /d &quot;$(ApplicationDescription)&quot; /t &quot;$(TimestampServerUrl)&quot; &quot;%(SignableFiles.Identity)&quot;" />

signtool.exe ファイルを SDK フォルダー (私の場合は C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin) に移動する必要がありましたが、その後はうまく機能しました。

これが将来誰かに役立つことを願っています。

于 2013-01-11T00:24:03.193 に答える