【问题标题】:Microsoft Installer command line string parameter not working?Microsoft Installer 命令行字符串参数不起作用?
【发布时间】:2019-04-25 07:44:22
【问题描述】:

所以我正在尝试使用我的 msi 运行一个完全安装,似乎我可以轻松地为我拥有的参数传递一个数字,但我似乎无法传递一个字符串......我试过了使用单引号 ' 和双引号 "

msiexec /i 'My Installer.msi' /quiet JREPATH="c:\\BLA BLA"

这个和单引号都返回这个:

现在根据这篇文章:https://docs.microsoft.com/en-us/windows/desktop/msi/command-line-options

它应该可以工作......

文字字符串的属性值必须用引号引起来 分数。在标记之间的字符串中包含任何空格。

msiexec /i A:\Example.msi PROPERTY="Embedded White Space"

MSI 没有问题,我假设这是因为如果我传递一个数字..它可以工作...

msiexec /i 'My Installer.msi' /quiet JREPATH=3

稍后编辑:

当我在参数的值中有一个 空格 时,似乎出现了问题。例如,下面的示例可以正常工作:

msiexec /i "WKFS ReportGenerator.msi" /quiet JREPATH="c:\\;;BLA"

但这不是:

msiexec /i "WKFS ReportGenerator.msi" /quiet JREPATH="c:\\;;BLA a"

后期编辑 2:

如果使用简单的 cmd 而不是 PowerShell,这些命令包括值 work 中的空格..

【问题讨论】:

  • MSI 文件名是否用单引号而不是双引号括起来?
  • @KlausGütter 不是真的......我使用的是 PowerShell,根据我的观察,使用单引号或双引号没有任何区别..
  • @Teshte 在下面更新了我的答案,其中包含有关 Heath Stewart 的 MSI PowerShell 模块的一些信息。

标签: wix windows-installer


【解决方案1】:

更新:因为这与 PowerShell 有关。请参阅 github.com 上的 Windows Installer PowerShell Module(向下滚动查看描述,使用 releases tab for download)。我还没有真正测试过它,但它来自Heath Stewart - Microsoft 高级软件工程师 (github)。

简短的内嵌示例

install-msiproduct .\example.msi -destination (join-path $env:ProgramFiles Example)

下面是在我意识到这与 PowerShell 相关之前写的


快速建议:不妨试试这个命令行:

msiexec.exe /i c:\setup.msi /QN /L*V "C:\Temp\msilog.log" JREPATH="c:\MyPath"

去掉你指定的路径中的双 \\ (可能就足够了),并使用旧样式 /QN 开关而不是 /quiet 开关。下面是一些阐述和细节。


静默安装:这是什么安装程序?它是供应商包吗?我认为是某种 Java 应用程序?这是如何install a normal MSI file silently

msiexec.exe /i c:\setup.msi /QN /L*V "C:\Temp\msilog.log"

快速解释

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

msiexec.exemsiexec.exe 有两种类型的开关 - 老式的开关,例如 @987654340 @ (Command-Line Options) 用于静默安装,与您正在使用的较新的 /quiet (Standard Installer Command-Line Options) 匹配。

要添加您已经完成的属性,请将其添加到命令行:

msiexec.exe /i myinstaller.msi ADDLOCAL="Program,Dictionaries" SERIALKEY="1234-1234" /qn

更多链接

【讨论】:

  • ...查看我更新的问题..似乎当我在参数值中有空格时出现问题...我也尝试使用/qn 并出现同样的问题。 .
  • 另外,当问题中的那个窗口出现时,不会生成日志文件..所以我没有可以从日志中使用的额外信息..:(
【解决方案2】:

如果您从 Powershell 调用,则应使用调用运算符 & 这也应使用引号括起来的参数:

& msiexec /i `"My Installer.msi`" /quiet JREPATH=`"c:\BLA BLA`"

【讨论】:

  • 添加 & 不会改变任何东西 :(
  • 您可能需要使用反引号字符转义引号。我相应地更新了我的答案。
  • 是的...这解决了它:)
  • 您好 Klaus,我想提醒您 Windows Installer PowerShell 模块的可用性。看我的回答。不确定它是否有好处,但可能会很好了解。
猜你喜欢
  • 1970-01-01
  • 2021-12-04
  • 2015-12-26
  • 1970-01-01
  • 2012-11-28
  • 2017-06-19
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多