0

clickonce を介してデプロイされた単純な Winforms アプリケーションがあります。

私の開発マシンでは動作します。

他のマシンでは問題なくインストールできますが、スタートメニューから起動するとクラッシュします。

C:\Users\xxxxx\AppData\Local\Apps\2.0... から開始しても問題ありません。

clickonce が ...[Application Directory]\Data で .mdb を検索すると、クラッシュ時にエラーが発生します。ただし、.mdb ファイルはアプリケーション ディレクトリに展開されます。

助言がありますか?

4

3 に答える 3

0

問題の原因:

.mdbファイルは、「ビルドアクション=コンテンツ」および「出力ディレクトリにコピー=常にコピー」でプロジェクトに含まれていました。

アプリケーション設定で、.mdbファイルの公開ステータスが「含める」に設定されました。

これにより、.mdbファイルがアプリケーションファイルとともにデプロイされました。ただし、clickonceアプリケーションは、.mdbファイルがclickonce\Dataフォルダーにデプロイされることを想定していました。

解決:

「アプリケーションファイル」では、.mdbの「公開ステータス」がデータファイルに設定されていました。これにより、ファイルがclickonce\Dataフォルダーにデポリされます。

パスを介した.mdbファイルとのすべての対話が更新され、アプリケーションがデプロイされた場合にclickonceデータパスが使用されるようになりました。

    if (ApplicationDeployment.IsNetworkDeployed)
    {
        this.applicationDataPath = Path.Combine(Path.GetDirectoryName(Application.UserAppDataPath), "Data");
    }
于 2012-12-12T14:36:45.853 に答える
0

サード パーティの dll の呼び出しに関する例外処理を行い、発生している正確なエラーを投稿します。ClickOnce フォルダー内の exe をクリックすると機能するが、ClickOnce アプリケーションとして実行すると機能しない場合は、ClickOnce アプリケーションよりも多くのアクセス許可を必要とするもの、つまり管理者アクセスを必要とするものを実行している可能性があります。

于 2012-12-10T16:43:45.747 に答える
0

procmon を使用して、アプリケーションがアクセスしようとしているものを確認しましたか? 見逃された可能性のあるアプリケーションのさらなる依存関係を示す場合があります。

また、問題の dll が COM の場合、アプリケーションとアセンブリに必要なマニフェストを作成しましたか。

HTH

ありがとう

于 2012-12-07T13:58:21.177 に答える