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
74 public static readonly string ProviderListFile = "provider.list.txt";
\r
77 /// ファイルリスト提供レポジトリリストのファイル
\r
79 public static readonly string RepositoriesListFile = "repos.list.xml";
\r
82 /// ファイルリストから読み込まれたパッケージのリストファイル
\r
84 public static readonly string PackageListFile = "packages.list.xml";
\r
87 /// 本ソフトウェアを介してインストールされたパッケージのリストファイル
\r
89 public static readonly string ArchiveInstalledPackageListFile = "packages.envinstalled.xml";
\r
92 /// システムから検出されたパッケージのリストファイル
\r
94 public static readonly string SystemInstalledPackageListFile = "packages.sysinstalled.xml";
\r
99 public static readonly string SystemInstalledPackageLogFile = "packages.sysinstalled.log.xml";
\r
102 /// アプリケーションデータを保存するフォルダーのパス
\r
104 public static string AppDataFolderPath
\r
107 if (pref == null) LoadPref();
\r
109 if (! string.IsNullOrEmpty(pref.AppDataFolder)) {
\r
110 return pref.AppDataFolder;
\r
113 return Environment.CurrentDirectory;
\r
118 /// インストーラーの一時置き場の親ディレクトリ
\r
120 public static string ArchiveFolderPath
\r
123 if (pref == null) LoadPref();
\r
125 if (! string.IsNullOrEmpty(pref.CacheFolder)) {
\r
126 return pref.CacheFolder;
\r
129 return Path.Combine(AppDataFolderPath, "Cache");
\r
135 /// アーカイバ方式のパッケージのインストール先フォルダー
\r
137 public static string ArchiveProgramFiles {
\r
139 return Path.Combine(AppDataFolderPath, "progs");
\r
144 /// アーカイバ方式のパッケージのプログラムグループフォルダー
\r
146 public static string ArchiveProgramGroup {
\r
148 return Path.Combine(AppDataFolderPath, "programs");
\r
153 /// アーカイバ方式のパッケージのSystem32のフォルダー
\r
155 public static string ArchiveSystem32 {
\r
157 return Path.Combine(ArchiveProgramFiles, ".system32");
\r
166 /// ウェブアクセスのためのプロキシを取得する。
\r
168 /// <returns>プロキシ</returns>
\r
169 public static IWebProxy WebProxy
\r
172 if (pref == null) LoadPref();
\r
174 if (string.IsNullOrEmpty(pref.ProxyAddress)) {
\r
175 // 設定されていないときはシステムのデフォルトを使う
\r
176 return WebRequest.GetSystemWebProxy();
\r
177 } else if (pref.ProxyAddress == "-") {
\r
181 // host:portが設定されているならば、それをもとに設定
\r
182 return new WebProxy(pref.ProxyAddress);
\r
192 /// インストーラーをウイルススキャンするか?
\r
194 public static bool EnableScanInstallerFile {
\r
196 if (pref == null) LoadPref();
\r
197 return pref.EnableScanInstallerFile;
\r
200 if (pref == null) LoadPref();
\r
201 pref.EnableScanInstallerFile = value;
\r
206 /// インストールプロセスをバックグラウンドで行うか?
\r
208 public static bool InstallProcessOnBackground {
\r
210 if (pref == null) LoadPref();
\r
211 return pref.InstallOnBackground;
\r
214 if (pref == null) LoadPref();
\r
215 pref.EnableScanInstallerFile = value;
\r