我正在使用Inno Setup创建安装程序和更新程序
我希望更新程序能够作为服务和正常进程运行(取决于我是否以管理员身份运行安装程序)。
我创建了能够作为服务和正常流程运行的应用程序,因此我可以假设这在inno设置中也是可以实现的。
我可以创建一个行为类似于服务和正常流程的安装程序吗?
答案 0 :(得分:2)
Inno安装程序无法运行作为服务,因为它不是服务应用程序。
可能让服务流程从非用户上下文启动Inno安装程序到例如。自动升级。但是,这样做需要非常小心。
例如,您必须:
使用/VERYSILENT /SUPPRESSMSGBOXES /NORESTART
启动安装程序以隐藏所有标准用户界面。
使用AppMutex
(在Global
命名空间中使用相应的互斥锁)确保安装程序在启动安装程序后等待服务自行终止。
确保启动过程已提升为admin(请注意,这是一个安全风险,因为这意味着该服务在正常操作期间以管理员权限运行)。
确保在启动安装程序之前,该服务非常确定它正在运行合法的升级包而不是某些恶意软件。强烈建议进行数字签名验证。
确保脚本不使用MsgBox
或以其他方式显示UI。 (如果需要进行交互式安装,请使用SuppressibleMsgBox
。)