3

私は通常、C# で Web アプリを作成するだけですが、WinForms アプリの作成に手を向けようとしました。私は、基本的には上のファサードであるOpenVPNクライアントを作成しましたOpenVPN.exe。プロジェクトにはOpenVPN.exeファイルを含める必要があり、次の場所にあります。

 string ovpnLocation = System.Windows.Forms.Application.StartupPath
      + "\\OpenVPN_Client\\openvpn.exe";

VS のファイルに次のプロパティを適用しています。

  • ビルド アクション:コンテンツ
  • 出力ディレクトリにコピー:常にコピー

ClickOnce インストーラーを使用してアプリケーションを展開しようとすると、次のエラーが表示されます。

File, openvpn.exe, has a different computed hash than specified in manifest.

インターネット全体で見つけることができる他のすべての投稿の手順をクリーニング、再構築、および実行した後、これらの現在の設定ではこの問題を回避できないようです. インストールして実行することができた唯一の方法は、ファイルの設定を次のように変更することです。

  • ビルド アクション:なし
  • 出力ディレクトリにコピー:常にコピー

これらの設定を使用すると、展開時に同じハッシュ エラーは発生しませんが、ファイルの場所が移動したようで、コードが見つからないため、コードがあちこちで実行をスローします。

したがって、これには2つの解決策があります。

  • ハッシュの問題を解決し、コードを変更しません。
  • エンドユーザーのマシンでファイルを見つけるのに役立つ今すぐコードを見つけてください。

どんな助けでも大歓迎です!

4

1 に答える 1

0

プロジェクトを.Net 4.0にアップグレードすることで、これを解決できました。

ファイル パスの問題は、相対パスを使用することで解決されました。

 string ovpnLocation = "OpenVPN_Client\\openvpn.exe";

絶対を作成しようとする代わりに:

string ovpnLocation = System.Windows.Forms.Application.StartupPath
  + "\\OpenVPN_Client\\openvpn.exe";
于 2012-09-14T19:09:55.347 に答える