C# 設定クラスの値に基づいてファイルを読み込むプロジェクトがあります。ただし、この値はマシンごとに異なり、企業環境としてプログラムを初めて実行するときにユーザーに尋ねるのではなく、インストーラーで設定したいのですが、ファイルはどこにありますか? もっと簡単な方法はありますか?
これはスタンドアロン プログラムではなく、ビジュアル スタジオ アドインです。
あなたの投稿から、Windows アプリケーションがあるように見えますか? 、アプリケーション構成に初期値を保存できます。Visual Studio でインストーラーを作成し、インストール プロジェクトの最初のインストール時にファイルに値を書き込むことができるカスタム アクションを記述できます。
構成ファイルは、求めていることを実行する最も簡単な方法ですが、最善ではありません。実際、このような場合には .config ファイルを使用しないことをお勧めします。
ユーザーが「アップデート」をインストールするたびに、既存の変更が上書きされるリスクがあります。
一部の企業では、.config ファイルに対してポリシーの制限がある場合があります。
ユーザーは自分の設定をある PC から別の PC に簡単に移動できません。
私自身の経験から、XML、MS-Access、レジストリ、またはテキスト ファイルを使用してユーザー設定を保存すると、.config ファイルを使用するよりも便利であることが証明されています。
インストーラーの最後に何らかのカスタム アクションが必要になることは間違いありません。アプリケーションを展開するために使用しているテクノロジについて言及していないため、具体的なガイダンスを提供することは控えます。
に値を設定することをお勧めしますApp.config。これは、MyApplication.exe.configアプリケーションと同じディレクトリに名前が付けられる xml ファイルです。まだ存在しない場合は、インストーラーに追加します。インストーラーで、新しい設定を追加します。
<configuration>
<appSettings>
<add key="MySetting" value="My Value"/>
</appSettings>
</configuration>
コードで、設定を取得します。
String setting = ConfigurationSettings.AppSettings["MySetting"];
これがマシン全体の設定である場合、このインストーラーはこれを設定する適切な場所です。最初の実行時にこれを行うと、アプリを最初に実行するユーザーが権限が制限されているユーザーである場合、ファイルとディレクトリの権限に関する多くの問題が発生します。
デザイナーが生成した設定 (.settings ファイル) について話していると思いますか?
通常、正確なパスには何らかのハッシュが含まれています (このリンクを確認してください)。私は通常、XmlSerializerを使用して xml との間でシリアライズする独自の設定クラスを持っています。単に .settings ファイルに追加するだけではありません)。
ただし、インストール時に値を設定する必要はないのではないでしょうか? たとえば、アプリを初めて起動したときに読み取ることができるFirstStartup設定 (初期設定) を追加してから、設定することができます。そうすれば、「最初の起動」を検出したときにデフォルト設定を設定できます。truefalse
レジストリ、INI ファイル、または XML ファイルのどれでもかまいません。
最良のオプションはレジストリです。アプリケーションのインストールには管理者アクセスが必要なので、インストール中のレジストリへの書き込みは問題になりません。
さらに、誤って ini ファイルまたは設定ファイルを削除すると、プログラムが動作しなくなる可能性があります。
個人的には、web.config や app.config を使用することはありません。自分の xml ファイルを読んで、これに関する私の投稿を見てください: http://www.picnet.com.au/blogs/Guido/post/2009/09/10/XML-Settings-Files-No-more- webconfig.aspx
ありがとう
グイド
これは企業環境用だとおっしゃいました。グループ ポリシーの管理用テンプレートを作成して、レジストリに既定値を設定できます。次に、既定値がまだ設定されていない場合、プログラムはその 1 つのレジストリ値を照会するだけで済みます。
私の場合は異なります。私のプロジェクトは、app.config ファイルを持つクラス ライブラリ (dll) です。4 つのアプリケーション設定変数 (タイトル、URL、制限、レート) を作成することにしました。これを作成するには、プロジェクトを右クリック --> [プロパティ] --> [設定] を選択します。この値は、このコマンドを使用してコードで取得できます --> Settings.Default.title, ...etc
問題は、このライブラリから 5 つのオブジェクト (MyProject.MyClass などの同じオブジェクト) をインスタンス化することです。インスタンスに独自の設定を持たせることができます。つまり、各インスタンスに xml 設定ファイルがある可能性があります。これはできますか?