办公软件
给200台机子装软件,静默参数抠了三天,发现MSI和EXE要分开伺候
74 0 13
这两天接了个活,给分公司200台机子批量装软件,有内部工具也有第三方客户端。本来以为写好脚本一把梭就行,结果光静默安装参数就抠了三天,踩的坑比预想多得多。
先说结论:MSI 和 EXE 要分开处理,参数不能混用,更不能信网上抄来的万能模板。
我分了三台机子做对照测试:Win10 22H2、Win11 23H2、还有一台没升过补丁的老Win10。结果如下:
- MSI 包:
msiexec /i xxx.msi /qn /norestart基本通用,但要注意/qn和/qb的区别——/qb会弹进度条,如果脚本里带/qb,远程部署时用户还是会看到窗口,容易以为中毒了。我统一改成/qn加/norestart,装完用msiexec /x测卸载,发现卸载参数得单独写/x {ProductCode},不能跟安装参数混。 - EXE 包:最坑。不同厂商的静默参数五花八门,
/S、/silent、/verysilent、-q、/quiet都见过,有的还分大小写。我拿一个内部工具试了六种参数,只有/S有效,但装完它会自动拉起主程序,得在脚本里加taskkill兜底。 - 带配置文件的安装包:有个客户端要求先放一个
config.ini到同目录,再用setup.exe /LOADINF=config.ini装。我第一次没放文件,装完直接连不上服务器,排查半小时才发现是安装路径被写死到了 C 盘默认目录。
另外两个细节:
- 路径带空格一定要加引号,
/D=参数必须放最后,前面不能有别的参数,否则会被吞掉。 - 日志要开,
/log install.log或者/L*v log.txt,不然装失败了只能靠猜。我靠日志定位到一个包在 Win11 上因为 .NET 版本不够直接静默退出,退出码 0,坑死人。
最后脚本跑下来,200 台里有 7 台失败,全是 Win10 老版本缺补丁,补完再跑一遍就过了。
问一句:你们批量部署时,遇到那种死活不认静默参数的 EXE,是拿工具强拆还是直接换安装包? 我手里还压着两个没搞定的,想听听大家的土办法。
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
