1

VS2008 では、インストーラーである ac# サービスを作成し、それをインストールするためのセットアップ パッケージを作成しました。サービスが動作するには、xml ファイルをロードする必要があります。このファイルを VS セットアップ プロジェクトによって提供されるさまざまなファイル システム フォルダーに配置するのに最適な場所はどこですか?コードからこれらのパスを参照するにはどうすればよいですか?

ありがとう

[このサービスは LocalService として実行されることを指摘しておく必要があります。つまり、VS セットアップ プロジェクトの「ユーザーのアプリケーション データ フォルダー」項目によって提供される applicationdata フォルダーには、インストール中に「すべてのユーザーにインストール」を使用した場合でもアクセスできません。これは簡単にハッキングできますが、ベストプラクティスを理解したいと思います]

4

4 に答える 4

4

XML ファイルを保存するのに適した場所がわかりません。たいした問題にはならないと思います。ただし、システムで特別なフォルダー パスを取得する必要がある場合は、Environment クラスを使用して取得できます。次のコード行は、プログラム ファイルのパスを取得します。

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
于 2008-10-18T20:31:16.103 に答える
1

セットアップ プロジェクトから作成されたインストーラーが使用するインストール パスを読み取るには:

1) セットアップ プロジェクトで「カスタム アクション」エディターを開きます。

2) インストーラー クラスが配置されているアセンブリからカスタム アクションを追加します (まだ行っていない場合)。

3) このカスタム アクションを選択/myKey="[TARGETDIR]\"し、プロパティ グリッドの CustomActionData に追加します

4) Installer クラスでは、次のように値にアクセスできます。Context.Parameters["myKey"]ステップ 2 での選択に応じて、メソッドオーバーライドで

于 2011-08-13T18:29:00.717 に答える
1

これは非常に古い質問ですが、受け入れられた回答に同意しないため、少なくともプログラムによって XML ファイルが更新される場合は、とにかく投稿します。

サーバー スタイルのプログラム (Windows サービスまたはその他の非ユーザー固有のプログラム) をインストールするときに私が行うことは、プログラムと共に Program Files に既定またはテンプレートの XML 設定ファイルをインストールすることです。しかし、私はそのファイルに書き込もうとはしません - これは通常許可されていません。

代わりに、プログラムの初期化中に、ファイルが以前に C:\ProgramData の下に作成したサブフォルダー (つまり、「C:\ProgramData\myCompanyName\myProgramName\mySettingsFile.xml」) にコピーされているかどうかをテストします。(Environment.SpecialFolder.CommonApplicationData を使用して C:\ProgramData を見つけます - ここを参照してください: http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx )。XML 設定ファイルが既に存在する場合は、それを開いて使用します。書き込み可能です。存在しない場合は、必要に応じてサブフォルダーを作成し、Program Files からテンプレート XML 設定ファイルをコピーします。これは、インストール後にプログラムを最初に実行するときにのみ実行する 1 回限りの操作です。

詳細については、こちらを参照してください:開発者として、Windows Vista (および Windows 7) で特別なフォルダーをどのように使用すればよいですか?

于 2013-09-16T02:31:59.137 に答える
0

レジストリはいつでも使用できます。

于 2008-10-18T20:53:28.243 に答える