重新启动计算机后出现的引导程序窗口

时间:2021-05-04 08:49:10

标签: wix bootstrapper

这种行为是如何设置的?我找不到如何禁用引导程序在重新启动时启动。我将安装程序,关闭计算机,第二天,当我启动计算机时,会出现引导程序窗口。即使它会卸载引导程序。当我在测试中多次安装它时,后来我有几个窗口。但是这个弹窗并不总是发生,我不知道它取决于什么。

编辑

在 RegisterBegin 之后查看日志:

<块引用>

会话开始,注册码: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{bf97c7e8-2ef4-4439-9504-96a7736c10f4}, 选项:0x4,禁用恢复:无注册捆绑依赖项 提供者:{bf97c7e8-2ef4-4439-9504-96a7736c10f4},版本:1.0.120.0 更新会话,注册密钥: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{bf97c7e8-2ef4-4439-9504-96a7736c10f4}, 恢复:活动,重启启动:否,禁用恢复:否

你看到 disable resume: No,我找不到任何关于它的信息,但也许它会导致应用程序在重启后运行。

Edit2

这是因为引导程序添加了寄存器 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce。

但找不到如何关闭它。

1 个答案:

答案 0 :(得分:0)

最终,这样做的原因是为引导程序添加了 RunOnce 注册表。网上写到,据开发者称,这是对安装成功的确认。但就我而言,这对我来说是不必要的,因为我自己进行了配置后测试。为了防止这种情况发生,我连接到 OnRegisterComplete 事件并删除了所有包含我的安装程序名称的寄存器。

但是,这需要以管理权限运行引导程序。

    private void OnRegisterComplete(object sender, RegisterCompleteEventArgs e)
    {
        try
        {
            string registryKey = @"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce";
            RegistryKey key32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
            RegistryKey key = key32.OpenSubKey(registryKey, true);
            if (key != null)
            {
                var names = key.GetValueNames();
                for (int i = 0; i < names.Length; i++)
                {
                    var value = key.GetValue(names[i]);
                    if (value.ToString().Contains("NameInstaller.exe"))
                        key.DeleteValue(names[i]);
                }
                key.Close();
            }
        }
        catch (Exception ex)
        {
        }
    }
相关问题