1 using System.Xml.Serialization;
\r
3 namespace NaGet.Packages
\r
8 public enum InstallerType
\r
13 [XmlEnum(Name="installer")]
\r
16 /// Microsoft Software Installer
\r
18 [XmlEnum(Name="msi")]
\r
23 [XmlEnum(Name="archive")]
\r
26 /// それ自身がプログラムそのものである
\r
28 [XmlEnum(Name="itself")]
\r
31 /// インストールできない単なるデータ(BIOSなど)
\r
33 [XmlEnum(Name="cannotinstall")]
\r
38 /// バージョン取得手段の種類を返す。
\r
40 public enum VersionInfoKey
\r
45 [XmlEnum(Name="registry")]
\r
52 public class Package
\r
62 public string Version;
\r
67 public string Summary;
\r
72 public string Description;
\r
77 public LocationEntry Url;
\r
82 public string Author;
\r
87 public InstallerType Type;
\r
90 /// インストーラーが書庫内に入っているかのフラグ
\r
92 public bool ArchivedInstaller = false;
\r
95 /// アンインストーラーのレジストリのキー
\r
97 public string UninstallerKey;
\r
102 public VersionInfoKey? VersionInfoKey;
\r
105 /// サイレントインストールのための引数。
\r
106 /// インストーラー形式のみ有効で、nullもしくは空文字列の場合は
\r
107 /// サイレントインストールができないことをあらわす
\r
109 public string SilentInstallArguments;
\r
112 /// インストールスクリプト(MSBuildドキュメント)
\r
114 public string InstallScript;
\r
117 /// アーカイブインストーラーのときのSystem32のコピー
\r
119 public string System32CopyFiles;
\r
122 /// インストーラーのリソースの配列
\r
125 public Installer[] Installer;
\r
130 [XmlArray(IsNullable=true),XmlArrayItem("Entry")]
\r
131 public Entry[] Requires;
\r
136 [XmlArray(IsNullable=true),XmlArrayItem("Entry")]
\r
137 public Entry[] Conflicts;
\r
142 public string Tags;
\r
147 public string License;
\r
152 public string PackageListName;
\r
158 public struct Entry
\r
164 public string Name;
\r
166 /// パッケージのバージョン比較の式
\r
169 public string Flags;
\r
174 public string Version;
\r
176 public Entry(string name, string flags, string version)
\r
182 public bool Match(Package pkg)
\r
184 System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(
\r
185 (System.Text.RegularExpressions.Regex.IsMatch(Name, "^/.*/$"))?
\r
186 Name.Substring(1, Name.Length-2) :
\r
187 string.Format("^{0}$", System.Text.RegularExpressions.Regex.Escape(Name))
\r
188 , System.Text.RegularExpressions.RegexOptions.Singleline);
\r
190 if (regex.IsMatch(pkg.Name)) {
\r
191 if (string.IsNullOrEmpty(Version)) {
\r
194 // TODO Flagの内容は現在のところ無視
\r
195 return pkg.Version == Version;
\r
203 public class Installer
\r
212 public Platform Platform;
\r
215 /// ダウンロードリソースURLの配列
\r
217 public LocationEntry Url;
\r
223 public HashValue[] Hash;
\r
229 public sealed class LocationEntry
\r
234 public LocationEntry()
\r
241 /// <param name="sHref">リソースのURL</param>
\r
242 public LocationEntry(string sHref)
\r
251 public string Href;
\r