C# 通过Wix Sharp创建自动更新

C# 通过Wix Sharp创建自动更新,c#,wix,windows-installer,auto-update,wixsharp,C#,Wix,Windows Installer,Auto Update,Wixsharp,我有一个使用Wix夏普创建的安装程序。有时应用程序必须更新,找到更新的方法对我来说很重要。我认为最好的方法是再创建一个应用程序“appupdater”,它将检查应用程序的版本,如果有新版本,它将下载并安装它。如何使用Wix Sharp创建updater.msi?我必须在哪里上传我的.msi更新程序以供“应用程序更新程序”检查?代码如下: static void Main() { var project = new ManagedProject("MyProdu

我有一个使用Wix夏普创建的安装程序。有时应用程序必须更新,找到更新的方法对我来说很重要。我认为最好的方法是再创建一个应用程序“appupdater”,它将检查应用程序的版本,如果有新版本,它将下载并安装它。如何使用Wix Sharp创建updater.msi?我必须在哪里上传我的.msi更新程序以供“应用程序更新程序”检查?代码如下:

    static void Main()
    {


        var project = new ManagedProject("MyProduct",
                         new Dir(@"%ProgramFiles%\My Company\My Product",
                             new Files(@"C:\Users\1\source\repos\ParentControl\ParentsControl\*.*")));

        project.GUID = new Guid("6fe30b47-2577-43ad-9095-1861ba25889b");

        project.ManagedUI = ManagedUI.Empty;    //no standard UI dialogs
        project.ManagedUI = ManagedUI.Default;  //all standard UI dialogs

        //custom set of standard UI dialogs
        project.ManagedUI = new ManagedUI();

        project.ManagedUI.InstallDialogs.Add(Dialogs.Welcome)
                                        .Add(Dialogs.Licence)
                                        .Add(Dialogs.SetupType)
                                        .Add(Dialogs.Features)
                                        .Add(Dialogs.InstallDir)
                                        .Add(Dialogs.Progress)
                                        .Add(Dialogs.Exit);

        project.ManagedUI.ModifyDialogs.Add(Dialogs.MaintenanceType)
                                       .Add(Dialogs.Features)
                                       .Add(Dialogs.Progress)
                                       .Add(Dialogs.Exit);

        project.Load += Msi_Load;
        project.BeforeInstall += Msi_BeforeInstall;
        project.AfterInstall += Msi_AfterInstall;

        //project.SourceBaseDir = "<input dir path>";
        //project.OutDir = "<output dir path>";

        project.BuildMsi();
    }

    static void Msi_Load(SetupEventArgs e)
    {
        if (e.IsUninstalling)
        {
            var w = new Ask();
            if(w.ShowDialog()!=DialogResult.Yes)
            {
                MessageBox.Show("Bad password!");
                e.Result = ActionResult.SkipRemainingActions;
            }

        }
        if (!e.IsUISupressed && !e.IsUninstalling)
            MessageBox.Show(e.ToString(), "Load");

    }

    static void Msi_BeforeInstall(SetupEventArgs e)
    {
        if (!e.IsUISupressed && !e.IsUninstalling)
            MessageBox.Show(e.ToString(), "BeforeInstall");
    }

    static void Msi_AfterInstall(SetupEventArgs e)
    {
        if (!e.IsUISupressed && !e.IsUninstalling)
            MessageBox.Show(e.ToString(), "AfterExecute");

    }
static void Main()
{
var项目=新的ManagedProject(“MyProduct”,
新目录(@“%ProgramFiles%\My Company\My Product”,
新文件(@“C:\Users\1\source\repos\ParentControl\ParentsControl\*.*));
project.GUID=新GUID(“6fe30b47-2577-43ad-9095-1861ba25889b”);
project.ManagedUI=ManagedUI.Empty;//没有标准的UI对话框
project.ManagedUI=ManagedUI.Default;//所有标准UI对话框
//自定义标准UI对话框集
project.ManagedUI=新ManagedUI();
project.ManagedUI.InstallDialogs.Add(Dialogs.Welcome)
.Add(对话框.许可证)
.Add(Dialogs.SetupType)
.Add(对话框.功能)
.Add(Dialogs.InstallDir)
.Add(对话框.进度)
.Add(对话框.Exit);
project.ManagedUI.ModifyDialogs.Add(Dialogs.MaintenanceType)
.Add(对话框.功能)
.Add(对话框.进度)
.Add(对话框.Exit);
project.Load+=Msi_Load;
project.beforeeinstall+=Msi\u beforeeinstall;
project.AfterInstall+=Msi_AfterInstall;
//project.SourceBaseDir=“”;
//project.OutDir=“”;
project.BuildMsi();
}
静态无效Msi_加载(SetupEventArgs e)
{
如果(例如,正在卸载)
{
var w=新的Ask();
如果(w.ShowDialog()!=DialogResult.Yes)
{
显示(“错误密码!”);
e、 结果=ActionResult.skipPreMiningActions;
}
}
如果(!e.isuisuppressed&&!e.IsUninstalling)
Show(例如ToString(),“Load”);
}
安装前静态无效Msi_(SetupEventArgs e)
{
如果(!e.isuisuppressed&&!e.IsUninstalling)
Show(例如ToString(),“安装前”);
}
静态无效Msi_安装后(SetupEventArgs e)
{
如果(!e.isuisuppressed&&!e.IsUninstalling)
Show(例如ToString(),“AfterExecute”);
}

您是否考虑过向应用程序中添加更新的应用程序?wyupdate处理检测更新、下载和重新启动应用程序