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
40 public class Package
\r
50 public string Version;
\r
55 public string Summary;
\r
60 public string Description;
\r
65 public LocationEntry Url;
\r
70 public string Author;
\r
75 public InstallerType Type;
\r
78 /// インストーラーが書庫内に入っているかのフラグ
\r
80 public bool ArchivedInstaller = false;
\r
83 /// アンインストーラーのレジストリのキー
\r
85 public string UninstallerKey;
\r
88 /// サイレントインストールのための引数。
\r
89 /// インストーラー形式のみ有効で、nullもしくは空文字列の場合は
\r
90 /// サイレントインストールができないことをあらわす
\r
92 public string SilentInstallArguments;
\r
95 /// インストールスクリプト(MSBuildドキュメント)
\r
97 public string InstallScript;
\r
100 /// アーカイブインストーラーのときのSystem32のコピー
\r
102 public string System32CopyFiles;
\r
105 /// インストーラーのリソースの配列
\r
108 public Installer[] Installer;
\r
113 [XmlArray(IsNullable=true),XmlArrayItem("Entry")]
\r
114 public Entry[] Requires;
\r
119 [XmlArray(IsNullable=true),XmlArrayItem("Entry")]
\r
120 public Entry[] Conflicts;
\r
125 public string Tags;
\r
130 public string License;
\r
135 public string PackageListName;
\r
141 public struct Entry
\r
147 public string Name;
\r
149 /// パッケージのバージョン比較の式
\r
152 public string Flags;
\r
157 public string Version;
\r
159 public Entry(string name, string flags, string version)
\r
165 public bool Match(Package pkg)
\r
167 System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(
\r
168 (System.Text.RegularExpressions.Regex.IsMatch(Name, "^/.*/$"))?
\r
169 Name.Substring(1, Name.Length-2) :
\r
170 string.Format("^{0}$", System.Text.RegularExpressions.Regex.Escape(Name))
\r
171 , System.Text.RegularExpressions.RegexOptions.Singleline);
\r
173 if (regex.IsMatch(pkg.Name)) {
\r
174 if (string.IsNullOrEmpty(Version)) {
\r
177 // TODO Flagの内容は現在のところ無視
\r
178 return pkg.Version == Version;
\r
186 public class Installer
\r
195 public Platform Platform;
\r
198 /// ダウンロードリソースURLの配列
\r
200 public LocationEntry Url;
\r
206 public HashValue[] Hash;
\r
212 public sealed class LocationEntry
\r
217 public LocationEntry()
\r
224 /// <param name="sHref">リソースのURL</param>
\r
225 public LocationEntry(string sHref)
\r
234 public string Href;
\r