【问题标题】:Specifying target directory when running msiexec in nsis在 nsis 中运行 msiexec 时指定目标目录
【发布时间】:2017-04-05 15:59:21
【问题描述】:

我正在尝试使用 msiexec 安装 7-Zip.msi。虽然我可以使用以下 nsis 命令执行 msi,但它默认安装到 C:\Program Files

ExecWait '"msiexec" /passive /i "$OUTDIR\<msi filename>.msi"'

我找不到为安装指定自定义目标目录的方法。

msiexec 文档建议我可以使用 TARGETDIR。所以我尝试了以下

SetOutPath "C:\Software\7-Zip"
DetailPrint "Installing 7-Zip to $OUTDIR" 
ExecWait '"msiexec" /passive /i "$OUTDIR\7-Zip.msi" TARGETDIR="$OUTDIR"'

但是当我运行 nsis exe 时我没有收到任何错误,但是 7-Zip 还没有安装到 C:\Software\7-Zip 目录中。

有谁知道你在使用 msiexec 时如何指定目标安装目录?

【问题讨论】:

  • 为什么只用 NSIS 标记这个?它甚至与 NSIS 无关。
  • “它甚至与 NSIS 无关” - 你怎么能这么肯定。您是否通过 NSIS ExecWait 函数调用来查看它如何解析提供的值?
  • ExecWait 不解析 $variables 以外的任何内容(就像大多数 NSIS 指令一样),然后它只调用 CreateProcess。最外面的一组引号被编译器删除。

标签: nsis windows-installer


【解决方案1】:
ExecWait '"msiexec" /passive /i "C:\Temp\7-Zip.msi" INSTALLDIR="$OUTDIR"'

使用INSTALLDIR 解决了这个问题。似乎INSTALLDIR 是特定于 7-Zip.msi 的属性。一些 msi 文件使用TARGETDIR

【讨论】:

  • TARGETDIR 是标准属性,但不幸的是,许多(大多数?)设置不尊重这一点,并为安装目录定义了自己的属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多