0

小さな c# winforms アプリケーションを作成しています。sqlite データベースを使用してデータを保存します。このアプリに更新機能を追加して、ユーザーがアプリを再インストールすることなく sqlite ファイルやその他のファイルを更新できるようにするよう依頼されました。

問題は、更新を行うと、すべてが機能しているように見え、エラーなどがないように見えますが、アプリケーションのインストールディレクトリを見ると、ダウンロードされたファイルの一部 (通常は pdf ファイル) が見つからないことです。 Updates.txt ファイルを作成して、実行した更新を追跡します。その後、アプリをアンインストールして再インストールすると、Updates.txt ファイルが見つからなくても、既に更新が行われたかのように動作します。

奇妙なことに、Visual Studio で実行して更新を実行すると、100% の確率で問題なく動作します。セットアップ プロジェクトをビルドしてインストールすると、問題が発生します。ファイルが別の場所にコピーされる設定がセットアップ プロジェクトにあるのではないでしょうか? まったくわかりません。

助けてください。ありがとう。

編集:これは私がファイルをダウンロードしている方法です

String filename = "//test.pdf";

WebClient client = new WebClient();
client.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);

client.DownloadFileAsync(new Uri(dlFile), System.IO.Directory.GetCurrentDirectory() + filename);

更新: これはアクセス許可の問題でした。修正するために、アプリを管理者として強制的に実行しました

4

2 に答える 2

1

アプリケーションを Program Files にインストールする場合、ファイルを書き込む権限がない可能性があります。アプリケーションを管理者として実行するか、コードで昇格する必要があります。

于 2012-05-25T15:10:10.953 に答える
1

パーミッションの問題でなければ、私は驚くでしょう。適切なユーザーに、書き込み先のフォルダーへの読み取り/書き込みを許可し、問題が解決しないかどうかを確認します。ビジュアルスタジオ内で機能する理由は、ビジュアルスタジオが(おそらく)管理者として実行されているため、このようなサブタスクも実行されているためです。これでうまくいかない場合は、さらにデバッグ ステートメントを追加して、どこで問題が発生するかを確認します。

于 2012-05-25T15:11:12.823 に答える