2

ここには何も表示されませんが、アプリケーションで構成ファイルを更新する場合は、次の場所にある必要があると言われたことを覚えています...

**C:\Users\Ibrar Mumtaz\AppData**

その理由は、ユーザーがアプリケーションのインストール フォルダーではなく、ここで構成ファイルを更新する権限を持っている必要があるためです。これは私が受けている印象であり、間違いなくそうであると確信しています。ここでそれを読んだと思うので= p

私の質問は、これは、アプリケーションをテストする前に実装したい最後の機能であるため、これに光を当てることができる人がここにいるということです.

1)最初に、フォルダーをセットアップしてアプリ構成ファイルをそこにドロップするには、インストーラーが必要です。私はすでにvisial studioインストーラーを使用しているので、アプリをパッケージ化しましたが、この点で私はうんざりしていますか? どうすればいいですか?これを行う方法を示す人が必要なだけで、構成ファイルの新しいホームを探すためにアプリを再構成しても問題ありません。

2)フォルダーを見つけて、その中にある構成ファイルを見つける方法を理解できるはずです。インストーラーが構成ファイルをユーザーがアクセス許可を持つ適切なフォルダーに入れていることがわかったら、そこからまっすぐ進む必要があります。

読んでくれてありがとう。

アップデート:

VS インストーラーには特別なフォルダーを追加するオプションがあるため、後はプログラムでフォルダーにアクセスし、構成ファイルを読み書きするだけでした。一つの問題?アプリケーションの構成ファイルを作成するために使用した ConfigurationManager クラスは、構成ファイルがアプリケーションに対してローカルであり、ローカル FileSystem のまったく別の部分にあるのではないと想定していますか? Errr ヘルプはこちらですか?

イブラー

4

5 に答える 5

1

VS設定ファイルを使用してアプリケーション設定キーを作成し、ユーザーが実行時に変更したい値があり、設定を保存する場合は、それらの設定のスコープを「アプリケーション」ではなく「ユーザー」に設定するだけです。
そうすれば、それらのsetterメソッドが作成され、Settings.Defaultインスタンスを編集できます。完了したら、Save()メソッドを呼び出してそれらをディスクに永続化します。

ファイルは、ユーザーの「AppData」フォルダーのどこにいても、暗号化されたフォルダーの下に保存されます。ただし、次の実行時に自動的に読み取られ、以降の実行時に同じ場所に保持されるため、ほとんどの場合、その場所について心配する必要はありません。

于 2010-01-24T17:28:41.397 に答える
0

プロジェクトの[プロパティ]->[設定]タブにあるアプリケーション設定について話している場合は、ユーザーレベルとアプリケーションレベルの2種類の設定があります。

実行時に設定を変更する必要がある場合、これらはユーザーレベルの設定(http://msdn.microsoft.com/en-us/library/cftf714c.aspx)になり、すべての変更はプライベートのどこかに埋め込まれます。ユーザープロファイルのフォルダー。

アプリケーションレベルの設定を更新する場合は、ソフトウェアのインストール中に更新するのが最善の方法です。この場合、アプリケーションフォルダー以外の場所で構成ファイル(YourApp.exe.config)を探す必要はありません。多くの場合、セットアップパッケージにインストール後のイベントハンドラーを作成し、YourApp.exe.configのデータを更新するスクリプトまたは別のアプリケーションを実行する必要があります。セットアップパッケージ内のすべてが昇格された特権で実行されるため、その構成ファイルは書き込み可能になります。ところで、このシナリオは、ユーザーが制限付きのユーザーアカウントタイプの権限を使用している場合、2000およびXPに適用されます。

于 2010-01-24T17:32:35.277 に答える
0

探していた答えが技術的に見つからなかったため、6 か月後にアプリケーションに戻り、現在のアーキテクチャを壊さないソリューションを作成することができました。

ConfigurationManager によって提供される機能の一部を利用するためにアプリケーションを実装する場合、次の静的メソッドが提供されます。

ConfigurationManager.OpenMappedExeConfiguration(); // takes two arguements.

次のように使用できます。

        ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
        fileMap.ExeConfigFilename = returnUsersAppDataFolderPath();

        Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

例えば

fileMap.ExeConfigFileName = @"some file path external to your applications install folder."

コンパイラが文字列を文字通りそのまま処理できるように、前に「@」記号を使用することを忘れないでください。

構成ファイルを便利にローカルに配置できる場合は、次を使用します。

ConfigurationManager.OpenExeConfiguration(string exePath)

上記は通常使用するものですが、私にとっては、構成ファイルをユーザーの AppData フォルダーの下に配置する必要があったため、最初のオプションが必要でした。そして、それは実際に機能します。

アプリケーションをWin7およびVista環境にデプロイしたいので、これが他の人に役立つことを願っています。したがって、この質問は、ConfigurationManagerの使用に固執するかどうかを尋ねる必要がありました。最終的に選択した方法が本当に目立たなかったのは残念ですそもそも=)。

構成ファイルから読み取りたい場合は、コメントを残してください。それをどのように実行したかを示します。

于 2010-07-28T11:13:02.120 に答える
0

Afaik インストーラーは、処理を行うクラスで拡張できます。

INSTALL-アクションで行うことは

var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                    "My app name");
if (!Directory.Exists(path)) Directory.CreateDirectory(path);

アンインストール時はその逆。

App.config ファイルは、物理アセンブリが配置されている場所に関連していると思います。

于 2010-01-24T17:15:26.827 に答える
0

実際、アプリがユーザーのマシンで実行されている場合、そのユーザーが持っているすべての権限が付与されます。したがって、ほとんどの場合、ファイル システムのどこにでも書き込むことができると期待できます。

ただし、ユーザーが制限されたアカウントで実行されているため、アクセス許可がない可能性があります。したがって、レジストリを使用して構成ファイルの場所(インストールフォルダー)を保存し、更新しようとしたときに、アクセス許可に失敗した場合は、ユーザーに許可を求めることができます。

または、Windows の標準フォルダーを使用することもできます。これは、ユーザー データとアプリケーション データを分離するためです。

Environment.GetFolderPath ()メソッドを使用して、アプリ内の「特別なフォルダー」パスを取得します。

http://www.programmersheaven.com/2/Les_CSharp_15_p2

http://msdn.microsoft.com/en-us/library/14tx8hby.aspx

于 2010-01-24T17:16:19.853 に答える