Пример #1
0
        static void Main()
        {
            var selectedExe = "MifareWindowsTool.exe";
            var solDir      = System.IO.Directory.GetParent(System.IO.Directory.GetParent(System.IO.Directory.GetParent(System.IO.Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName).FullName).FullName).FullName + "\\MifareWindowsTool";
            var buildDir    = System.IO.Path.Combine(solDir, "bin\\Release");
            var project     = new ManagedProject("MifareWindowsTool",
                                                 new Dir(@"%ProgramFiles%\AVXTEC\MWT"
                                                         , new Files(buildDir + @"\*.*")));

            project.SetNetFxPrerequisite("NETFRAMEWORK45 >= '#461808'", "Please install .Net 4.7.2 First");
            project.ProductId = Guid.NewGuid();
            project.GUID      = new Guid("6fe30b47-2577-43ad-9095-1861ba25779b");
            project.ManagedUI = new ManagedUI();
            project.Name      = "MWT";
            project.ManagedUI.InstallDialogs
            .Add(Dialogs.InstallDir)
            .Add(Dialogs.Progress)
            .Add(Dialogs.Exit);

            project.ManagedUI.ModifyDialogs.Add(Dialogs.MaintenanceType)
            .Add(Dialogs.Progress)
            .Add(Dialogs.Exit);
            var IconFilename = System.IO.Path.Combine(solDir, "MWT.ico");

            var desktopShortcut = new FileShortcut(selectedExe, "%Desktop%")
            {
                Name = "MWT"
            };
            var programMenuShortCut = new FileShortcut(selectedExe, @"%ProgramMenu%")
            {
                Name = $"MWT"
            };

            if (!string.IsNullOrWhiteSpace(IconFilename))
            {
                desktopShortcut.IconFile     = IconFilename;
                programMenuShortCut.IconFile = IconFilename;
            }
            project.ResolveWildCards(true)
            .FindFirstFile(selectedExe)
            .Shortcuts = new[] {
                desktopShortcut,
                programMenuShortCut
            };

            project.ControlPanelInfo.UrlInfoAbout = "https://github.com/xavave/Mifare-Windows-Tool";
            project.ControlPanelInfo.ProductIcon  = IconFilename;
            project.ControlPanelInfo.Contact      = "AVXTEC";
            project.ControlPanelInfo.Manufacturer = "AVXTEC";
            project.BuildMsi();
        }
Пример #2
0
        public void LoadShortcutsFromRegistry()
        {
            RegistryKey rootKey = RegistryHelper.OpenAppPaths();

            string [] keyNames = rootKey.GetSubKeyNames();

            foreach (string keyName in keyNames)
            {
                if (Regex.Match(keyName, @"\.exe$", RegexOptions.IgnoreCase).Success)
                {
                    RegistryKey key      = rootKey.OpenSubKey(keyName, true);
                    Shortcut    shortcut = null;

                    //figure out the shortcut type from the type key
                    ShortcutType type = (ShortcutType)Enum.Parse(typeof(ShortcutType), key.GetValue(Shortcut.TypeKeyName).ToString());

                    //create appropriate shortcut instance based on type
                    if (type == ShortcutType.Batch)
                    {
                        shortcut = new BatchShortcut(key);
                    }
                    else if (type == ShortcutType.File)
                    {
                        shortcut = new FileShortcut(key);
                    }
                    else if (type == ShortcutType.Folder)
                    {
                        shortcut = new FolderShortcut(key);
                    }
                    else if (type == ShortcutType.WebPage)
                    {
                        shortcut = new WebPageShortcut(key);
                    }
                    else if (type == ShortcutType.MSEdge)
                    {
                        shortcut = new MSEdgeShortcut(key);
                    }

                    this.Add(shortcut);
                }
            }

            rootKey.Close();
        }
Пример #3
0
        private void ChooseFileClicked(object sender, RoutedEventArgs e)
        {
            this.shortcut = (FileShortcut)this.Shortcut;

            OpenFileDialog dialog = new OpenFileDialog();

            if (File.Exists(this.shortcut.Path))
            {
                dialog.InitialDirectory = System.IO.Path.GetDirectoryName(this.shortcut.Path);
            }

            dialog.FileName        = this.shortcut.Path;
            dialog.CheckFileExists = true;
            dialog.CheckPathExists = true;
            bool?result = dialog.ShowDialog();

            if (result.HasValue && result.Value)
            {
                this.shortcut.Path = dialog.FileName;
            }
        }
