我想知道如何在使用NSIS安装文件之前运行某些东西。
我知道.onInit函数。该功能在安装程序首次启动时运行。那不是我想要的。在用户单击安装按钮之后但在实际安装文件之前,我想运行一些东西。
更具体一点。我有一个Windows服务。当安装程序升级Windows服务时,我需要它来停止服务 - 但只有在用户提交安装时 - 而不是在第一次启动安装程序时。然后它可以升级文件,最后(重新)再次启动服务。这似乎应该是一个常见的要求,但我找不到任何东西。
如果重要的话我使用的是MUI而不是经典。
答案 0 :(得分:3)
所有部分都在instfiles页面上执行,它们的执行顺序与源.nsi相同,所以你可以添加另一个(隐藏的)部分:
Section
# Do service stuff...
SectionEnd
Section "Required Files"
File xyz.abc
SectionEnd
Section
# Do service stuff...
SectionEnd
答案 1 :(得分:0)
正如Anders所说 - 创建不可见(隐藏)部分,这是您脚本中所有部分的首要部分,并在那里停止服务。
当执行其他部分时,服务将被停止。
提示:也许你应该等几秒钟让服务经理有时间停止服务。