能否通过MsiExecWithFlags安装参数禁用MongoDB日志?
关于Inno Setup安装MongoDB时禁用日志的问题
不能直接通过MSI安装参数设置systemLog.quiet=true来禁用MongoDB日志,原因很明确:MongoDB的MSI安装包仅识别自身定义的安装参数(比如你用到的SHOULD_INSTALL_COMPASS、ADDLOCAL),而systemLog.quiet属于mongod的运行配置项,安装程序不会将这类参数同步到服务配置中,直接添加会被忽略。
下面是两种可行的解决办法:
方法一:安装后修改MongoDB配置文件
MongoDB默认会在安装目录的bin文件夹下生成mongod.cfg配置文件,你可以在安装完成后,给该文件的systemLog段添加quiet: true配置。
用Inno Setup实现的话,可以在[Run]段添加批处理命令修改文件,同时重启服务使配置生效:
[Run] Filename: "cmd.exe"; Parameters: "/c echo. >> ""{app}\bin\mongod.cfg"" && echo systemLog.quiet: true >> ""{app}\bin\mongod.cfg"""; Flags: runhidden; AfterInstall: RestartMongoDBService
然后在脚本部分添加重启服务的函数:
[Code] procedure RestartMongoDBService; begin Exec('net.exe', 'stop MongoDB', '', SW_HIDE, ewWaitUntilTerminated, nil); Exec('net.exe', 'start MongoDB', '', SW_HIDE, ewWaitUntilTerminated, nil); end;
如果要完全禁用日志(连严重错误都不输出),可以把日志路径指向Windows的空设备NUL,修改后的配置段如下:
systemLog: destination: file path: NUL quiet: true
方法二:修改MongoDB服务的启动参数
MongoDB安装后会创建Windows服务,你可以给服务的启动命令直接添加--quiet参数,效果和配置文件里的systemLog.quiet=true一致。
用Inno Setup实现的话,在[Run]段添加命令修改服务配置并重启:
[Run] Filename: "sc.exe"; Parameters: "config MongoDB binPath= """"{app}\bin\mongod.exe"" --service --config=""{app}\bin\mongod.cfg"" --quiet"""""; Flags: runhidden; Filename: "net.exe"; Parameters: "stop MongoDB"; Flags: runhidden; Filename: "net.exe"; Parameters: "start MongoDB"; Flags: runhidden;
内容的提问来源于stack exchange,提问作者guidempty
相关产品推荐
相关产品推荐