Пример #4
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),
                                          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

            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.LicenceFile = "Branding\\Licence.rtf";
                }
            }
            project.InstallScope = InstallScope.perMachine;
            project.ResolveWildCards();
            Compiler.PreserveTempFiles = false;
            string productMsi = Compiler.BuildMsi(project);
            string obsMsi     = ObsPluginSetup.Execute();

            var bootstrapper = new Bundle(project.Name,
                                          new PackageGroupRef("NetFx46Web"),
                                          new MsiPackage(Path.Combine(Path.GetDirectoryName(productMsi), "IPCamAdapter.msi")),
                                          new MsiPackage(obsMsi)
            {
                Id = "ObsPackageId",
            },
                                          new MsiPackage(productMsi)
            {
                Id = "MyProductPackageId",
            });
            bootstrapper.Copyright   = project.ControlPanelInfo.Manufacturer;
            bootstrapper.Version     = project.Version;
            bootstrapper.UpgradeCode = project.UpgradeCode.Value;
            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();
        }
Пример #5
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     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, "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

            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";

            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"));
                appDir.AddDir(new Dir(appFeature, "Branding",
                                      new Files(appFeature, @"Branding\*.*")));
                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);
        }
Пример #6
0
        static void Main()
        {
            var selectedExe = "MifareWindowsTool.exe";
            var solDir      = System.IO.Directory.GetParent(System.IO.Directory.GetParent(System.IO.Directory.GetParent(System.IO.Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName).FullName).FullName).FullName + "\\MifareWindowsTool";
            var mode        = "Release";

#if DEBUG
            mode = "Debug";
#endif

            var     buildDir = System.IO.Path.Combine(solDir, $"bin\\{mode}");
            var     exepath  = System.IO.Path.Combine(buildDir, selectedExe);
            Feature binaries = new Feature("MWT Binaries");
            var     project  = new Project("MifareWindowsTool",
                                           new Dir(@"%ProgramFiles%\AVXTEC\MWT"
                                                   , new Files(buildDir + @"\*.*")
                                                   , new WixSharp.File(new Id("MWT_exe"), binaries, exepath)),
                                           new LaunchApplicationFromExitDialog(exeId: "MWT_exe", description: "Launch Mifare Windows Tool (MWT)")
                                           , new InstalledFileAction("MWT_exe", "")
                                           );
            project.SetNetFxPrerequisite("WIX_IS_NETFRAMEWORK_462_OR_LATER_INSTALLED >= '#528040'", "requires .NET Framework 4.8 or higher.");
            project.ProductId = Guid.NewGuid();

            project.GUID = new Guid("6fe30b47-2577-43ad-9095-1861ba25779b");
            var strAssemblyFileVersion = AssemblyName.GetAssemblyName(exepath).Version;
            project.Version = strAssemblyFileVersion;
            var pName = $"MWT v{strAssemblyFileVersion}";
            project.Name         = pName;
            project.MajorUpgrade = new MajorUpgrade()
            {
                AllowDowngrades = true,
                Schedule        = UpgradeSchedule.afterInstallInitialize,
            };
            project.UI = WUI.WixUI_InstallDir;
            project.RemoveDialogsBetween(NativeDialogs.WelcomeDlg, NativeDialogs.InstallDirDlg);

            var IconFilename    = System.IO.Path.Combine(solDir, "MWT.ico");
            var desktopShortcut = new FileShortcut(selectedExe, "%Desktop%")
            {
                Name = pName
            };
            var programMenuShortCut = new FileShortcut(selectedExe, @"%ProgramMenu%")
            {
                Name = pName
            };
            if (!string.IsNullOrWhiteSpace(IconFilename))
            {
                desktopShortcut.IconFile     = IconFilename;
                programMenuShortCut.IconFile = IconFilename;
            }
            project.ResolveWildCards(true)
            .FindFirstFile(selectedExe)
            .Shortcuts = new[] {
                desktopShortcut,
                programMenuShortCut
            };

            project.ControlPanelInfo.UrlInfoAbout = "https://github.com/xavave/Mifare-Windows-Tool";
            project.ControlPanelInfo.ProductIcon  = IconFilename;
            project.ControlPanelInfo.Contact      = "AVXTEC";
            project.ControlPanelInfo.Manufacturer = "AVXTEC";
            var outputpath = project.BuildMsi();
            if (outputpath != null)
            {
                Process.Start(Path.GetDirectoryName(outputpath));
            }
        }