コード例 #1
0
        private ProcessArgumentBuilder GetNewOrUpdateArguments(BaseNewAndUpdateMageSettings settings)
        {
            if (string.IsNullOrWhiteSpace(settings.Password) == false && settings.CertFile == null)
            {
                throw new ArgumentException("Password requires CertFile to be set", nameof(settings.CertFile));
            }

            var builder = new ProcessArgumentBuilder();
            var newOrUpdateApplicationSettings = settings as BaseNewAndUpdateApplicationSettings;

            if (newOrUpdateApplicationSettings != null)
            {
                if (newOrUpdateApplicationSettings is NewApplicationSettings)
                {
                    builder = builder.Append("-new Application");
                }
                else
                {
                    var updatePath = ((UpdateApplicationSettings)newOrUpdateApplicationSettings).FileToUpdate.MakeAbsolute(Environment).FullPath;
                    builder = builder.AppendSwitchQuoted("-update", updatePath);
                }

                builder = builder.AppendNonNullDirectoryPathSwitch("-fd", newOrUpdateApplicationSettings.FromDirectory, Environment)
                          .AppendNonNullFilePathSwitch("-if", newOrUpdateApplicationSettings.IconFile, Environment)
                          .AppendIfNotDefaultSwitch("-tr", newOrUpdateApplicationSettings.TrustLevel, TrustLevel.Default)
                          .AppendIfNotDefaultSwitch("-um", newOrUpdateApplicationSettings.UseManifestForTrust, false);
            }
            else
            {
                var newOrUpdateDeploymentSettings = (BaseNewAndUpdateDeploymentSettings)settings;

                if (newOrUpdateDeploymentSettings.AppCodeBaseUri != null &&
                    newOrUpdateDeploymentSettings.AppCodeBaseFilePath != null)
                {
                    throw new ArgumentException("Both AppCodeBaseUri and AppCodeBaseFilePath cannot be specified.");
                }

                if (newOrUpdateDeploymentSettings is NewDeploymentSettings)
                {
                    builder = builder.Append("-new Deployment");
                }
                else
                {
                    var updatePath = ((UpdateDeploymentSettings)newOrUpdateDeploymentSettings).FileToUpdate.MakeAbsolute(Environment).FullPath;
                    builder = builder.AppendSwitchQuoted("-update", updatePath);
                }

                builder = builder
                          .AppendNonNullUriSwitch("-appc", newOrUpdateDeploymentSettings.AppCodeBaseUri)
                          .AppendNonNullFilePathSwitch("-appc", newOrUpdateDeploymentSettings.AppCodeBaseFilePath, Environment)
                          .AppendNonNullFilePathSwitch("-appm", newOrUpdateDeploymentSettings.AppManifest, Environment)
                          .AppendIfNotDefaultSwitch("-i", newOrUpdateDeploymentSettings.Install, true)
                          .AppendNonEmptySwitch("-mv", newOrUpdateDeploymentSettings.MinVersion)
                          .AppendIfNotDefaultSwitch("-ip", newOrUpdateDeploymentSettings.IncludeProviderUrl, true)
                          .AppendNonNullUriSwitch("-pu", newOrUpdateDeploymentSettings.ProviderUrl);
            }

            return(builder
                   .AppendIfNotDefaultSwitch("-a", settings.Algorithm, Algorithm.SHA1RSA)
                   .AppendNonNullFilePathSwitch("-cf", settings.CertFile, Environment)
                   .AppendNonEmptySwitch("-certHash", settings.CertHash)
                   .AppendNonEmptyQuotedSwitch("-n", settings.Name)
                   .AppendNonEmptySecretSwitch("-pwd", settings.Password)
                   .AppendIfNotDefaultSwitch("-p", settings.Processor, Processor.Msil)
                   .AppendNonEmptyQuotedSwitch("-pub", settings.Publisher)
                   .AppendNonNullUriSwitch("-s", settings.SupportUrl)
                   .AppendNonNullUriSwitch("-ti", settings.TimeStampUri)
                   .AppendNonNullFilePathSwitch("-t", settings.ToFile, Environment)
                   .AppendNonEmptySwitch("-v", settings.Version)
                   .AppendIfNotDefaultSwitch("-w", settings.WpfBrowserApp, false));
        }