diff options
3 files changed, 57 insertions, 6 deletions
diff --git a/src/setup/WixAdditionalTools/WixAdditionalTools.wxs b/src/setup/WixAdditionalTools/WixAdditionalTools.wxs index a53db9d3..c54f6100 100644 --- a/src/setup/WixAdditionalTools/WixAdditionalTools.wxs +++ b/src/setup/WixAdditionalTools/WixAdditionalTools.wxs | |||
@@ -13,8 +13,7 @@ | |||
13 | </BootstrapperApplication> | 13 | </BootstrapperApplication> |
14 | 14 | ||
15 | <SetVariable Variable="InstallFolder" Value="[ProgramFilesFolder]WiX Toolset v$(SetupMajorMinorVersion)\" /> | 15 | <SetVariable Variable="InstallFolder" Value="[ProgramFilesFolder]WiX Toolset v$(SetupMajorMinorVersion)\" /> |
16 | <!-- TODO: bring back SoftwareTag when #6854 fixed --> | 16 | <SoftwareTag Regid="!(loc.Regid)" InstallPath="[InstallFolder]" /> |
17 | <!-- <SoftwareTag Regid="!(loc.Regid)" InstallPath="[InstallFolder]" /> --> | ||
18 | 17 | ||
19 | <Update Location="!(loc.UpdateUrl)" /> | 18 | <Update Location="!(loc.UpdateUrl)" /> |
20 | 19 | ||
diff --git a/src/wix/WixToolset.Core.Burn/Bind/ProcessBundleSoftwareTagsCommand.cs b/src/wix/WixToolset.Core.Burn/Bind/ProcessBundleSoftwareTagsCommand.cs index f9ff23cb..1962660f 100644 --- a/src/wix/WixToolset.Core.Burn/Bind/ProcessBundleSoftwareTagsCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bind/ProcessBundleSoftwareTagsCommand.cs | |||
@@ -71,11 +71,14 @@ namespace WixToolset.Core.Burn.Bind | |||
71 | 71 | ||
72 | using (var db = new Database(payload.SourceFile.Path, OpenDatabase.ReadOnly)) | 72 | using (var db = new Database(payload.SourceFile.Path, OpenDatabase.ReadOnly)) |
73 | { | 73 | { |
74 | using (var view = db.OpenExecuteView("SELECT `Regid`, `TagId` FROM `SoftwareIdentificationTag`")) | 74 | if (db.TableExists("SoftwareIdentificationTag")) |
75 | { | 75 | { |
76 | foreach (var record in view.Records) | 76 | using (var view = db.OpenExecuteView("SELECT `Regid`, `TagId` FROM `SoftwareIdentificationTag`")) |
77 | { | 77 | { |
78 | tags.Add(new SoftwareTag { Regid = record.GetString(1), Id = record.GetString(2) }); | 78 | foreach (var record in view.Records) |
79 | { | ||
80 | tags.Add(new SoftwareTag { Regid = record.GetString(1), Id = record.GetString(2) }); | ||
81 | } | ||
79 | } | 82 | } |
80 | } | 83 | } |
81 | } | 84 | } |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/SoftwareTagFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/SoftwareTagFixture.cs index 9ff97e8c..544fcbda 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/SoftwareTagFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/SoftwareTagFixture.cs | |||
@@ -13,7 +13,7 @@ namespace WixToolsetTest.CoreIntegration | |||
13 | public class SoftwareTagFixture | 13 | public class SoftwareTagFixture |
14 | { | 14 | { |
15 | private static readonly XNamespace BurnManifestNamespace = "http://wixtoolset.org/schemas/v4/2008/Burn"; | 15 | private static readonly XNamespace BurnManifestNamespace = "http://wixtoolset.org/schemas/v4/2008/Burn"; |
16 | private static readonly XNamespace SwidTagNamespace = "http://standards.iso.org/iso/19770/-2/2009/schema.xsd"; | 16 | private static readonly XNamespace SwidTagNamespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd"; |
17 | 17 | ||
18 | [Fact] | 18 | [Fact] |
19 | public void CanBuildPackageWithTag() | 19 | public void CanBuildPackageWithTag() |
@@ -87,6 +87,55 @@ namespace WixToolsetTest.CoreIntegration | |||
87 | var version = docTag.Root.Attribute("version").Value; | 87 | var version = docTag.Root.Attribute("version").Value; |
88 | Assert.Equal("~TagTestBundle", title); | 88 | Assert.Equal("~TagTestBundle", title); |
89 | Assert.Equal("4.3.2.1", version); | 89 | Assert.Equal("4.3.2.1", version); |
90 | |||
91 | var msiLink = docTag.Root.Elements(SwidTagNamespace + "Link").Single(); | ||
92 | Assert.Equal("component", msiLink.Attribute("rel").Value); | ||
93 | Assert.StartsWith("swid:msi:package/", msiLink.Attribute("href").Value); | ||
94 | } | ||
95 | } | ||
96 | } | ||
97 | |||
98 | [Fact] | ||
99 | public void CanBuildBundleWithTagWhereMsiDoesNotHaveTag() | ||
100 | { | ||
101 | var testDataFolder = TestData.Get(@"TestData"); | ||
102 | |||
103 | using (var fs = new DisposableFileSystem()) | ||
104 | { | ||
105 | var baseFolder = fs.GetFolder(); | ||
106 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
107 | |||
108 | var result = WixRunner.Execute(new[] | ||
109 | { | ||
110 | "build", | ||
111 | Path.Combine(testDataFolder, "BundleTag", "BundleWithTag.wxs"), | ||
112 | "-bindpath", Path.Combine(testDataFolder, "SimpleBundle", "data"), | ||
113 | "-intermediateFolder", intermediateFolder, | ||
114 | "-o", Path.Combine(baseFolder, @"bin\test.exe") | ||
115 | }); | ||
116 | |||
117 | result.AssertSuccess(); | ||
118 | |||
119 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.exe"))); | ||
120 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); | ||
121 | |||
122 | using (var ouput = WixOutput.Read(Path.Combine(baseFolder, @"bin\test.wixpdb"))) | ||
123 | { | ||
124 | var badata = ouput.GetDataStream("wix-burndata.xml"); | ||
125 | var doc = XDocument.Load(badata); | ||
126 | |||
127 | var swidTag = doc.Root.Element(BurnManifestNamespace + "Registration").Element(BurnManifestNamespace + "SoftwareTag").Value; | ||
128 | |||
129 | var swidTagPath = Path.Combine(baseFolder, "test.swidtag"); | ||
130 | File.WriteAllText(swidTagPath, swidTag); | ||
131 | |||
132 | var docTag = XDocument.Load(swidTagPath); | ||
133 | var title = docTag.Root.Attribute("name").Value; | ||
134 | var version = docTag.Root.Attribute("version").Value; | ||
135 | Assert.Equal("~TagTestBundle", title); | ||
136 | Assert.Equal("4.3.2.1", version); | ||
137 | |||
138 | Assert.Empty(docTag.Root.Elements(SwidTagNamespace + "Link")); | ||
90 | } | 139 | } |
91 | } | 140 | } |
92 | } | 141 | } |