5

検索したところ、実行時にアプリケーションによって使用されるアプリケーションのデータを含む「ProgramData」という名前の Windows パーティションにフォルダーがあります。このフォルダーは管理者権限を必要とせず、システム ユーザー間で共通であるため、ランタイム ファイルを配置するのに最適な場所です。C#.Net では、次のコードでこのフォルダー アドレスに到達します。

Application.CommonAppDataPath

問題は、Visual Studio Setup Project で Windows インストーラー (msi ファイル) を作成しているときに、データを入れる適切なフォルダーが見つからないことです。このフォルダーをセットアップ プロジェクトに追加する方法を知りたいです。

よろしく。

4

2 に答える 2

5

追加する方法は次のとおりです。

  1. プロジェクトの「ファイル システム」ビューに移動し、「ターゲット マシンのファイル システム」を右クリックします。
  2. 「特別なフォルダーの追加」の下で「カスタムフォルダー」を選択し、名前を付けます
  3. そのフォルダを右クリックして、「プロパティウィンドウ」を選択します
  4. 「DefaultLocation」属性を「[CommonAppDataFolder]」に設定します。
  5. これで、この新しいフォルダーの下に必要なサブフォルダーを追加して、必要なファイルをそこに配置すると、ファイルが目的のパスにインストールされます。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa367992(v=vs.85).aspx

于 2012-09-28T06:10:19.647 に答える
0

パーミッションが原因で、私の質問が私の目的に対して間違っていることがわかりました。私が見つけた解決策は、stackoverflow.com に書かれています。公開ドキュメントのアドレスを取得するために、アプリケーションで次のコードを使用してそれを混ぜ合わせました。

private static string getAddress()
    {
        RegistryKey rk = Registry.LocalMachine;
        RegistryKey sk = rk.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\Shell Folders");
        string address = "";
        if (sk != null)
        {
            address = (string)sk.GetValue("Common Documents", @"c:\Users\Public\Documents");
        }
        return address;
    }

私が言ったことと私がしたことの概要を見てみましょう。最初に、私が望んでいたことが間違っていて、すべてのユーザー間で共有されるフォルダーが欲しかったのに、その作成者だけが ApplicationData フォルダーにアクセスできることがわかりました。だから私はこのリンクを見つけてそれをたどり、インストーラープロジェクトのFileSystem Explorerで必要なフォルダーを作成しました。次に、C# コードを変更し、レジストリからアドレスを読み取るようにしました。

于 2012-09-28T06:42:23.370 に答える