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 IWebProxy proxy = WebRequest.GetSystemWebProxy();
\r
171 proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
\r
173 } else if (pref.ProxyAddress == "-") {
\r
177 // host:portが設定されているならば、それをもとに設定
\r
178 WebProxy proxy = new WebProxy(pref.ProxyAddress);
\r
179 proxy.Credentials = CredentialCache.DefaultCredentials;
\r
181 // 認証プロキシの場合、認証情報を付加する
\r
183 Uri uri = new Uri(pref.ProxyAddress);
\r
184 if (! string.IsNullOrEmpty(uri.UserInfo)) {
\r
185 int pos = uri.UserInfo.IndexOf(':');
\r
187 proxy.Credentials = new NetworkCredential(
\r
188 uri.UserInfo.Substring(0, pos),
\r
189 uri.UserInfo.Substring(pos+1)
\r
192 proxy.Credentials = CredentialCache.DefaultCredentials;
\r
195 } catch (Exception) {
\r
206 public static string UserAgentString {
\r
208 System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
\r
209 string name = asm.GetName().Name;
\r
210 Version version = asm.GetName().Version;
\r
212 return string.Format("{0}/{1}.{2}.{3}", name, version.Major, version.Minor, version.Build);
\r
221 /// インストーラーをウイルススキャンするか?
\r
223 public static bool EnableScanInstallerFile {
\r
225 if (pref == null) LoadPref();
\r
226 return pref.EnableScanInstallerFile;
\r
229 if (pref == null) LoadPref();
\r
230 pref.EnableScanInstallerFile = value;
\r
235 /// インストールプロセスをバックグラウンドで行うか?
\r
237 public static bool InstallProcessOnBackground {
\r
239 if (pref == null) LoadPref();
\r
240 return pref.InstallOnBackground;
\r
243 if (pref == null) LoadPref();
\r
244 pref.EnableScanInstallerFile = value;
\r
249 /// アップデートから除外するパッケージの名前
\r
251 public static string[] ExcludeUpdatePackageNames {
\r
253 if (pref == null) LoadPref();
\r
254 return pref.ExcludeUpdatePackageNames;
\r
257 if (pref == null) LoadPref();
\r
258 pref.ExcludeUpdatePackageNames = value;
\r