public static string Execute() { Feature obsPlugin = new Feature("Obs Plugin"); var obsDir = new Dir(@"%ProgramFiles%\OBS\plugins", new File(obsPlugin, @"ObsPlugin\CLRHostPlugin.dll"), new Dir(obsPlugin, "CLRHostPlugin", new DirFiles(obsPlugin, @"ObsPlugin\CLRHostPlugin\*.*") )); Project project = new Project("OBS plugin for digiCamControl",obsDir); project.SetNetFxPrerequisite("NETFRAMEWORK45 >= '#378389'", "Please install .Net 4.5 First"); project.UI = WUI.WixUI_Minimal; project.GUID = new Guid("357E0D80-5093-478E-8C11-28B1A72096E7"); #if DEBUG project.SourceBaseDir = Path.GetFullPath(System.IO.Path.Combine(Environment.CurrentDirectory, @"..\CameraControl\bin\Debug\")); #else project.SourceBaseDir = Path.GetFullPath(System.IO.Path.Combine(Environment.CurrentDirectory, @"..\CameraControl\bin\Release\")); #endif FileVersionInfo ver = null; try { ver = FileVersionInfo.GetVersionInfo(Path.Combine(project.SourceBaseDir, @"ObsPlugin\CLRHostPlugin", "DccObsPlugin.dll")); } catch (FileNotFoundException ex) { project.SourceBaseDir = project.SourceBaseDir.Replace(@"Setup\bin\", ""); ver = FileVersionInfo.GetVersionInfo(Path.Combine(project.SourceBaseDir, @"ObsPlugin\CLRHostPlugin", "DccObsPlugin.dll")); } project.LicenceFile = @"Licenses\DigiCamControlLicence.rtf"; project.Version = new Version(ver.FileMajorPart, ver.FileMinorPart, ver.FileBuildPart, ver.FilePrivatePart); project.MajorUpgradeStrategy = MajorUpgradeStrategy.Default; //project.MajorUpgradeStrategy.NewerProductInstalledErrorMessage = "A version of the digiCamControl already installed. Unistall it first from Control Panel !"; project.MajorUpgradeStrategy.RemoveExistingProductAfter = Step.InstallInitialize; ////project.MajorUpgradeStrategy.UpgradeVersions = VersionRange.ThisAndOlder; ////project.MajorUpgradeStrategy.PreventDowngradingVersions = VersionRange.ThisAndOlder; project.ControlPanelInfo.Manufacturer = "Duka Istvan"; project.OutFileName = string.Format("ObsPluginSetup_{0}", ver.FileVersion); project.ControlPanelInfo.ProductIcon = "logo.ico"; project.InstallScope = InstallScope.perMachine; project.ResolveWildCards(); Compiler.PreserveTempFiles = false; return Compiler.BuildMsi(project); }
private static void Main(string[] args) { var dir = new DirectoryInfo(@"..\..\..\FirmwarePacker\bin\Release"); string exeFileFullName = dir.EnumerateFiles("*.exe").First().FullName; string exeFileName = Path.GetFileName(exeFileFullName); Assembly assembly = Assembly.LoadFile(exeFileFullName); const string projectName = "FmPack"; var mainFeature = new Feature("Программа", true) { AllowChange = false, ConfigurableDir = "INSTALLDIR" }; var project = new Project(projectName, new Dir(mainFeature, InstallerHelper.GetSautProgramLocation(projectName), new Files(dir.FullName + "\\*.*", InstallerHelper.IsFileDesired)), // Environment Variables new EnvironmentVariable("FmPack", "\"[INSTALLDIR]" + exeFileName + "\""), // Shortcuts new Dir(mainFeature, @"%ProgramMenu%\saut", new ExeFileShortcut(projectName, "[INSTALLDIR]" + exeFileName, "") { WorkingDirectory = "INSTALLDIR" } ), new Dir(mainFeature, "%Desktop%", new ExeFileShortcut(mainFeature, projectName, "[INSTALLDIR]" + exeFileName, "") { WorkingDirectory = "INSTALLDIR" } )) { DefaultFeature = mainFeature, OutDir = @"..\..\..\installers" }; project.ResolveWildCards(true) .FindFile(f => f.Name.EndsWith(exeFileName)) .First() .AddAssociation(new FileAssociation("fpc", "application/firmware-project", "Открыть", "\"%1\"") { Icon = "project.ico", Description = "Файл проекта для FmPack" }); project.SetBasicThings(new Guid("1E7AA096-4665-4BE0-A5EB-D7EE62616E38"), DotNetVersion.DotNet4); project.SetInterface(InstallerInterfaceKind.SelectDirectory); project.SetProjectInformation(assembly, @"..\..\..\FirmwarePacker\icon.ico", "https://repo.nposaut.ru/#/tools?tool=FmPack"); string msi = Compiler.BuildMsi(project); InstallerHelper.SignInstaller(msi); }
public static void Main() { /* new Dir(@"%ProgramFiles%\Pamya\Resources", new File(binaries,@"..\Pamya\Resources\Localise.eo-Eo.xaml"), new File(binaries,@"..\Pamya\Resources\Localise.ru-RU.xaml"), new File(binaries,@"..\Pamya\Resources\Localise.xaml") )*/ Feature binaries = new Feature("Pamya Binaries"); Feature docs = new Feature("Documentation"); var project = new Project("Pamya", new Dir(@"%ProgramFiles%\Pamya", new File(@"..\LICENSE"), new File(binaries,@"..\Pamya\bin\Release\Pamya.exe", new FileShortcut(binaries, "Pamya", @"%ProgramMenu%\Pamya") ), new File(binaries, @"..\Pamya\PamyaIcon.ico"), new File(binaries, @"..\Pamya\bin\Release\System.Data.SQLite.dll"), new File(binaries, @"..\Pamya\bin\Release\SQLite.Interop.dll"), new Dir(@"Resources", new File(binaries, @"..\Pamya\Resources\Localise.eo-Eo.xaml"), new File(binaries, @"..\Pamya\Resources\Localise.ru-RU.xaml"), new File(binaries, @"..\Pamya\Resources\Localise.xaml") ) ), //new Dir("%Startup%", // new ExeFileShortcut(binaries, "Pamya", "[INSTALLDIR]Pamya.exe", "")), new Dir(@"%ProgramMenu%\Pamya", new ExeFileShortcut(binaries, "Uninstall Pamya", "[System64Folder]msiexec.exe", "/x [ProductCode]")) ); project.GUID = new Guid("ad4e532e-5832-4ec8-bbff-09f3dfdcc427"); project.UI = WUI.WixUI_Mondo; project.SourceBaseDir = Environment.CurrentDirectory; project.OutFileName = "Pamya"; //Compiler.AllowNonRtfLicense = true; project.LicenceFile = @"..\LICENSE.rtf"; try { Compiler.BuildMsi(project); } catch (Exception ex) { Console.WriteLine(ex); } }
private static void Main(string[] args) { var dir = new DirectoryInfo(@"..\..\..\LightUpdater\bin\Release"); string exeFileFullName = dir.EnumerateFiles("*.exe").First().FullName; string exeFileName = Path.GetFileName(exeFileFullName); Assembly assembly = Assembly.LoadFile(exeFileFullName); string projectName = assembly.GetCustomAttributes<AssemblyTitleAttribute>().First().Title; var mainFeature = new Feature("Программа", true) { AllowChange = false, ConfigurableDir = "INSTALLDIR" }; var project = new Project(projectName, new Dir(mainFeature, InstallerHelper.GetSautProgramLocation(projectName), new Files(dir.FullName + "\\*.*", InstallerHelper.IsFileDesired)), // Shortcuts new Dir(mainFeature, @"%ProgramMenu%", new ExeFileShortcut(projectName, "[INSTALLDIR]" + exeFileName, "") { WorkingDirectory = "INSTALLDIR" }, new ExeFileShortcut(projectName + " (250 кбод)", "[INSTALLDIR]" + exeFileName, "/can1:250000 /can2:250000") { WorkingDirectory = "INSTALLDIR" } ), new Dir(mainFeature, "%Desktop%", new ExeFileShortcut(mainFeature, projectName, "[INSTALLDIR]" + exeFileName, "") { WorkingDirectory = "INSTALLDIR" } )) { DefaultFeature = mainFeature, OutDir = @"..\..\.." }; project.ResolveWildCards(true) .FindFile(f => f.Name.EndsWith(exeFileName)) .First() .AddAssociation(new FileAssociation("sfp", "application/firmware-package", "Прошить", "\"%1\"") { Icon = "sfp.ico", Description = "Файл пакета прошивки" }); project.SetBasicThings(new Guid("B390695C-291F-4B7F-8E13-1630F2BF12F1"), DotNetVersion.DotNet4); project.SetInterface(InstallerInterfaceKind.SelectDirectory); project.SetProjectInformation(assembly, @"..\..\..\LightUpdater\icon.ico", "https://repo.nposaut.ru/#/tools?tool=CanProg"); string msi = Compiler.BuildMsi(project); InstallerHelper.SignInstaller(msi); Console.ReadLine(); }
/// <summary> /// Creates an instance of Certificate where the certificate is a binary resource /// </summary> /// <param name="id">The identifier.</param> /// <param name="feature">The feature.</param> /// <param name="name">The name.</param> /// <param name="storeLocation">The store location.</param> /// <param name="storeName">Name of the store.</param> /// <param name="binaryKey">The binary key.</param> public Certificate(Id id, Feature feature, string name, StoreLocation storeLocation, StoreName storeName, string binaryKey) : this(name, storeLocation, storeName, binaryKey) { Id = id; Feature = feature; }
/// <summary> /// Creates an instance of User representing <paramref name="name" />@<paramref name="domain" /> /// </summary> /// <param name="id">The identifier.</param> /// <param name="feature">The feature.</param> /// <param name="name">The name.</param> /// <param name="domain">The domain.</param> public User(Id id, Feature feature, string name, string domain) : this(id, feature, name) { Domain = domain; }
/// <summary> /// Creates an instance of User representing <paramref name="name" /> /// </summary> /// <param name="id">The identifier.</param> /// <param name="feature">The feature.</param> /// <param name="name">The name.</param> public User(Id id, Feature feature, string name) : this(id, name) { Feature = feature; }
public Files(Feature feature, string sourcePath, params string[] excludeFileMasks) { IncludeMask = IO.Path.GetFileName(sourcePath); Directory = IO.Path.GetDirectoryName(sourcePath); //ExcludeMasks = excludeFileMasks; Feature = feature; }
/// <summary> /// Creates an instance of SqlString from <paramref name="sql"/> to be execute according to <paramref name="executeOptions"/> /// </summary> /// <param name="sqlDb"></param> /// <param name="feature"></param> /// <param name="sql"></param> /// <param name="executeOptions"></param> public SqlString(string sqlDb, Feature feature, string sql, ExecuteSql executeOptions) : this(sql, executeOptions) { SqlDb = sqlDb; Feature = feature; }
internal Dir(Feature feature, string targetPath, Project project) { //create nested Dirs on-fly but reuse already existing ones in the project var nestedDirs = targetPath.Split("\\/".ToCharArray()); Dir lastFound = null; string lastMatching = null; string[] flatTree = ToFlatPathTree(targetPath); foreach (string path in flatTree) { var existingDir = project.FindDir(path); if (existingDir != null) { lastFound = existingDir; lastMatching = path; } else { if (lastFound != null) { Dir currDir = lastFound; string[] newSubDirs = targetPath.Substring(lastMatching.Length + 1).Split("\\/".ToCharArray()); for (int i = 0; i < newSubDirs.Length; i++) { Dir nextSubDir = new Dir(newSubDirs[i]); currDir.Dirs = new Dir[] { nextSubDir }; currDir = nextSubDir; } currDir.Feature = feature; } else { Dir lastDir = ProcessTargetPath(targetPath); lastDir.Feature = feature; } break; } } }
/// <summary> /// Creates an instance of SqlString from <paramref name="sql"/> to be rolled-back according to <paramref name="rollbackOptions"/> /// </summary> /// <param name="id"></param> /// <param name="feature"></param> /// <param name="sql"></param> /// <param name="rollbackOptions"></param> public SqlString(Id id, Feature feature, string sql, RollbackSql rollbackOptions) : this(sql, rollbackOptions) { Id = id; Feature = feature; }
/// <summary> /// Creates an instance of SqlString from <paramref name="sql"/> to be rolled-back according to <paramref name="rollbackOptions"/> /// </summary> /// <param name="sqlDb"></param> /// <param name="feature"></param> /// <param name="sql"></param> /// <param name="rollbackOptions"></param> public SqlString(string sqlDb, Feature feature, string sql, RollbackSql rollbackOptions) : this(sql, rollbackOptions) { SqlDb = sqlDb; Feature = feature; }
/// <summary> /// Creates an instance of SqlString from <paramref name="sql"/> to be rolled-back according to <paramref name="rollbackOptions"/> /// </summary> /// <param name="sqlDb"></param> /// <param name="feature"></param> /// <param name="sql"></param> /// <param name="rollbackOptions"></param> public SqlString(SqlDatabase sqlDb, Feature feature, string sql, RollbackSql rollbackOptions) : this(sql, rollbackOptions) { SqlDb = sqlDb.Id; Feature = feature; }
/// <summary> /// Creates an instance of SqlString from <paramref name="sql"/> to be rolled-back according to <paramref name="rollbackOptions"/> /// </summary> /// <param name="feature"></param> /// <param name="sql"></param> /// <param name="rollbackOptions"></param> public SqlString(Feature feature, string sql, RollbackSql rollbackOptions) : this(sql, rollbackOptions) { Feature = feature; }
/// <summary> /// Creates an instance of SqlString from <paramref name="sql"/> to be execute according to <paramref name="executeOptions"/> /// </summary> /// <param name="id"></param> /// <param name="feature"></param> /// <param name="sql"></param> /// <param name="executeOptions"></param> public SqlString(Id id, Feature feature, string sql, ExecuteSql executeOptions) : this(sql, executeOptions) { Id = id; Feature = feature; }
/// <summary> /// Creates an instance of SqlString from <paramref name="sql"/> to be execute according to <paramref name="executeOptions"/> /// </summary> /// <param name="sqlDb"></param> /// <param name="feature"></param> /// <param name="sql"></param> /// <param name="executeOptions"></param> public SqlString(SqlDatabase sqlDb, Feature feature, string sql, ExecuteSql executeOptions) : this(sql, executeOptions) { SqlDb = sqlDb.Id; Feature = feature; }
/// <summary> /// Initializes a new instance of the <see cref="RegFile"/> class. /// </summary> /// <param name="feature"><see cref="Feature"></see> the registry value should be included in.</param> /// <param name="path">The path.</param> public RegFile(Feature feature, string path) { Path = path; Feature = feature; }
/// <summary> /// Creates an instance of Certificate where the certificate is a binary resource /// </summary> /// <param name="id">The identifier.</param> /// <param name="feature">The feature.</param> /// <param name="name">The name.</param> /// <param name="storeLocation">The store location.</param> /// <param name="storeName">Name of the store.</param> /// <param name="binaryKey">The binary key.</param> public Certificate(Id id, Feature feature, string name, StoreLocation storeLocation, StoreName storeName, string binaryKey) : this(name, storeLocation, storeName, binaryKey) { Id = id; Feature = feature; }
/// <summary> /// Creates instance of the <see cref="File"></see> class with properties initialized with specified parameters. /// </summary> /// <param name="id">The explicit <see cref="Id"></see> to be associated with <see cref="File"/> instance.</param> /// <param name="feature"><see cref="Feature"></see> the file should be included in.</param> /// <param name="sourcePath">Relative path to the file to be taken for building the MSI.</param> /// <param name="items">Optional <see cref="FileShortcut"/> parameters defining shortcuts to the file to be created /// during the installation.</param> public File(Id id, Feature feature, string sourcePath, params WixEntity[] items) { Id = id.Value; Name = sourcePath; Feature = feature; AddItems(items); }
/// <summary> /// Creates instance of the <see cref="Merge"></see> class with properties initialized with specified parameters. /// </summary> /// <param name="feature"><see cref="Feature"></see> the msm should be included in.</param> /// <param name="sourceFile">Relative path to the msm file to be taken for building the MSI.</param> public Merge(Feature feature, string sourceFile) { Name = SourceFile = sourceFile; Feature = feature; }
static void Main(string[] args) { Feature appFeature = new Feature("Application files", "Main application files", true, false, @"INSTALLDIR"); var shortcut = new FileShortcut(appFeature, "ShootingLab", @"%ProgramMenu%\digiCamControl") { WorkingDirectory = @"INSTALLDIR" }; var shortcutD = new FileShortcut(appFeature, "ShootingLab", @"%Desktop%") { WorkingDirectory = @"INSTALLDIR" }; var appDir = new Dir(@"ShootingLab", new WixSharp.File(appFeature, "ShootingLab.exe", shortcut, shortcutD), new DirFiles(appFeature, @"*.dll") //new WixSharp.File(appFeature, "shootingLab.ico") ); var baseDir = new Dir(@"%ProgramFiles%\", appDir); Project project = new Project("ShootingLab", new LaunchCondition("NET40=\"#1\"", "Please install .NET 4.0 first."), baseDir, new RegValueProperty("NET40", RegistryHive.LocalMachine, @"Software\Microsoft\NET Framework Setup\NDP\v4\Full", "Install", "0"), new ManagedAction(@"MyAction", Return.ignore, When.Before, Step.InstallExecute, Condition.NOT_Installed, Sequence.InstallExecuteSequence), new ManagedAction(@"SetRightAction", Return.ignore, When.Before, Step.InstallFinalize, Condition.Always, Sequence.InstallExecuteSequence) ); project.UI = WUI.WixUI_FeatureTree; project.GUID = new Guid("4E22C775-897C-41D5-8009-1A4A616149B2"); project.SourceBaseDir = Path.GetFullPath(@"C:\Développements\LaboPDV\ShootingLab\bin\Release\"); FileVersionInfo ver = FileVersionInfo.GetVersionInfo(Path.Combine(project.SourceBaseDir, "ShootingLab.exe")); //project.LicenceFile = @"Licenses\ShootingLabLicence.rtf"; project.Version = new Version(ver.FileMajorPart, ver.FileMinorPart, ver.FileBuildPart, ver.FilePrivatePart); project.MajorUpgradeStrategy = MajorUpgradeStrategy.Default; project.MajorUpgradeStrategy.RemoveExistingProductAfter = Step.InstallInitialize; project.ControlPanelInfo.Manufacturer = "PixVert"; project.OutFileName = string.Format("ShootingLabSetup_{0}", ver.FileVersion); //project.ControlPanelInfo.ProductIcon = "shootingLab.ico"; project.ResolveWildCards(); Compiler.PreserveTempFiles = true; Compiler.BuildMsi(project); }
/// <summary> /// Creates an instance of SqlString from <paramref name="sql"/> to be execute according to <paramref name="executeOptions"/> /// </summary> /// <param name="feature"></param> /// <param name="sql"></param> /// <param name="executeOptions"></param> public SqlString(Feature feature, string sql, ExecuteSql executeOptions) : this(sql, executeOptions) { Feature = feature; }
public static void Main(string[] args) { Feature appFeature = new Feature("Application files", "Main application files", true, false, @"INSTALLDIR"); Feature obsPlugin = new Feature("Obs Plugin"); var appDir = new Dir(@"digiCamControl", new File(appFeature, "CameraControl.exe", new FileShortcut(appFeature,"digiCamControl", @"%ProgramMenu%\digiCamControl"), new FileShortcut(appFeature, "digiCamControl", @"%Desktop%")), new File(appFeature, "CameraControl.PluginManager.exe"), new File(appFeature, "CameraControlCmd.exe"), new File(appFeature, "CameraControlRemoteCmd.exe"), new File(appFeature, "dcraw.exe"), new File(appFeature, "ffmpeg.exe"), new File(appFeature, "ngrok.exe"), new File(appFeature, "MtpTester.exe"), //new File(appFeature, "PhotoBooth.exe",new FileShortcut(appFeature, "PhotoBooth", @"%ProgramMenu%\digiCamControl")), new DirFiles(appFeature, @"*.dll"), #if DEBUG new DirFiles(appFeature, @"*.pdb"), #endif new File(appFeature, "regwia.bat"), new File(appFeature, "logo.ico"), new File(appFeature, "logo_big.jpg"), new File(appFeature, "baseMtpDevice.xml"), new DirFiles(appFeature, @"*.png"), new File(appFeature, "DigiCamControl.xbs"), new Dir(appFeature, "Data", new Files(appFeature, @"Data\*.*")), //new Dir(appFeature, "Plugins", // new Files(appFeature, @"Plugins\*.*", "MahApps.Metro.*", "System.Windows.Interactivity.*", // "WriteableBitmapEx.Wpf.*", "GalaSoft.MvvmLight.*", "*.config")), new Dir(appFeature, "Plugins", new Dir(appFeature, "CameraControl.Plugins", new File(appFeature, "Plugins\\CameraControl.Plugins\\CameraControl.Plugins.dll"), new File(appFeature, "Plugins\\CameraControl.Plugins\\dcc.plugin")), new Dir(appFeature, "Plugin.DeviceControlBox", new File(appFeature, "Plugins\\Plugin.DeviceControlBox\\Plugin.DeviceControlBox.dll"), new File(appFeature, "Plugins\\Plugin.DeviceControlBox\\dcc.plugin")) ), new Dir(appFeature, "Languages", new DirFiles(appFeature, @"Languages\*.xml")), new Dir(appFeature, "Licenses", new DirFiles(appFeature, @"Licenses\*.*")), new Dir(appFeature, "Tools", new DirFiles(appFeature, @"Tools\*.*")), new Dir(appFeature, "WebServer", new Files(appFeature, @"WebServer\*.*")) ); var obsDir = new Dir(@"OBS\plugins", new File(obsPlugin, @"ObsPlugin\CLRHostPlugin.dll"), new Dir(obsPlugin, "CLRHostPlugin", new DirFiles(obsPlugin, @"ObsPlugin\CLRHostPlugin\*.*") )); var baseDir = new Dir(@"%ProgramFiles%\", appDir , obsDir ); Project project = new Project("digiCamControl", new LaunchCondition("NET40=\"#1\"", "Please install .NET 4.0 first."), baseDir, new RegValueProperty("NET40", RegistryHive.LocalMachine, @"Software\Microsoft\NET Framework Setup\NDP\v4\Full", "Install", "0"), new ManagedAction(@"MyAction", Return.ignore, When.Before, Step.LaunchConditions, Condition.NOT_Installed, Sequence.InstallUISequence), new ManagedAction(@"SetRightAction", Return.ignore, When.Before, Step.InstallFinalize, Condition.Always, Sequence.InstallExecuteSequence) ); project.UI = WUI.WixUI_FeatureTree; project.GUID = new Guid("19d12628-7654-4354-a305-9ab0932af676"); #if DEBUG project.SourceBaseDir = Path.GetFullPath(System.IO.Path.Combine(Environment.CurrentDirectory, @"..\CameraControl\bin\Debug\")); #else project.SourceBaseDir = Path.GetFullPath(System.IO.Path.Combine(Environment.CurrentDirectory, @"..\CameraControl\bin\Release\")); #endif project.ResolveWildCards(); FileVersionInfo ver = FileVersionInfo.GetVersionInfo(Path.Combine(project.SourceBaseDir, "CameraControl.exe")); project.LicenceFile = @"Licenses\DigiCamControlLicence.rtf"; project.Version = new Version(ver.FileMajorPart, ver.FileMinorPart, ver.FileBuildPart, ver.FilePrivatePart); project.MajorUpgradeStrategy = MajorUpgradeStrategy.Default; project.MajorUpgradeStrategy.RemoveExistingProductAfter = Step.InstallInitialize; project.ControlPanelInfo.Manufacturer = "Duka Istvan"; project.OutFileName = string.Format("digiCamControlsetup_{0}", ver.FileVersion); project.ControlPanelInfo.ProductIcon = "logo.ico"; string branding = Path.Combine(project.SourceBaseDir, "branding.xml"); if (System.IO.File.Exists(branding)) { var doc = new XmlDocument(); doc.LoadXml(System.IO.File.ReadAllText(branding)); string name = doc.DocumentElement.SelectSingleNode("/Branding/ApplicationTitle").InnerText; project.ControlPanelInfo.Manufacturer = name; project.OutFileName = string.Format(name+"_{0}", ver.FileVersion); appDir.AddFile(new File(appFeature, "branding.xml")); project.Name = name; } Compiler.PreserveTempFiles = true; Compiler.BuildMsi(project); }
/// <summary> /// Initializes a new instance of the <see cref="Dir"/> class with properties/fields initialized with specified parameters /// </summary> /// <param name="feature"><see cref="Feature"></see> the directory should be included in.</param> /// <param name="targetPath">The name of the directory. Note if the directory is a root installation directory <c>targetPath</c> must /// be specified as a full path. However if the directory is a nested installation directory the name must be a directory name only.</param> /// <param name="items">Any <see cref="WixEntity"/> which can be contained by directory (e.g. file, subdirectory).</param> public Dir(Feature feature, string targetPath, params WixEntity[] items) { lastDir = ProcessTargetPath(targetPath); lastDir.AddItems(items); lastDir.Feature = feature; }
/// <summary> /// Initializes a new instance of the <see cref="Files"/> class with properties/fields initialized with specified parameters. /// </summary> /// <param name="feature"><see cref="Feature"></see> the directory files should be included in.</param> /// <param name="sourcePath">The relative path to source directory. It must include wildcard pattern for files to be included /// into MSI (e.g. <c>new Files(@"Release\Bin\*.*")</c>).</param> public Files(Feature feature, string sourcePath) { IncludeMask = IO.Path.GetFileName(sourcePath); Directory = IO.Path.GetDirectoryName(sourcePath); Feature = feature; }
/// <summary> /// Initializes a new instance of the <see cref="FileShortcut"/> class with properties/fields initialized with specified parameters. /// <para>This constructor should be used to instantiate shortcuts, which belong to the <see cref="File"/> element.</para> /// </summary> /// <param name="id">The explicit <see cref="Id"></see> to be associated with <see cref="FileShortcut"/> instance.</param> /// <param name="feature"><see cref="Feature"></see> the shortcut should be included in.</param> /// <param name="name">The name of the shortcut to be installed.</param> /// <param name="location">The directory where the shortcut should be installed.</param> public FileShortcut(Id id, Feature feature, string name, string location) : this(id, feature, location) { Name = name; }
/// <summary> /// Initializes a new instance of the <see cref="Files"/> class with properties/fields initialized with specified parameters. /// </summary> /// <param name="feature"><see cref="Feature"></see> the directory files should be included in.</param> /// <param name="sourcePath">The relative path to source directory. It must include wildcard pattern for files to be included /// into MSI (e.g. <c>new Files(@"Release\Bin\*.*")</c>).</param> /// <param name="filter">Filter to be applied for every file to be evaluated for the inclusion into MSI. /// (e.g. <c>new Files(typical, @"Release\Bin\*.dll", f => !f.EndsWith(".Test.dll"))</c>).</param> public Files(Feature feature, string sourcePath, Predicate<string> filter) { IncludeMask = IO.Path.GetFileName(sourcePath); Directory = IO.Path.GetDirectoryName(sourcePath); Filter = filter; Feature = feature; }
/// <summary> /// Initializes a new instance of the <see cref="FileShortcut"/> class with properties/fields initialized with specified parameters. /// <para>This constructor should be used to instantiate shortcuts, which belong to the <see cref="File"/> element.</para> /// </summary> /// <param name="id">The explicit <see cref="Id"></see> to be associated with <see cref="FileShortcut"/> instance.</param> /// <param name="feature"><see cref="Feature"></see> the shortcut should be included in.</param> /// <param name="location">The directory where the shortcut should be installed.</param> public FileShortcut(Id id, Feature feature, string location) { Id = id.Value; Feature = feature; Location = location; }
/// <summary> /// Creates an instance of User representing <paramref name="name" /> /// </summary> /// <param name="feature">The feature.</param> /// <param name="name">The name.</param> public User(Feature feature, string name) : this(name) { Feature = feature; }
/// <summary> /// Initializes a new instance of the <see cref="FileShortcut"/> class with properties/fields initialized with specified parameters. /// <para>This constructor should be used to instantiate shortcuts, which belong to the <see cref="File"/> element.</para> /// </summary> /// <param name="feature"><see cref="Feature"></see> the shortcut should be included in.</param> /// <param name="location">The directory where the shortcut should be installed.</param> public FileShortcut(Feature feature, string location) { Feature = feature; Location = location; }
/// <summary> /// Creates an instance of User representing <paramref name="name" />@<paramref name="domain" /> /// </summary> /// <param name="feature">The feature.</param> /// <param name="name">The name.</param> /// <param name="domain">The domain.</param> public User(Feature feature, string name, string domain) : this(feature, name) { Domain = domain; }
/// <summary> /// Initializes a new instance of the <see cref="EnvironmentVariable"/> class. /// </summary> /// <param name="id">The explicit <see cref="Id"></see> to be associated with <see cref="EnvironmentVariable"/> instance.</param> /// <param name="feature"><see cref="Feature"></see> the environment variable should be included in.</param> /// <param name="name">The name.</param> /// <param name="value">The value.</param> public EnvironmentVariable(Id id, Feature feature, string name, string value) { this.Id = id.Value; this.Feature = feature; this.Name = name; this.Value = value; }
/// <summary> /// Creates an instance of Certificate where the certificate is requested or exists at the specified path /// </summary> /// <param name="id">The identifier.</param> /// <param name="feature">The feature.</param> /// <param name="name">The name.</param> /// <param name="storeLocation">The store location.</param> /// <param name="storeName">Name of the store.</param> /// <param name="certificatePath">The certificate path.</param> /// <param name="request">if set to <c>true</c> [request].</param> public Certificate(Id id, Feature feature, string name, StoreLocation storeLocation, StoreName storeName, string certificatePath, bool request) : this(name, storeLocation, storeName, certificatePath, request) { Id = id; Feature = feature; }
/// <summary> /// Initializes a new instance of the <see cref="RemoveRegistryKey" /> class. /// </summary> /// <param name="feature">The Feature.</param> /// <param name="key">The Key.</param> /// <param name="action">The Action.</param> public RemoveRegistryKey(Feature feature, string key, RemoveRegistryKeyAction action) { Feature = feature; Key = key; Action = action; }
/// <summary> /// Initializes a new instance of the <see cref="RegValue"/> class with properties initialized with specified parameters. /// </summary> /// <param name="id">The explicit <see cref="Id"></see> to be associated with <see cref="RegValue"/> instance.</param> /// <param name="feature"><see cref="Feature"></see> the registry value should be included in.</param> /// <param name="root">The registry hive name.</param> /// <param name="key">The registry key name.</param> /// <param name="name">The registry entry name.</param> /// <param name="value">The registry entry value.</param> public RegValue(Id id, Feature feature, RegistryHive root, string key, string name, object value) { Id = id.Value; Name = name; Root = root; Key = key; Value = value; Feature = feature; }
/// <summary> /// Initializes a new instance of the <see cref="RemoveRegistryKey" /> class. /// </summary> /// <param name="id">The Id.</param> /// <param name="feature">The Feature.</param> /// <param name="key">The Key.</param> public RemoveRegistryKey(Id id, Feature feature, string key) { Id = id; Feature = feature; Key = key; }
/// <summary> /// Creates instance of the <see cref="File"></see> class with properties initialized with specified parameters. /// </summary> /// <param name="feature"><see cref="Feature"></see> the file should be included in.</param> /// <param name="sourcePath">Relative path to the file to be taken for building the MSI.</param> /// <param name="items">Optional <see cref="FileShortcut"/> parameters defining shortcuts to the file to be created /// during the installation.</param> public File(Feature feature, string sourcePath, params WixEntity[] items) { Name = sourcePath; Feature = feature; AddItems(items); }
/// <summary> /// Initializes a new instance of the <see cref="RemoveRegistryKey" /> class. /// </summary> /// <param name="feature">The Feature.</param> /// <param name="key">The Key.</param> public RemoveRegistryKey(Feature feature, string key) { Feature = feature; Key = key; }
/// <summary> /// Initializes a new instance of the <see cref="Dir"/> class with properties/fields initialized with specified parameters. /// </summary> /// <param name="id">The explicit <see cref="Id"></see> to be associated with <see cref="Dir"/> instance.</param> /// <param name="feature"><see cref="Feature"></see> the directory should be included in.</param> /// <param name="targetPath">The name of the directory. Note if the directory is a root installation directory <c>targetPath</c> must /// be specified as a full path. However if the directory is a nested installation directory the name must be a directory name only.</param> /// <param name="items">Any <see cref="WixEntity"/> which can be contained by directory (e.g. file, subdirectory).</param> public Dir(Id id, Feature feature, string targetPath, params WixEntity[] items) { Dir lastDir = ProcessTargetPath(targetPath); lastDir.AddItems(items); lastDir.Id = id; lastDir.Feature = feature; }
/// <summary> /// Initializes a new instance of the <see cref="RemoveRegistryKey" /> class. /// </summary> /// <param name="feature">The Feature.</param> /// <param name="root">The Root.</param> /// <param name="key">The Key.</param> public RemoveRegistryKey(Feature feature, RegistryHive root, string key) { Feature = feature; Root = root; Key = key; }
public static void Main(string[] args) { Feature appFeature = new Feature("Application files", "Main application files", true, false, @"INSTALLDIR"); var shortcut = new FileShortcut(appFeature, "digiCamControl", @"%ProgramMenu%\digiCamControl") { WorkingDirectory = @"INSTALLDIR" }; var shortcutD = new FileShortcut(appFeature, "digiCamControl", @"%Desktop%") { WorkingDirectory = @"INSTALLDIR" }; var appDir = new Dir(@"digiCamControl", new File(appFeature, "CameraControl.exe", shortcut, shortcutD), new File(appFeature, "CameraControl.PluginManager.exe"), new File(appFeature, "CameraControlCmd.exe"), new File(appFeature, "CameraControlRemoteCmd.exe"), new File(appFeature, "dcraw.exe"), new File(appFeature, "ffmpeg.exe"), new File(appFeature, "ngrok.exe"), new File(appFeature, "MtpTester.exe"), //new File(appFeature, "PhotoBooth.exe",new FileShortcut(appFeature, "PhotoBooth", @"%ProgramMenu%\digiCamControl")), new DirFiles(appFeature, @"*.dll"), #if DEBUG new DirFiles(appFeature, @"*.pdb"), #endif new File(appFeature, "regwia.bat"), new File(appFeature, "logo.ico"), new File(appFeature, "logo_big.jpg"), new File(appFeature, "baseMtpDevice.xml"), new DirFiles(appFeature, @"*.png"), new File(appFeature, "DigiCamControl.xbs"), new Dir(appFeature, "Data", new Files(appFeature, @"Data\*.*")), //new Dir(appFeature, "Plugins", // new Files(appFeature, @"Plugins\*.*", "MahApps.Metro.*", "System.Windows.Interactivity.*", // "WriteableBitmapEx.Wpf.*", "GalaSoft.MvvmLight.*", "*.config")), new Dir(appFeature, "Plugins", new Dir(appFeature, "CameraControl.Plugins", new File(appFeature, "Plugins\\CameraControl.Plugins\\CameraControl.Plugins.dll"), new File(appFeature, "Plugins\\CameraControl.Plugins\\dcc.plugin")), new Dir(appFeature, "Plugin.DeviceControlBox", new File(appFeature, "Plugins\\Plugin.DeviceControlBox\\Plugin.DeviceControlBox.dll"), new File(appFeature, "Plugins\\Plugin.DeviceControlBox\\dcc.plugin")) ), new Dir(appFeature, "Languages", new DirFiles(appFeature, @"Languages\*.xml")), new Dir(appFeature, "Licenses", new DirFiles(appFeature, @"Licenses\*.*")), new Dir(appFeature, "x64", new DirFiles(appFeature, @"x64\*.*")), new Dir(appFeature, "x86", new DirFiles(appFeature, @"x86\*.*")), new Dir(appFeature, "Tools", new DirFiles(appFeature, @"Tools\*.*")), new Dir(appFeature, "WebServer", new Files(appFeature, @"WebServer\*.*")) ); var baseDir = new Dir(@"%ProgramFiles%", appDir ); Project project = new Project("digiCamControl", baseDir, new ManagedAction(Setup.CustomActions.MyAction, Return.ignore, When.Before, Step.InstallExecute, Condition.NOT_Installed, Sequence.InstallExecuteSequence), new ManagedAction(Setup.CustomActions.SetRightAction, Return.ignore, When.Before, Step.InstallFinalize, Condition.Always, Sequence.InstallExecuteSequence), new RegValue(appFeature, RegistryHive.ClassesRoot, @"Wow6432Node\CLSID\{860BB310-5D01-11d0-BD3B-00A0C911CE86}\Instance\{628C6DCD-6A0A-4804-AAF3-91335A83239B}", "FriendlyName", "digiCamControl Virtual WebCam"), new RegValue(appFeature, RegistryHive.CurrentUser, @"SOFTWARE\IP Webcam", "url", "http://*****:*****@"SOFTWARE\IP Webcam", "width","640"), new RegValue(appFeature, RegistryHive.CurrentUser, @"SOFTWARE\IP Webcam", "height", "426") ); project.UI = WUI.WixUI_InstallDir; project.GUID = new Guid("19d12628-7654-4354-a305-9ab0932af676"); //project.SetNetFxPrerequisite("NETFRAMEWORK45='#1'"); #if DEBUG project.SourceBaseDir = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\CameraControl\bin\Debug\")); #else project.SourceBaseDir = Path.GetFullPath(System.IO.Path.Combine(Environment.CurrentDirectory, @"..\CameraControl\bin\Release\")); #endif /* Not particularly proud of this change, nor the matching one in ObsPluginSetup.cs, but it seems necessary to allow these * programs to be built regardless of the layout choosen for the files */ FileVersionInfo ver = null; try { ver = FileVersionInfo.GetVersionInfo(Path.Combine(project.SourceBaseDir, "CameraControl.exe")); } catch (FileNotFoundException ex) { project.SourceBaseDir = project.SourceBaseDir.Replace(@"Setup\bin\", ""); ver = FileVersionInfo.GetVersionInfo(Path.Combine(project.SourceBaseDir, "CameraControl.exe")); } project.LicenceFile = @"Licenses\DigiCamControlLicence.rtf"; project.Version = new Version(ver.FileMajorPart, ver.FileMinorPart, ver.FileBuildPart, ver.FilePrivatePart); project.MajorUpgradeStrategy = MajorUpgradeStrategy.Default; //project.MajorUpgradeStrategy.NewerProductInstalledErrorMessage = "A version of the digiCamControl already installed. Unistall it first from Control Panel !"; project.MajorUpgradeStrategy.RemoveExistingProductAfter = Step.InstallInitialize; ////project.MajorUpgradeStrategy.UpgradeVersions = VersionRange.ThisAndOlder; ////project.MajorUpgradeStrategy.PreventDowngradingVersions = VersionRange.ThisAndOlder; project.ControlPanelInfo.Manufacturer = "Duka Istvan"; project.OutFileName = string.Format("digiCamControlsetup_{0}", ver.FileVersion); project.ControlPanelInfo.ProductIcon = "logo.ico"; if (System.IO.Directory.Exists(Path.Combine(project.SourceBaseDir, "Branding"))) { appDir.AddDir(new Dir(appFeature, "Branding", new Files(appFeature, @"Branding\*.*"))); } string branding = Path.Combine(project.SourceBaseDir, "branding.xml"); if (System.IO.File.Exists(branding)) { var doc = new XmlDocument(); doc.LoadXml(System.IO.File.ReadAllText(branding)); string name = doc.DocumentElement.SelectSingleNode("/Branding/ApplicationTitle").InnerText; project.ControlPanelInfo.Manufacturer = name; project.OutFileName = string.Format(name.Replace(" ", "_") + "_{0}", ver.FileVersion); appDir.AddFile(new File(appFeature, "branding.xml")); project.Name = name; if (System.IO.File.Exists(Path.Combine(project.SourceBaseDir, "Branding", "logo.ico"))) { project.ControlPanelInfo.ProductIcon = Path.Combine(project.SourceBaseDir, "Branding", "logo.ico"); shortcut.IconFile = Path.Combine(project.SourceBaseDir, "Branding", "logo.ico"); shortcutD.IconFile = Path.Combine(project.SourceBaseDir, "Branding", "logo.ico"); shortcut.Name = name; shortcutD.Name = name; } if (System.IO.File.Exists(Path.Combine(project.SourceBaseDir, "Branding", "Licence.rtf"))) project.LicenceFile = "Branding\\Licence.rtf"; } project.InstallScope = InstallScope.perMachine; project.ResolveWildCards(); Compiler.PreserveTempFiles = false; string productMsi = Compiler.BuildMsi(project); string obsMsi = ObsPluginSetup.Execute(); Thread.Sleep(2000); var dict = new Dictionary<string, string>(); dict.Add("Visible","yes"); var bootstrapper =new Bundle(project.Name, new PackageGroupRef("NetFx46Web"), //new ExePackage("vcredist_x86.exe"){InstallCommand ="/quite" }, new MsiPackage(Path.Combine(Path.GetDirectoryName(productMsi), "IPCamAdapter.msi")) { Permanent = false,Attributes = dict}, new MsiPackage(obsMsi) { Id = "ObsPackageId", Attributes = dict }, new MsiPackage(productMsi) { Id = "MyProductPackageId", DisplayInternalUI = true, Attributes = dict }); bootstrapper.Copyright = project.ControlPanelInfo.Manufacturer; bootstrapper.Version = project.Version; bootstrapper.UpgradeCode = new Guid("19d12628-7654-4354-a305-3A2057E2E6C9"); bootstrapper.DisableModify = "yes"; bootstrapper.DisableRemove = true; //bootstrapper.Application = new LicenseBootstrapperApplication() //{ // LicensePath = Path.Combine(project.SourceBaseDir, project.LicenceFile), // LogoFile = project.ControlPanelInfo.ProductIcon, //}; bootstrapper.IconFile = project.ControlPanelInfo.ProductIcon; bootstrapper.PreserveTempFiles = true; bootstrapper.OutFileName = project.OutFileName; bootstrapper.Build(); }
/// <summary> /// Creates instance of the <see cref="File"></see> class with properties initialized with specified parameters. /// </summary> /// <param name="feature"><see cref="Feature"></see> the file should be included in.</param> /// <param name="sourcePath">Relative path to the file to be taken for building the MSI.</param> /// <param name="items">Optional parameters defining additional members (e.g. <see cref="FileShortcut"/> shortcuts /// to the file to be created during the installation).</param> public File(Feature feature, string sourcePath, params WixEntity[] items) { Name = sourcePath; Feature = feature; AddItems(items); }
public static void Main(string[] args) { Feature appFeature = new Feature("Application files", "Main application files", true, false, @"INSTALLDIR"); var shortcut = new FileShortcut(appFeature, "digiCamControl", @"%ProgramMenu%\digiCamControl") { WorkingDirectory = @"INSTALLDIR" }; var shortcutD = new FileShortcut(appFeature, "digiCamControl", @"%Desktop%") { WorkingDirectory = @"INSTALLDIR" }; var appDir = new Dir(@"digiCamControl", new File(appFeature, "CameraControl.exe", shortcut, shortcutD), new File(appFeature, "CameraControl.PluginManager.exe"), new File(appFeature, "CameraControlCmd.exe"), new File(appFeature, "CameraControlRemoteCmd.exe"), new File(appFeature, "dcraw.exe"), new File(appFeature, "ffmpeg.exe"), new File(appFeature, "ngrok.exe"), new File(appFeature, "MtpTester.exe"), //new File(appFeature, "PhotoBooth.exe",new FileShortcut(appFeature, "PhotoBooth", @"%ProgramMenu%\digiCamControl")), new DirFiles(appFeature, @"*.dll"), #if DEBUG new DirFiles(appFeature, @"*.pdb"), #endif new File(appFeature, "regwia.bat"), new File(appFeature, "logo.ico"), new File(appFeature, "logo_big.jpg"), new File(appFeature, "baseMtpDevice.xml"), new DirFiles(appFeature, @"*.png"), new File(appFeature, "DigiCamControl.xbs"), new Dir(appFeature, "Data", new Files(appFeature, @"Data\*.*")), //new Dir(appFeature, "Plugins", // new Files(appFeature, @"Plugins\*.*", "MahApps.Metro.*", "System.Windows.Interactivity.*", // "WriteableBitmapEx.Wpf.*", "GalaSoft.MvvmLight.*", "*.config")), new Dir(appFeature, "Plugins", new Dir(appFeature, "CameraControl.Plugins", new File(appFeature, "Plugins\\CameraControl.Plugins\\CameraControl.Plugins.dll"), new File(appFeature, "Plugins\\CameraControl.Plugins\\dcc.plugin")), new Dir(appFeature, "Plugin.DeviceControlBox", new File(appFeature, "Plugins\\Plugin.DeviceControlBox\\Plugin.DeviceControlBox.dll"), new File(appFeature, "Plugins\\Plugin.DeviceControlBox\\dcc.plugin")) ), new Dir(appFeature, "Languages", new DirFiles(appFeature, @"Languages\*.xml")), new Dir(appFeature, "Licenses", new DirFiles(appFeature, @"Licenses\*.*")), new Dir(appFeature, "x64", new DirFiles(appFeature, @"x64\*.*")), new Dir(appFeature, "x86", new DirFiles(appFeature, @"x86\*.*")), new Dir(appFeature, "Tools", new DirFiles(appFeature, @"Tools\*.*")), new Dir(appFeature, "WebServer", new Files(appFeature, @"WebServer\*.*")) ); var baseDir = new Dir(@"%ProgramFiles%", appDir ); Project project = new Project("digiCamControl", baseDir, new ManagedAction(@"MyAction", Return.ignore, When.Before, Step.InstallExecute, Condition.NOT_Installed, Sequence.InstallExecuteSequence), new ManagedAction(@"SetRightAction", Return.ignore, When.Before, Step.InstallFinalize, Condition.Always, Sequence.InstallExecuteSequence) ); project.UI = WUI.WixUI_InstallDir; project.GUID = new Guid("19d12628-7654-4354-a305-9ab0932af676"); project.SetNetFxPrerequisite("NETFRAMEWORK40FULL='#1'"); #if DEBUG project.SourceBaseDir = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\CameraControl\bin\Debug\")); #else project.SourceBaseDir = Path.GetFullPath(System.IO.Path.Combine(Environment.CurrentDirectory, @"..\CameraControl\bin\Release\")); #endif FileVersionInfo ver = FileVersionInfo.GetVersionInfo(Path.Combine(project.SourceBaseDir, "CameraControl.exe")); project.LicenceFile = @"Licenses\DigiCamControlLicence.rtf"; project.Version = new Version(ver.FileMajorPart, ver.FileMinorPart, ver.FileBuildPart, ver.FilePrivatePart); project.MajorUpgradeStrategy = MajorUpgradeStrategy.Default; //project.MajorUpgradeStrategy.NewerProductInstalledErrorMessage = "A version of the digiCamControl already installed. Unistall it first from Control Panel !"; project.MajorUpgradeStrategy.RemoveExistingProductAfter = Step.InstallInitialize; ////project.MajorUpgradeStrategy.UpgradeVersions = VersionRange.ThisAndOlder; ////project.MajorUpgradeStrategy.PreventDowngradingVersions = VersionRange.ThisAndOlder; project.ControlPanelInfo.Manufacturer = "Duka Istvan"; project.OutFileName = string.Format("digiCamControlsetup_{0}", ver.FileVersion); project.ControlPanelInfo.ProductIcon = "logo.ico"; if (System.IO.Directory.Exists(Path.Combine(project.SourceBaseDir, "Branding"))) { appDir.AddDir(new Dir(appFeature, "Branding", new Files(appFeature, @"Branding\*.*"))); } string branding = Path.Combine(project.SourceBaseDir, "branding.xml"); if (System.IO.File.Exists(branding)) { var doc = new XmlDocument(); doc.LoadXml(System.IO.File.ReadAllText(branding)); string name = doc.DocumentElement.SelectSingleNode("/Branding/ApplicationTitle").InnerText; project.ControlPanelInfo.Manufacturer = name; project.OutFileName = string.Format(name.Replace(" ", "_") + "_{0}", ver.FileVersion); appDir.AddFile(new File(appFeature, "branding.xml")); project.Name = name; if (System.IO.File.Exists(Path.Combine(project.SourceBaseDir, "Branding", "logo.ico"))) { project.ControlPanelInfo.ProductIcon = Path.Combine(project.SourceBaseDir, "Branding", "logo.ico"); shortcut.IconFile = Path.Combine(project.SourceBaseDir, "Branding", "logo.ico"); shortcutD.IconFile = Path.Combine(project.SourceBaseDir, "Branding", "logo.ico"); shortcut.Name = name; shortcutD.Name = name; } if (System.IO.File.Exists(Path.Combine(project.SourceBaseDir, "Branding", "Licence.rtf"))) project.ControlPanelInfo.ProductIcon = "Branding\\Licence.rtf"; } project.ResolveWildCards(); Compiler.PreserveTempFiles = true; Compiler.BuildMsi(project); ObsPluginSetup.Execute(); }
/// <summary> /// Creates an instance of Certificate where the certificate is requested or exists at the specified path /// </summary> /// <param name="id">The identifier.</param> /// <param name="feature">The feature.</param> /// <param name="name">The name.</param> /// <param name="storeLocation">The store location.</param> /// <param name="storeName">Name of the store.</param> /// <param name="certificatePath">The certificate path.</param> /// <param name="request">if set to <c>true</c> [request].</param> public Certificate(Id id, Feature feature, string name, StoreLocation storeLocation, StoreName storeName, string certificatePath, bool request) : this(name, storeLocation, storeName, certificatePath, request) { Id = id; Feature = feature; }