需要编写一些 MSI 安装脚本和一些注册表编辑

需要编写一些 MSI 安装脚本和一些注册表编辑

我需要定期更新一大堆浏览器插件和其他程序。我想我也可以用批处理脚本来自动化这个过程。我找到了 Reader、Java、Flash、Chrome、Firefox 等的 MSI(光是找到 MSI 就费了一番功夫)。在 MSI 安装方面,我完全是个新手。

据我所知,我应该只需这样做即可:

msiexec /i \\server\directory\FlashFF.msi /qn /norestart
msiexec /i \\server\directory\FlashIE.msi /qn /norestart
msiexec /i \\server\directory\Java.msi /qn /norestart
msiexec /i \\server\directory\Reader.msi /qn /norestart

但对我来说这不起作用。显然 MSI 系统不像 apt-get 或我熟悉的其他工具那么明显。我该如何编写这些安装脚本?

此外,我还发现我可以进行一些注册表编辑,让 Reader 和 Java 的更新服务停止运行。我们的学生没有管理员权限,所以这些更新服务除了制造麻烦外什么都不做。我也可以编写这些编辑脚本吗?如果可以,怎么做?

答案1

尝试在每个命令后附加 Call 和 wait 命令。MSIEXEC 通常会直接退出到控制台,这会导致其他 msiexecs 失败,因为已经看到正在安装某些东西:

"start /wait msiexec /i \\server\directory\FlashFF.msi /qn /norestart"

对于注册表更新,有两种方法可以执行此操作:

  1. 导出注册表项,然后从批处理脚本中调用它们
  2. 使用 Reg Add,您可以调用帮助系统来reg add /?获取语法:

REG ADD 键名 [/v 值名 | /ve] [/t 类型] [/s 分隔符] [/d 数据] [/f]

KeyName [\Machine]FullKey Machine 远程计算机的名称 - 省略当前计算机的默认值。远程计算机上只有 HKLM 和 HKU 可用。FullKey ROOTKEY\SubKey ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ] SubKey 所选 ROOTKEY 下的注册表项的全名。

/v 要添加的选定项下的值名称。

/ve 为键添加一个空值名称(默认)。

/t RegKey 数据类型 [ REG_SZ | REG_MULTI_SZ | REG_EXPAND_SZ | REG_DWORD | REG_QWORD | REG_BINARY | REG_NONE ] 如果省略,则假定为 REG_SZ。

/s 指定一个字符作为 REG_MULTI_SZ 数据字符串中的分隔符。如果省略,则使用“\0”作为分隔符。

/d 要分配给正在添加的注册表 ValueName 的数据。

/f 强制覆盖现有的注册表项,无需提示。

例子:

REG ADD \ABC\HKLM\Software\MyCo 在远程计算机 ABC 上添加密钥 HKLM\Software\MyCo

REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead 添加一个值(名称:Data,类型:REG_BINARY,数据:fe340ead)

REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail 添加一个值(名称:MRU,类型:REG_MULTI_SZ,数据:fax\0mail\0\0)

REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^% 添加一个值(名称:Path,类型:REG_EXPAND_SZ,数据:%systemroot%)注意:在扩展字符串中使用插入符号(^)

相关内容