private void RunUpgrade() { var strategy = UserUpgradeStrategy.Create(); if (strategy == null) { return; } if (strategy.TotalSteps < 5 || null == (_dialogView = CreateDialog())) { strategy.Run(); return; } var task = new BackgroundTask( delegate(IBackgroundTaskContext context) { strategy.ProgressChanged += (sender, e) => context.ReportProgress(new BackgroundTaskProgress(strategy.CurrentStep - 1, strategy.TotalSteps, String.Empty)); strategy.Run(); context.Complete(); }, false, strategy); task.ProgressUpdated += (sender, e) => _dialogView.SetProgressPercent(e.Progress.Percent); task.Terminated += (sender, e) => _dialogView.Close(strategy.FailedCount > 0 ? SR.MessageUserUpgradeFailures : null); task.Run(); _dialogView.RunModal(SR.TitleUpdatingPreferences, SR.MessageUpdatingPreferences); task.Dispose(); }
public void TestUnsupportedEvidence() { const string previousInstallDir = @"C:\Program Files\ACME Laboratories\ExperimentalRats"; const string appDataPath = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_abcdefghijklmnopqrstuvwxyz012345\3.0.0.0\user.config"; var evidence = new Evidence(); var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(previousInstallDir, evidence, appDataPath); Assert.IsNullOrEmpty(altFolder, "app domain without url in evidence is unusual, and we don't have any data points to back up any implementation, so we don't implement it!"); }
public void TestAltFolderOnSlashesNoPreviousInstallDirectory() { const string appDataPath = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_2vbxhp2udm4o5dcwujyvygdqgjfgjfvn\3.0.0.0\user.config"; const string assemblyName = "Acme.Laboratories.Experimental.Rat.TheBrain"; const string assemblyVersion = "2.1.0.1"; const string assemblyUrl = @"file:///C:\Program Files\ACME Laboratories\ExperimentalRats\TheBrain.exe"; var evidence = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false); var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(null, evidence, appDataPath); Assert.AreEqual("Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0", altFolder, "getting the old path (with forward slashes) if the current path is based on backslashes"); }
public void TestSameAsCurrentFolderNoPreviousInstallDirectory() { const string appDataPath = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0\3.0.0.0\user.config"; const string assemblyName = "Acme.Laboratories.Experimental.Rat.TheBrain"; const string assemblyVersion = "2.1.0.1"; const string assemblyUrl = @"file:///C:/Program Files/ACME Laboratories/ExperimentalRats/TheBrain.exe"; var evidence = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false); var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(null, evidence, appDataPath); Assert.IsNullOrEmpty(altFolder, "should return null when alt path is exactly the same as current path"); }
public void TestPathCaseInsensitive2() { const string appDataPath = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_abcdefghijklmnopqrstuvwxyz012345\3.0.0.0\user.config"; const string assemblyName = "Acme.Laboratories.Experimental.Rat.TheBrain"; const string assemblyVersion = "2.1.0.1"; const string assemblyUrl = @"FILE:///c:/program Files/ACME Laboratories/ExperimentalRats/thebrain.EXE"; var evidence = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false); var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(null, evidence, appDataPath); Assert.AreEqual("Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0", altFolder, "assembly url should be case insensitive"); }
public void TestStrongNameEvidence() { const string previousInstallDir = @"C:\Program Files\ACME Laboratories\ExperimentalRats"; const string appDataPath = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_abcdefghijklmnopqrstuvwxyz012345\3.0.0.0\user.config"; const string assemblyName = "Acme.Laboratories.Experimental.Rat.TheBrain"; const string assemblyVersion = "2.1.0.1"; const string assemblyUrl = @"file:///C:/Program Files/ACME Laboratories/ExperimentalRats/TheBrain.exe"; var evidence = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, true); var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(previousInstallDir, evidence, appDataPath); Assert.IsNullOrEmpty(altFolder, "strong named entry assembly should not have an alt folder"); }
public void TestInstallFolderChanged3() { const string previousInstallDir = @"C:\Program Files\ACME Labs\Rats\"; // note the different slashes, trailing slash and capitalization const string appDataPath = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0\3.0.0.0\user.config"; const string assemblyName = "Acme.Laboratories.Experimental.Rat.TheBrain"; const string assemblyVersion = "2.1.0.1"; const string assemblyUrl = @"file:///C:/program Files/ACME Laboratories/ExperimentalRats/TheBrain.exe"; var evidence = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false); var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(previousInstallDir, evidence, appDataPath); Assert.AreEqual("Acme.Laboratories.Exper_Url_gyj1vfoawarsonr4ssufrpzggih1qwle", altFolder, "should find correct former install directory"); }
public void TestDistinctAltFolder() { const string previousInstallDir = @"C:\Program Files\ACME Laboratories\ExperimentalRats"; const string appDataPath = @"C:\Documents and Settings\Snowball\LocalSettings\AppData\ACME Laboratories\Acme.Laboratories.Exper_Url_abcdefghijklmnopqrstuvwxyz012345\3.0.0.0\user.config"; const string assemblyName = "Acme.Laboratories.Experimental.Rat.TheBrain"; const string assemblyVersion = "2.1.0.1"; const string assemblyUrl = @"file:///C:/Program Files/ACME Laboratories/ExperimentalRats/TheBrain.exe"; var evidence = CreateAppDomainEvidence(assemblyName, assemblyVersion, assemblyUrl, false); var altFolder = UserUpgradeStrategy.GetAlternateAppSettingsFolder(previousInstallDir, evidence, appDataPath); Assert.AreEqual("Acme.Laboratories.Exper_Url_kgyle1vbltt4mwwk4hgjgr1z52ofp1u0", altFolder, "getting the old path when the current path is based on some unknown (in this case, dummy) hashing"); }
public void TestRandomEvidenceHashes() { var rng = new PseudoRandom(0x262E5635); var data = new byte[512]; using (var sha1 = new SHA1CryptoServiceProvider()) using (var ms = new MemoryStream()) { var bf = new BinaryFormatter(); for (var n = 0; n < 10000; ++n) { rng.NextBytes(data); var evidenceInfo = Convert.ToBase64String(data); ms.SetLength(0); bf.Serialize(ms, evidenceInfo); var expectedHash = ToBase32(sha1.ComputeHash(ms.ToArray())); var actualHash = UserUpgradeStrategy.ComputeEvidenceHash(evidenceInfo); Assert.AreEqual(expectedHash, actualHash, "n = {0}", n); } } }
public void TestKnownEvidenceHashes() { Assert.AreEqual("bxushgmob2kgr2bbhnkomw10ycdtxyd1", UserUpgradeStrategy.ComputeEvidenceHash(@"file:///c:/program files/clearcanvas/clearcanvas workstation/clearcanvas.desktop.executable.exe".ToUpperInvariant())); Assert.AreEqual("h4r1xj22u5jcc205qirm1uq5sdyih1a5", UserUpgradeStrategy.ComputeEvidenceHash(@"file:///c:\Program Files\ClearCanvas\ClearCanvas Workstation\ClearCanvas.Desktop.Executable.exe".ToUpperInvariant())); }