public void Burn_FeatureInstallUninstall() { // Build the packages. string packageA = new PackageBuilder(this, "A").Build().Output; // Create the named bind paths to the packages. Dictionary <string, string> bindPaths = new Dictionary <string, string>(); bindPaths.Add("packageA", packageA); string bundleA = new BundleBuilder(this, "BundleA") { BindPaths = bindPaths, Extensions = Extensions }.Build().Output; BundleInstaller install = new BundleInstaller(this, bundleA).Install(); // Source file should *not* be installed, main registry key should be present. string packageSourceCodeInstalled = this.GetTestInstallFolder(@"A\A.wxs"); Assert.False(File.Exists(packageSourceCodeInstalled), String.Concat("Should not have found Package A payload installed at: ", packageSourceCodeInstalled)); using (RegistryKey root = this.GetTestRegistryRoot()) { string actualVersion = root.GetValue("A") as string; Assert.Equal("1.0.0.0", actualVersion); } // Now turn on the feature. this.SetPackageRequestedState("PackageA", RequestState.Present); this.SetPackageFeatureState("PackageA", "Test", FeatureState.Local); install.Modify(); Assert.True(File.Exists(packageSourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageSourceCodeInstalled)); this.ResetPackageStates("PackageA"); // Turn the feature back off. this.SetPackageRequestedState("PackageA", RequestState.Present); this.SetPackageFeatureState("PackageA", "Test", FeatureState.Absent); install.Modify(); Assert.False(File.Exists(packageSourceCodeInstalled), String.Concat("Should have removed Package A payload from: ", packageSourceCodeInstalled)); this.ResetPackageStates("PackageA"); // Uninstall everything. install.Uninstall(); Assert.False(File.Exists(packageSourceCodeInstalled), String.Concat("Package A payload should have been removed by uninstall from: ", packageSourceCodeInstalled)); Assert.True(null == this.GetTestRegistryRoot(), "Test registry key should have been removed during uninstall."); this.Complete(); }
public void Burn_SlipstreamRemovePatchAlone() { const string patchedVersion = V101; string bundleA = this.GetBundleA().Output; BundleInstaller install = new BundleInstaller(this, bundleA).Install(); string packageSourceCodeInstalled = this.GetTestInstallFolder(@"A\A.wxs"); Assert.True(File.Exists(packageSourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageSourceCodeInstalled)); using (RegistryKey root = this.GetTestRegistryRoot()) { string actualVersion = root.GetValue("A") as string; Assert.Equal(patchedVersion, actualVersion); } // Remove only the slipstream patch and ensure the version is back to default. this.SetPackageRequestedState("patchA", RequestState.Absent); install.Modify(); Assert.True(File.Exists(packageSourceCodeInstalled), String.Concat("Should have found Package A payload *still* installed at: ", packageSourceCodeInstalled)); using (RegistryKey root = this.GetTestRegistryRoot()) { string actualVersion = root.GetValue("A") as string; Assert.True("1.0.0.0".Equals(actualVersion), "Patch A should have been removed and so the registry key would go back to default version."); } install.Uninstall(); // uninstall just to make sure no error occur removing the package without the patch. this.Complete(); }
public void Burn_UpdateInstalledBundle() { // Build the packages. string packageA1 = this.GetPackageA().Output; string packageA2 = this.GetPackageAv2().Output; // Build the bundles. string bundleA1 = this.GetBundleA().Output; string bundleA2 = this.GetBundleAv2().Output; // Install the v1 bundle. BundleInstaller installerA1 = new BundleInstaller(this, bundleA1).Install(); // Test that v1 was correctly installed. Assert.True(MsiVerifier.IsPackageInstalled(packageA1)); Assert.False(MsiVerifier.IsPackageInstalled(packageA2)); // Run the v1 bundle providing an update bundle. installerA1.Modify(arguments: String.Concat("\"", "-updatebundle:", bundleA2, "\"")); // Test that only v2 packages is installed. Assert.False(MsiVerifier.IsPackageInstalled(packageA1)); Assert.True(MsiVerifier.IsPackageInstalled(packageA2)); // Attempt to uninstall v2. BundleInstaller installerA2 = new BundleInstaller(this, bundleA2).Uninstall(); // Test all packages are uninstalled. Assert.False(MsiVerifier.IsPackageInstalled(packageA1)); Assert.False(MsiVerifier.IsPackageInstalled(packageA2)); Assert.Null(this.GetTestRegistryRoot()); this.Complete(); }
public void Burn_UpdateInstalledPerUserBundleNoUpdateServer() { // Build the packages. string packageB1 = this.GetPackageB().Output; // Build the bundles. string bundleB1 = this.GetBundleB().Output; // Install the v1 bundle. BundleInstaller installerB1 = new BundleInstaller(this, bundleB1).Install(); // Test that v1 was correctly installed. Assert.True(MsiVerifier.IsPackageInstalled(packageB1)); // Run the v1 bundle requesting an update bundle. installerB1.Modify(arguments: new string[] { "-checkupdate" }); Assert.True(MsiVerifier.IsPackageInstalled(packageB1)); // Attempt to uninstall v1. installerB1.Uninstall(); // Test all packages are uninstalled. Assert.False(MsiVerifier.IsPackageInstalled(packageB1)); Assert.Null(this.GetTestRegistryRoot()); this.Complete(); }
public void Burn_UpdateInstalledPerUserBundleUpdateServerNoFeed() { // Build the packages. string packageB1 = this.GetPackageB().Output; // Build the bundles. string bundleB1 = this.GetBundleB().Output; // Install the v1 bundle. BundleInstaller installerB1 = new BundleInstaller(this, bundleB1).Install(); // Test that v1 was correctly installed. Assert.True(MsiVerifier.IsPackageInstalled(packageB1)); HostConfiguration hostConfigs = new HostConfiguration() { UrlReservations = new UrlReservations() { CreateAutomatically = true }, AllowChunkedEncoding = false // https://github.com/NancyFx/Nancy/issues/1337 }; string rootDirectory = FileUtilities.GetUniqueFileName(); Directory.CreateDirectory(rootDirectory); this.TestArtifacts.Add(new DirectoryInfo(rootDirectory)); RootPathProvider.RootPath = rootDirectory; FeedModule.FeedBehavior = FeedModule.UpdateFeedBehavior.None; // Verify bundle asking for update and getting a 404 doesn't update and doesn't modify state using (NancyHost nancyHost = new NancyHost(this.UpdateUri, new ApplicationBootstrapper(), hostConfigs) { }) { nancyHost.Start(); // Run the v1 bundle providing an update bundle. installerB1.Modify(arguments: new string[] { "-checkupdate" }); // The modify -> update is asynchronous, so we need to wait until the real BundleB is done System.Diagnostics.Process[] childBundles = System.Diagnostics.Process.GetProcessesByName(Path.GetFileNameWithoutExtension(bundleB1)); foreach (var childBundle in childBundles) { childBundle.WaitForExit(); } } // Test that only v1 packages is installed. Assert.True(MsiVerifier.IsPackageInstalled(packageB1)); installerB1.Uninstall(); // Test all packages are uninstalled. Assert.False(MsiVerifier.IsPackageInstalled(packageB1)); Assert.Null(this.GetTestRegistryRoot()); this.Complete(); }
public void Burn_FeatureInstallUninstall() { // Build the packages. string packageA = new PackageBuilder(this, "A").Build().Output; // Create the named bind paths to the packages. Dictionary<string, string> bindPaths = new Dictionary<string, string>(); bindPaths.Add("packageA", packageA); string bundleA = new BundleBuilder(this, "BundleA") { BindPaths = bindPaths, Extensions = Extensions }.Build().Output; BundleInstaller install = new BundleInstaller(this, bundleA).Install(); // Source file should *not* be installed, main registry key should be present. string packageSourceCodeInstalled = this.GetTestInstallFolder(@"A\A.wxs"); Assert.False(File.Exists(packageSourceCodeInstalled), String.Concat("Should not have found Package A payload installed at: ", packageSourceCodeInstalled)); using (RegistryKey root = this.GetTestRegistryRoot()) { string actualVersion = root.GetValue("A") as string; Assert.Equal("1.0.0.0", actualVersion); } // Now turn on the feature. this.SetPackageRequestedState("PackageA", RequestState.Present); this.SetPackageFeatureState("PackageA", "Test", FeatureState.Local); install.Modify(); Assert.True(File.Exists(packageSourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageSourceCodeInstalled)); this.ResetPackageStates("PackageA"); // Turn the feature back off. this.SetPackageRequestedState("PackageA", RequestState.Present); this.SetPackageFeatureState("PackageA", "Test", FeatureState.Absent); install.Modify(); Assert.False(File.Exists(packageSourceCodeInstalled), String.Concat("Should have removed Package A payload from: ", packageSourceCodeInstalled)); this.ResetPackageStates("PackageA"); // Uninstall everything. install.Uninstall(); Assert.False(File.Exists(packageSourceCodeInstalled), String.Concat("Package A payload should have been removed by uninstall from: ", packageSourceCodeInstalled)); Assert.True(null == this.GetTestRegistryRoot(), "Test registry key should have been removed during uninstall."); this.Complete(); }
public void Burn_SlipstreamRemovePackageAndPatch() { const string patchedVersion = V101; // Create bundle and install everything. string bundleB = this.GetBundleB().Output; BundleInstaller install = new BundleInstaller(this, bundleB).Install(); string packageSourceCodeInstalled = this.GetTestInstallFolder(@"A\A.wxs"); Assert.True(File.Exists(packageSourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageSourceCodeInstalled)); using (RegistryKey root = this.GetTestRegistryRoot()) { string actualVersion = root.GetValue("A") as string; Assert.Equal(patchedVersion, actualVersion); } packageSourceCodeInstalled = this.GetTestInstallFolder(@"B\B.wxs"); Assert.True(File.Exists(packageSourceCodeInstalled), String.Concat("Should have found Package B payload installed at: ", packageSourceCodeInstalled)); // Remove package A and its patch should go with it. this.SetPackageRequestedState("packageA", RequestState.Absent); this.SetPackageRequestedState("patchA", RequestState.Absent); install.Modify(); this.ResetPackageStates("packageA"); this.ResetPackageStates("patchA"); packageSourceCodeInstalled = this.GetTestInstallFolder(@"A\A.wxs"); Assert.False(File.Exists(packageSourceCodeInstalled), String.Concat("After modify, should *not* have found Package A payload installed at: ", packageSourceCodeInstalled)); // Remove. install.Uninstall(); packageSourceCodeInstalled = this.GetTestInstallFolder(@"B\B.wxs"); Assert.False(File.Exists(packageSourceCodeInstalled), String.Concat("After uninstall bundle, should *not* have found Package B payload installed at: ", packageSourceCodeInstalled)); Assert.True(null == this.GetTestRegistryRoot(), "Test registry key should have been removed during uninstall."); this.Complete(); }