コード例 #1
0
 internal static RegistryView ToRegistryView(this ClrBitness bitness)
 {
     return(bitness switch {
         ClrBitness.Bitness32 => RegistryView.Registry32,
         ClrBitness.Bitness64 => RegistryView.Registry64,
         _ => throw new ArgumentOutOfRangeException(nameof(bitness), bitness, null)
     });
 private static string GetInstallationRootPath(ClrBitness bitness)
 {
     using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, bitness.ToRegistryView()))
     {
         using (var installRootKey = baseKey.OpenSubKey(NET_FRAMEWORK_REGISTRY_KEY_NAME) ?? throw new InvalidOperationException($"The key '{NET_FRAMEWORK_REGISTRY_KEY_NAME}' does not exist."))
         {
             return(installRootKey.GetValue("InstallRoot") as string);
         }
     }
 }
コード例 #3
0
        private static string GetBizTalkConfigurationFile(ClrBitness bitness)
        {
            var fileName = bitness switch {
                ClrBitness.Bitness32 => "BTSNTSvc.exe.config",
                ClrBitness.Bitness64 => "BTSNTSvc64.exe.config",
                _ => throw new ArgumentOutOfRangeException(nameof(bitness), bitness, "Unexpected CLR bitness value.")
            };

            return(Path.Combine(BizTalkInstallation.InstallationPath, fileName));
        }
        public static string GetPath(Version version, ClrBitness bitness)
        {
            var installationRootPath = GetInstallationRootPath(bitness);

            if (!Directory.Exists(installationRootPath))
            {
                throw new DirectoryNotFoundException($"The installation root path '{installationRootPath}' is not found.");
            }
            return(Directory.GetDirectories(installationRootPath, $"v{version.Major}.{version.Minor}*", SearchOption.TopDirectoryOnly)
                   .OrderBy(d => d, StringComparer.OrdinalIgnoreCase)
                   .Single());
        }