gpt4 book ai didi

windows-installer - NSIS - 如果我调用 SetOutPath,则 msiexec/i 失败并显示代码 1619

转载 作者:行者123 更新时间:2023-12-04 18:24:25 27 4
gpt4 key购买 nike

ExecWait "msiexec /i myinstaller.msi /qn" $0
这就是我在脚本中调用的全部内容。 (/qn 用于静默安装,不弹出任何进度窗口,我也测试过没有它)。

它失败了 msiexec error code 1619- This installation package could not be
opened. Verify that the package exists and
that you can access it, or contact the
application vendor to verify that this is
a valid Windows Installer package.

相同的 msiexec 调用在命令行上运行良好,或者如果我编写了一个基本的 NSIS 脚本,它什么都不做——这意味着它是 不是 因为NTFS permissions谷歌搜索抛出。

因此,它必须是我的主安装程序脚本中的其他内容。
在我的脚本中注释掉几乎所有内容以隔离原因之后:
SetOutPath "$INSTDIR\Some directory"
如果我将此部分注释掉并且不设置输出路径,则一切正常。到底是怎么回事?为什么这会干扰 msiexec 调用?

更新 - 这里是 tl;dr问题的版本 - 以下片段在作为独立脚本运行时不起作用,除非我注释掉 SetOutPath称呼。为什么?
输出目录中是否有任何文件(它没有),或者我是否立即调用它或之前的几行都无关紧要。

showinstdetails show
OutFile test.exe
section
setoutpath "D:\back"
ExecWait "msiexec /i MyInstaller.msi /qr" $0
MessageBox MB_OK $0
sectionend

最佳答案

这里可能有两件事不对。 msi 真的应该用引号引起来,而且你真的应该给出那个 msi 的完整路径。如果您包含带有空格的路径,则第一个很重要;第二个很重要,因为 msiexec.exe 需要知道那个 msi 在哪里——它很可能不在系统路径中。

这样的东西应该可以工作(如果安装程序位于 %TEMP% 文件夹中):

ExecWait 'msiexec /i "$TEMP\myinstaller.msi" /qn'

关于windows-installer - NSIS - 如果我调用 SetOutPath,则 msiexec/i 失败并显示代码 1619,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com