예제 #1
0
        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"));
                }
            });
        }