17

ClickOnce 経由で展開するアプリケーションを開発しています。signtool.exeアプリケーション (ビルド後) と ClickOnce マニフェストに署名するために使用している VeriSign コード署名証明書があります。現在、署名に関連する 2 つの問題があります。

  1. 証明書を使用して .exe に署名しています。アプリケーションをビルドすると、署名されていることがわかります (たとえば、"signtool verify /pa TheExecutable.exe" を介して)。ただし、ClickOnce を介してアプリケーションをインストールした後、.exe は署名されなくなります。

  2. 証明書を使用して ClickOnce マニフェストに署名しています。しかし、ClickOnce 経由でアプリケーションをインストールしようとすると、ClickOnce インストーラーに "不明な発行元" と表示されます。

問題#1は常に発生しています。問題#2は不思議なことに消えることがありますが、その後すぐに戻ってくることが多く、ここ数週間一貫して見られています.

何か案は?

4

4 に答える 4

14

よし、この質問の 1/2 の謎が解けました。ClickOnce は からアプリケーション マニフェストを取得しますbinが、実際の EXE は から取得しobjます。署名済みの exe を配布するには、ディレクトリ内のファイルに署名する必要がありますobj

編集:これが残りの半分です。.NET 4.5 Beta をインストールすると、VS2010 でも ClickOnce 署名/検証が中断されます。

于 2012-05-02T21:47:06.847 に答える
7

マニフェストへの署名とexeへの署名を処理する方法は次のとおりです。これを .csproj ファイルの最後に追加します (テキスト エディターで編集します)。

  <Target Name="AfterBuild">
    <CallTarget Targets="SignOutput" />
    </Target>
    <Target Name="SignOutput">
    <PropertyGroup>
      <TsUrl>http://timestamp.comodoca.com/rfc3161</TsUrl>
    </PropertyGroup>
    <ItemGroup>
      <SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\myappname.exe" />
    </ItemGroup>
    <Exec Command="signtool.exe sign /n &quot;My Company Name LLC&quot; /tr $(TsUrl) &quot;%(SignableFiles.Identity)&quot;" />
  </Target>
于 2012-11-13T23:21:48.223 に答える
4

正直に言うよ、ポール。私は ClickOnce に本当に興奮したことはありません。ツールセットは、手動の公開/展開の側面を除いて、成熟しているようには見えません。MSBuild を介して実行することは決して良い経験ではなく、Mage.exeには常に問題があるようです。ほとんどの場合、私の問題はバージョン番号が正しく設定されていないことが原因でした。

とはいえ、Visual Studio の設定 UI で管理しようとしたことが最大の問題だったと思います。MSBuild の "魔法" への依存を少し減らし、必要なパラメーターを MSBuild に渡し、csproj ファイル内でもう少し制御できるようにすることは、私にとって役に立ちました。

ビルドのセットアップがどのように見えるかはわかりませんが、私たちの場合、ソリューションで MSBuild を呼び出すRakeファイルをJenkinsで実行します。これにより、特定のパラメーターを Rake ファイルから MSBuild に送信できます。

ApplicationVersion具体的には、 、ApplicationRevisionMinimumRequiredVersion、および の値をプッシュしますOutDir。csproj 自体で注意することに関してはManifestCertificateThumbprint、 、ManifestKeyFileGenerateManifestsおよびSignManifestsが設定されていることを確認する必要があります。また、デフォルトのビルド ターゲットを に設定しましたPublishが、それだけで十分かどうかはわかりません。

署名している実行可能ファイルが ClickOnce パッケージにパッケージ化されていると思われるものではない可能性があることを除けば、ClickOnce が実行可能ファイルを「署名解除」する理由について話すことはできません。つまり、新しい実行可能ファイルを作成し、既に署名したものの代わりにそれをパッケージにスローしている可能性があります。ただし、確実に電話をかけるには、セットアップについてもう少し知る必要があると思います。

やり直しがきくなら、私は自分の卵を ClickOnce バスケットに入れません。Internet Explorer を実行している場合、または Chrome 用のプラグインをインストールしている場合にのみ、これは本当に素晴らしいエクスペリエンスです。もっと手間がかかりますが、私は現在、Chrome の更新ストーリーを模倣するソリューションに取り組んでいます。Internet Explorer ユーザー向けの ClickOnce パッケージがありますが、実際には、Chrome.exe と Update.exe をインストールする Windows インストーラー パッケージをダウンロードするためにのみ使用されます。Omahaの技術文書(Google Update としても知られています)に詳細が記載されています。

于 2012-05-01T02:02:31.607 に答える
-1

setup.exeに自分で署名することに問題があります。MSFTのP&P担当者向けにClickOnceの記事を書いているときに、これに遭遇しました。回避策はありません。

展開の生成に使用しているユーザーアカウントの証明書ストアに証明書がインストールされていますか?VSソリューション自体でファイルとして指定されていますか?これがデフォルトであり、msbuildとmageを使用してデプロイメントを生成する場合、署名された状態で問題なく出力されますか?

于 2012-05-05T18:10:56.420 に答える