Defines WiX Feature.

All installable WiX components belong to one or more features. By default, if no Features are defined by user, Wix# creates "Complete" feature, which contains all installable components.

Inheritance: WixEntity
Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
 /// <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;
 }
Ejemplo n.º 6
0
Archivo: User.cs Proyecto: Eun/WixSharp
 /// <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;
 }
Ejemplo n.º 7
0
Archivo: User.cs Proyecto: Eun/WixSharp
 /// <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;
 }
Ejemplo n.º 8
0
 public Files(Feature feature, string sourcePath, params string[] excludeFileMasks)
 {
     IncludeMask = IO.Path.GetFileName(sourcePath);
     Directory = IO.Path.GetDirectoryName(sourcePath);
     //ExcludeMasks = excludeFileMasks;
     Feature = feature;
 }
Ejemplo n.º 9
0
 /// <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;
 }
Ejemplo n.º 10
0
Archivo: Dir.cs Proyecto: Eun/WixSharp
        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;
                }
            }
        }
Ejemplo n.º 11
0
 /// <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;
 }
Ejemplo n.º 12
0
 /// <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;
 }
Ejemplo n.º 13
0
 /// <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;
 }
Ejemplo n.º 14
0
 /// <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;
 }
Ejemplo n.º 15
0
 /// <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;
 }
Ejemplo n.º 16
0
 /// <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;
 }
Ejemplo n.º 17
0
 /// <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;
 }
Ejemplo n.º 18
0
 /// <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;
 }
Ejemplo n.º 19
0
 /// <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);
 }
Ejemplo n.º 20
0
 /// <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;
 }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
 /// <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;
 }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
 /// <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;
 }
Ejemplo n.º 25
0
 /// <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;
 }
Ejemplo n.º 26
0
 /// <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;
 }
Ejemplo n.º 27
0
 /// <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;
 }
Ejemplo n.º 28
0
 /// <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;
 }
Ejemplo n.º 29
0
Archivo: User.cs Proyecto: Eun/WixSharp
 /// <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;
 }
Ejemplo n.º 30
0
 /// <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;
 }
Ejemplo n.º 31
0
Archivo: User.cs Proyecto: Eun/WixSharp
 /// <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;
 }
Ejemplo n.º 32
0
 /// <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;
 }
Ejemplo n.º 33
0
 /// <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;
 }
Ejemplo n.º 34
0
 /// <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;
 }
Ejemplo n.º 35
0
 /// <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;
 }
Ejemplo n.º 36
0
 /// <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;
 }
Ejemplo n.º 37
0
 /// <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);
 }
Ejemplo n.º 38
0
 /// <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;
 }
Ejemplo n.º 39
0
Archivo: Dir.cs Proyecto: Eun/WixSharp
 /// <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;
 }
Ejemplo n.º 40
0
 /// <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;
 }
Ejemplo n.º 41
0
        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();
        }
Ejemplo n.º 42
0
 /// <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);
 }
Ejemplo n.º 43
0
        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();
        }
Ejemplo n.º 44
0
 /// <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;
 }