10 public sealed class Env
\r
24 private static NaGetLibPref pref;
\r
27 /// 設定(のクローンオブジェクト)を返す。
\r
29 public static NaGetLibPref Pref {
\r
31 NaGetLibPref prefCopied = new NaGetLibPref();
\r
36 NaGet.Utils.FieldCopy(pref, ref prefCopied);
\r
43 /// 設定ファイルのある場所を取得する
\r
45 public static string PrefPath {
\r
47 return Path.Combine(Environment.CurrentDirectory, "pref.xml");
\r
52 /// 設定ファイルを読み込む。または再読み込みする。
\r
54 public static void LoadPref()
\r
56 string path = PrefPath;
\r
58 if (! File.Exists(path)) throw new FileNotFoundException(string.Empty, path);
\r
59 pref = NaGet.Utils.GetDeserializedObject<NaGetLibPref>(path);
\r
60 } catch(Exception) {
\r
61 pref = new NaGetLibPref();
\r
71 /// ファイルリスト提供レポジトリリストのファイル
\r
73 public static readonly string RepositoriesListFile = "repos.list.xml";
\r
76 /// ファイルリストから読み込まれたパッケージのリストファイル
\r
78 public static readonly string PackageListFile = "packages.list.xml";
\r
81 /// 本ソフトウェアを介してインストールされたパッケージのリストファイル
\r
83 public static readonly string ArchiveInstalledPackageListFile = "packages.envinstalled.xml";
\r
86 /// システムから検出されたパッケージのリストファイル
\r
88 public static readonly string SystemInstalledPackageListFile = "packages.sysinstalled.xml";
\r
93 public static readonly string SystemInstalledPackageLogFile = "packages.sysinstalled.log.xml";
\r
96 /// アプリケーションデータを保存するフォルダーのパス
\r
98 public static string AppDataFolderPath
\r
101 if (pref == null) LoadPref();
\r
103 if (! string.IsNullOrEmpty(pref.AppDataFolder)) {
\r
104 return pref.AppDataFolder;
\r
107 return Environment.CurrentDirectory;
\r
112 /// インストーラーの一時置き場の親ディレクトリ
\r
114 public static string ArchiveFolderPath
\r
117 if (pref == null) LoadPref();
\r
119 if (! string.IsNullOrEmpty(pref.CacheFolder)) {
\r
120 return pref.CacheFolder;
\r
123 return Path.Combine(AppDataFolderPath, "Cache");
\r
129 /// アーカイバ方式のパッケージのインストール先フォルダー
\r
131 public static string ArchiveProgramFiles {
\r
133 return Path.Combine(AppDataFolderPath, "progs");
\r
138 /// アーカイバ方式のパッケージのプログラムグループフォルダー
\r
140 public static string ArchiveProgramGroup {
\r
142 return Path.Combine(AppDataFolderPath, "programs");
\r
147 /// アーカイバ方式のパッケージのSystem32のフォルダー
\r
149 public static string ArchiveSystem32 {
\r
151 return Path.Combine(ArchiveProgramFiles, ".system32");
\r
160 /// ウェブアクセスのためのプロキシを取得する。
\r
162 /// <returns>プロキシ</returns>
\r
163 public static IWebProxy WebProxy
\r
166 if (pref == null) LoadPref();
\r
168 if (string.IsNullOrEmpty(pref.ProxyAddress)) {
\r
169 // 設定されていないときはシステムのデフォルトを使う
\r
170 return WebRequest.GetSystemWebProxy();
\r
171 } else if (pref.ProxyAddress == "-") {
\r
175 // host:portが設定されているならば、それをもとに設定
\r
176 return new WebProxy(pref.ProxyAddress);
\r
186 /// インストーラーをウイルススキャンするか?
\r
188 public static bool EnableScanInstallerFile {
\r
190 if (pref == null) LoadPref();
\r
191 return pref.EnableScanInstallerFile;
\r
194 if (pref == null) LoadPref();
\r
195 pref.EnableScanInstallerFile = value;
\r
200 /// インストールプロセスをバックグラウンドで行うか?
\r
202 public static bool InstallProcessOnBackground {
\r
204 if (pref == null) LoadPref();
\r
205 return pref.InstallOnBackground;
\r
208 if (pref == null) LoadPref();
\r
209 pref.EnableScanInstallerFile = value;
\r