10 public sealed class Env
24 private static NaGetLibPref pref;
27 /// 設定ファイルを読み込む。一回のみ呼ばれる。
29 private static void loadPref()
31 string path = Path.Combine(Environment.CurrentDirectory, "pref.xml");
33 if (! File.Exists(path)) throw new FileNotFoundException(string.Empty, path);
34 pref = NaGet.Utils.GetDeserializedObject<NaGetLibPref>(path);
36 pref = new NaGetLibPref();
45 /// ファイルリスト提供サーバのリストファイル
47 public static readonly string ProviderListFile = "provider.list.txt";
50 /// ファイルリストから読み込まれたパッケージのリストファイル
52 public static readonly string PackageListFile = "packages.list.xml";
55 /// 本ソフトウェアを介してインストールされたパッケージのリストファイル
57 public static readonly string ArchiveInstalledPackageListFile = "packages.envinstalled.xml";
60 /// システムから検出されたパッケージのリストファイル
62 public static readonly string SystemInstalledPackageListFile = "packages.sysinstalled.xml";
67 public static readonly string SystemInstalledPackageLogFile = "packages.sysinstalled.log.xml";
70 /// アプリケーションデータを保存するフォルダのパス
72 public static string AppDataFolderPath
75 if (pref == null) loadPref();
77 if (! string.IsNullOrEmpty(pref.AppDataFolder)) {
78 return pref.AppDataFolder;
81 return Environment.CurrentDirectory;
86 /// インストーラの一時置き場の親ディレクトリ
88 public static string ArchiveFolderPath
90 get { return Path.Combine(AppDataFolderPath, "Cache"); }
94 /// アーカイバ方式のパッケージのインストール先フォルダ
96 public static string ArchiveProgramFiles {
98 return Path.Combine(AppDataFolderPath, "progs");
103 /// アーカイバ方式のパッケージのプログラムグループフォルダ
105 public static string ArchiveProgramGroup {
107 return Path.Combine(AppDataFolderPath, "programs");
112 /// アーカイバ方式のパッケージのSystem32のフォルダ
114 public static string ArchiveSystem32 {
116 return Path.Combine(ArchiveProgramFiles, ".system32");
125 /// ウェブアクセスのためのプロキシを取得する。
127 /// <returns>プロキシ</returns>
128 public static IWebProxy WebProxy
131 if (pref == null) loadPref();
133 if (string.IsNullOrEmpty(pref.ProxyAddress)) {
134 // 設定されていないときはシステムのデフォルトを使う
135 return WebRequest.GetSystemWebProxy();
136 } else if (pref.ProxyAddress == "-") {
140 // host:portが設定されているならば、それをもとに設定
141 return new WebProxy(pref.ProxyAddress);