1

我想知道如何在使用 NSIS 安装文件之前运行一些东西。

我知道 .onInit 函数。该功能在安装程序首次启动时运行。那不是我想要的。我想在用户单击安装按钮之后但在文件实际安装之前运行一些东西。

更具体。我有一个 Windows 服务。当安装程序升级 Windows 服务时,我需要它来停止服务 - 但只有在用户承诺安装时 - 而不是在第一次启动安装程序时。然后它可以升级文件并最终(重新)再次启动服务。这似乎应该是一个常见的要求,但我一直找不到任何东西。

如果重要的话,我使用的是 MUI 而不是经典的。

4

2 回答 2

3

所有部分都在 instfiles 页面上执行,并且它们的执行顺序与您的源 .nsi 相同,因此您可以添加另一个(隐藏)部分:

Section
# Do service stuff...
SectionEnd

Section "Required Files"
File xyz.abc
SectionEnd

Section
# Do service stuff...
SectionEnd
于 2013-06-27T01:36:57.933 回答
0

正如安德斯所说 - 创建不可见(隐藏)部分,这是脚本中所有部分的第一个部分,并在那里停止服务。

当其他部分将被执行时,服务将被停止。

提示:也许您应该等待几秒钟让服务管理器有时间停止服务。

于 2013-06-27T08:53:04.137 回答