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)); }