1

.NETでは、セットアッププロジェクトを作成すると、アプリケーションファイルは次のようなパスに保存されます。

C:\Program Files\[Manufacturer]\[Product Name]

管理者権限がなくてもWin7で読み取り/書き込みができるように、共通のアプリケーションデータ内にフォルダーを生成しているので、次のパスにもフォルダーを生成しました。

C:\ProgramData\[Manufacturer]\[Product Name]

このフォルダーを読み書きできるように、コードでこのパスを取得するための最良の方法は何ですか?

メーカー名を定数文字列に入れて同期を保つことができます。または、プロジェクトの1つのアセンブリマニフェストに追加することもできます。または、セットアップ中にファイルに保存してみることができますか?

助言がありますか?

4

2 に答える 2

1

ディレクトリを作成する以外に、セットアップで何もしないと思います。アプリケーションが実行時にディレクトリへのアクセスを管理できるようにします。

製造元と製品名を構成ファイルに保存するか、コードにハードコードされた定数を保存します。何らかのリフレクションを行ってアセンブリから検索することもできますが、これは私の考えではやり過ぎです。

ProgramData ディレクトリの場合、%ALLUSERSPROFILE% 環境変数を使用して場所を取得します。そうすれば、すべてのバージョンのウィンドウで機能します。

次に、環境変数とメーカー/製品名を連結して、ディレクトリ全体を構築します。

于 2011-06-20T13:50:59.743 に答える
0

Contextインストーラー インスタンスのを調べて、パスを保存し、後でParameters.

値を適切なパスに設定する必要がありCustomActionDataます ( など/TargetDir="[TARGETDIR]"、使用可能で必要なその他の変数)。

次に、コードで、必要に応じて、上記のようにのParametersプロパティからパスを取得します。Context

var path Context.Parameters.Item("TargetDir")
于 2011-06-20T13:48:51.787 に答える