【问题标题】:Issue installing MSI silently using msiexec, possible syntax issue?使用 msiexec 静默安装 MSI 时出现问题,可能存在语法问题?
【发布时间】:2019-04-01 21:08:16
【问题描述】:

基本上我想静默安装一个 msi 文件,我已经使用以下行让它工作:

msiexec /i C:\Users\%username%\Downloads\mysqlODBC.msi /passive

我想做的一个补充是在该行的用户名部分添加双引号,以确保正确读取任何可能包含空格的用户名。 ----> "%username%"

问题是我添加此文件时无法安装 msi 文件。在编写带有目录的批处理脚本时,我一直使用它。知道如何使用 msiexec 解决这个问题吗?

链接到我正在尝试静默安装的 MSI 文件:

https://dev.mysql.com/downloads/file/?id=484649

【问题讨论】:

  • 我猜你的意思是msiexec /i "C:\Users\%username%\Downloads\mysqlODBC.msi" /passive,而不是msiexec /i C:\Users\"%username%"\Downloads\mysqlODBC.msi /passive。也就是说,我建议msiexec /i "%UserProfile%\Downloads\mysqlODBC.msi" /passive 也可能对你有用。您的问题到底是什么,因为您似乎没有明确说明您提供的代码究竟是什么起作用或不起作用。
  • 我们能否询问您为什么从“下载”文件夹而不是从 UNC 网络路径调用安装?您肯定不希望每个用户都下载安装程序吗?您想下载一次,检查恶意软件,然后一劳永逸地依赖您下载的内容吗?

标签: batch-file windows-installer


【解决方案1】:

网络安装点?:我不太清楚你想要实现什么。您想在多台机器上自动安装此 MSI 吗?如果是这样,您应该创建一个可通过 UNC 路径访问的网络安装点并运行 administrative image 以提取所有文件并创建一个可用于所有计算机的网络安装点:

msiexec.exe /i "\\Server\Share\Setup.msi" /QN /L*V "C:\Temp\msilog.log"

如果您有那个灌输点,那么确实没有理由为每个用户创建一个文件夹。为什么要重复安装文件?您肯定不希望每个用户都下载安装程序吗?您想下载一次,检查恶意软件,然后一劳永逸地依赖您下载的内容吗?

无论如何,如果你坚持:

msiexec.exe /i "\\Server\Share\%username%\Setup.msi" /QN /L*V "C:\Temp\msilog.log"

快速参数说明

 /i = run install sequence 
 /QN = run completely silently
 /L*V "C:\Temp\msilog.log"= verbose logging at specified path

msiexec.exe:有关 msiexec.exe 命令行的更多详细信息,请参阅此答案:MSIEXEC what is the difference between qn and quiet。它有两种不同的风格——两组不同的开关:旧式和一些更新的、“更友好”的版本。我只使用旧式开关。 There is a tool you can use to generate the command lines.


一些链接

【讨论】:

    【解决方案2】:

    TL;博士:

    pushd "C:\Users\%username%\Downloads\"
    msiexec.exe /a "mysqlODBC.msi" /quiet /norestart /log "%cd%\msiexec_install.log"
    popd
    

    详情:

    虽然完全限定路径应该能够放在双引号之间,但另一种选择是使用 pushdpopd 从包含 MSI 的目录移至一个。

    在上面的示例中,我将进度条(又名/passive)替换为/quiet。出于习惯,我还使用了/a 而不是/i——两者都可以用来安装。我还包含了一个日志到文件选项,这对故障排除很有用。

    【讨论】:

    • 开关 /aadministrative installation。这与安装完全不同。实际上,它是从 MSI 提取文件以创建一个网络安装点,从该点可以在其他系统上运行进一步的安装。它根本不运行正常的安装过程(InstallExecuteSequence),而是提取文件并修改媒体表以使用外部文件而不是内部 cab 进行安装(这意味着运行AdminExecuteSequence)。
    • 我实际上已经尝试将 /quiet 用于这个特定的 msi 文件,但没有成功。批处理文件似乎加载了一秒钟,然后消失了。这是我想悄悄安装的 msi 文件:dev.mysql.com/downloads/file/?id=484649
    • 我认为这些 MySQL 安装程序存在许多问题。让我快速浏览一下。 Here for one。防火墙、服务启动等......其他地方还有更多。 Another oneOne from me here.
    • And here is the answer I was looking for。如何自动安装 MySQL。不确定它是同一个安装程序,但我看到的是一个真正的野兽,充满了非正统的解决方案和一些疯狂。请快速阅读。处理它 - 我记得 - 关于安装程序的发现之旅,安装程序都做错了,但是当你使用它的方法时有点工作。
    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多