问题标签 [restartmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
528 浏览

winapi - 使用 RestartManager 手动重启应用程序和/或升级时

到目前为止,我一直在使用自己的重新启动应用程序实用程序。

但我现在看到自 Vista 以来就有一个专门的重启管理器。

这对我很有用,因为我现在将我的应用程序限制在 Windows 7 或更高版本。

目前,当用户更改应用程序语言时,我提供手动重启。

此外,在他们下载更新的安装程序(Inno Setup)后,它会关闭应用程序并启动安装程序。

我不知道如何用 MFC 重启管理器来做这些事情。它提到了向我的 MFC 应用程序添加一行代码以及如何模拟场景。但是我的具体情况呢?

如果可以请指导我一个好的教程?

抱歉,如果我的问题不在主题范围内,我将删除。

0 投票
0 回答
63 浏览

linux - 在特定时间启动程序

最近我有一个程序每天都会用一个while循环重新启动,每次程序关闭时,while循环都会让它重新启动。

但我想将其更改为它只会在指定屏幕中每天的特定时间启动(screen -r 39191)

当前代码:

我正在尝试做这样的事情

这在 Linux(Ubuntu)上可行吗?提前致谢

0 投票
1 回答
606 浏览

windows - Windows Installer 如何在卸载期间关闭应用程序?

卸载我的应用程序时,如果它正在运行,它会尝试停止它:

在此处输入图像描述

可悲的是,自动关闭并没有真正起作用,它显示了这个错误:

在此处输入图像描述

我的应用程序消失了,窗口、托盘栏图标都消失了。但我仍然可以在进程列表中看到它们。

我猜 Windows 会向应用程序发送一个信号以正常退出并且 UI 会这样做,但是有一些挥之不去的线程阻止进程终止。

Windows Installer 如何在卸载期间关闭应用程序?

一旦我知道这一点,我想在调试我的应用程序时模拟它以查看发生了什么。这是一个合理的计划吗?

0 投票
3 回答
4301 浏览

wix - Windows Installer - 安装包时避免使用 FileinUse 对话框

当有文件的更新补丁必须用现有文件替换时,如果其中一个文件正在被任何进程使用,则会弹出一个正在使用的文件对话框。我想避免该对话框并让该文件排队等待安装,以便可以在系统重新启动时安装。我已经读过,在重新启动时排队更新文件是 Windows 安装程序的内置功能。有人可以建议我删除该 FileInUse 对话框的方法。我尝试将“MsiRMFilesInUse”属性设置为“0”,但没有成功。

0 投票
1 回答
136 浏览

windows - 如何捕获哪些 dll 导致服务器意外重启

我有一个 Windows Server 2012 R2。当我安装 msi 时,Windows 安装程序会提示我系统将在 60 秒后重新启动。我怎样才能捕捉到哪些 dll 正在强制机器重新启动?或者我们如何在文件夹级别提供句柄以了解哪些 dll 是强制重启的罪魁祸首?

我试过这个Get-EventLog -Logname System -Newest 1 -Source “USER32” | Format-List 这仅输出有关进程、时间、用户名等的信息。我想知道问题背后的特定 dll 名称。我怎样才能做到这一点?

在此先感谢您的帮助!

0 投票
1 回答
1406 浏览

wix - wix Restart Manager 成功关闭应用程序但说它不能

在我的 wix 项目中,我有一个文件“connect.exe”,通常会在卸载或更新期间运行。在卸载和主要更新期间,Wix 将在关闭之前提示通常的“在继续安装之前应关闭以下应用程序”。

此对话框成功关闭程序:

但紧接着,它会抛出一个错误,说它无法关闭应用程序:

即使应用程序在系统上明显关闭。此外,在安装程序完成更新后进行重大更新时,它不会重新启动它。

其他一切似乎都很好。

值得注意的是,connect.exe 程序运行的窗口大部分时间都是隐藏的。它主要用作通过 Windows 系统服务运行的 service.exe 的屏幕显示。

我该如何解决这个问题?我没有在 connect.exe 应用程序端处理什么吗?

connect.exe组件入口:

0 投票
1 回答
1452 浏览

windows-installer - 如何在 MSI Installshield 重新启动管理器对话框中禁用“不关闭应用程序”选项

如何禁用 MSI installshield 重新启动管理器对话框中的“不关闭应用程序”选项,以便用户被迫选择第一个选项 - 自动关闭并尝试重新启动应用程序,以便用户在安装过程中不必意外要求重新启动。完全禁用该对话框会显示“ FilesInUse ”对话框,忽略该对话框会导致重新启动管理器再次出现。所以最优雅的选择可能是完全禁用第二个选项。

我正在使用 installshield 2015 SP2。

在此处输入图像描述

0 投票
2 回答
436 浏览

winapi - 在什么情况下 RmGetList 为 lpdwRebootReasons 输出参数返回 2?

背景

我正在设计一个 Inno Setup 安装程序来安装Cygwin服务,我对从 Windows重新启动管理器API 看到的行为感到困惑。

具体来说,当服务正在运行(使用cygrunsrv实用程序启动)时,RmGetList API 函数RmRebootReasonSessionMismatch为其lpdwRebootReasons输出参数返回 2 ( )。这个输出参数是一个类型的枚举,RM_REBOOT_REASONMSDN上对该RmRebootReasonSessionMismatch值的描述是:

Inno Setup 日志文件包含如下行:

Inno Setup 然后继续尝试替换正在使用的文件,就好像根本没有使用 Restart Manager。

我对这个输出值感到困惑,因为在我测试的两台不同的机器上(Windows 10 1909 x64 和 Windows Server 2012 R2),没有终端服务器/远程桌面用户登录。

如果我停止服务并启动另一个可执行文件(在要被安装程序替换的文件集中),RmGetList 返回 0 ( RmRebootReasonNone) lpdwRebootReasons,Inno Setup 显示正在使用的文件的正常对话框并允许用户选择自动关闭它们。

Process Explorercygrunsrv.exe显示在会话 0 和System完整性级别中运行的两个进程(及其启动的进程)。两者都是控制台子系统可执行文件。

问题

  1. RmGetList 在什么条件下RmRebootReasonSessionMismatch为其lpdwRebootReasons输出参数返回 2 ( )?(我试图理解为什么在服务运行时会发生这种情况。)

  2. 此值是否会导致整个 Restart Manager 会话失败,或者即使 Restart Manager 认为应用程序正在一个或多个不同的会话中运行,它是否可以继续?

0 投票
0 回答
109 浏览

service - 如果有挂起的 Windows 重新启动,Inno Setup 不会重新启动服务

我们创建了一个 Inno Setup 脚本来安装和更新 Windows 服务。可以手动使用相同的安装程序,也可以从自动安装/更新解决方案中使用。

使用安装程序更新现有安装时,安装程​​序会在更新之前正确终止正在运行的服务进程。此服务依赖于 Windows 重新启动管理器自动重新启动,并且 Inno Setup 能够在安装完成后重新启动它。

在某些情况下,使用安装程序部署的某些文件无法即时更新,因为它们需要重新启动 Windows 才能完成。我们决定不强制系统重启,并请尽快提示用户重启。一切都按预期工作,除了 Inno Setup 由于等待 Windows 重新启动而取消服务重新启动,即使重新启动后没有需要更新的直接进程依赖项也是如此。

从 Inno 设置日志:

虽然这可能有逻辑,但服务没有自动重新启动这一事实代表了我们场景中的一个问题,即强制用户立即重新启动,这不是我们想要的。

这是命令行参数:/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /RESTARTEXITCODE=123456 /RESTARTAPPLICATIONS

这是安装日志的一部分: 在此处输入图像描述

/RESTARTAPPLICATIONS 命令行标志对此行为没有影响,因为无论该标志是否存在,只要没有挂起的重新启动,服务应用程序都会正确重新启动。

一种解决方案可能是在 Run 部分调用外部脚本或使用 Pascal 代码重新启动服务,但我们希望尽可能避免它。

我们错过了什么吗?即使有挂起的重新启动,是否有办法让服务重新启动始终成功?

0 投票
0 回答
82 浏览

c# - 使用 C#,如何确定是哪个进程锁定了一个文件夹?

我正在处理一些应该删除的锁定文件和文件夹。目前我正在将此代码与重新启动管理器一起使用来检查哪个进程锁定了下面的文件,但是当我将文件路径设置为文件夹路径时它会引发错误。我可以知道是否有办法找出锁定文件夹的进程吗?

用法:

和 Win32Processes 类: