public async Task ChangeOfficeChannelWmi(RemoteMachine client, OfficeInstallation localInstall) { var newChannel = client.Channel.ToString(); string version = null; if (client.Version != null) { version = client.Version.ToString(); } await Task.Run(async() => { var installOffice = new InstallOfficeWmi { remoteUser = client.UserName, remoteComputerName = client.Machine, remoteDomain = client.WorkGroup, remotePass = client.Password, newChannel = client.Channel.ToString(), newVersion = version, connectionNamespace = "\\root\\cimv2" }; try { var ppDownloader = new ProPlusDownloader(); var baseUrl = await ppDownloader.GetChannelBaseUrlAsync(newChannel, OfficeEdition.Office32Bit); if (string.IsNullOrEmpty(baseUrl)) { throw (new Exception(string.Format("Cannot find BaseUrl for Channel: {0}", newChannel))); } var channelToChangeTo = newChannel; if (string.IsNullOrEmpty(channelToChangeTo)) { throw (new Exception("Version required")); } await installOffice.ChangeOfficeChannel(channelToChangeTo, baseUrl); var installGenerator = new OfficeInstallManager(); } catch (Exception ex) { LogWmiErrorMessage(ex, new RemoteComputer() { Name = client.Machine, Domain = client.WorkGroup, UserName = client.UserName, Password = client.Password }); throw (new Exception("Update Failed")); } }); }