-1

我正在创建一个安装程序,它可以一次安装多个程序和文件包,其中一个是 WinZip,我希望 WinZip 安装程序在后台运行,从我收集的/s内容来看,它将使它在静默模式下运行,但是安装程序仍然没有安装。我相信这是因为在 WinZip 安装过程中必须做出的选择。所以我的问题是如何设置它以在后台静默安装 WinZip?我需要一个答案文件吗?如果是这样,我该如何设置?任何帮助都会很棒!

*我在 NSIS 文件中的代码片段:

Section
IfFileExists "C:\Program Files\WinZip\WINZIP32.EXE" Dont_Install 
SetOutPath $TEMP
File "Installerfiles\WinZip165.exe"
DetailPrint "Starting Winzip installation"
ExecWait "/s WinZip165.exe"
Delete $TEMP\WinZip165.exe
SetOutPath $INSTDIR
Goto done
Dont_Install:
MessageBox MB_OK "You seem to have this program \
(WinZip) already installed"  
done:
SectionEnd

*注意我已经看到了关于静默安装的其他问题,这个问题更特定于 WinZip,并且与如果需要我将如何建立答案文件有关。

4

2 回答 2

2

ExecWait "/s WinZip165.exe"显然是错误的,应该是,ExecWait '"$TEMP\WinZip165.exe" /S'但我不认为 WinZip 使用基于 NSIS 的安装程序......

他们确实提供了 .MSI,您可能想看看。他们的知识库包含一些有用的技巧,例如thisthis。您还可以通过谷歌搜索找到其他一些提示...

如果您对它们的静默安装模式有任何其他问题,您应该联系WinZip 支持

于 2012-08-07T21:16:22.493 回答
1

由于我还没有足够的声誉,因此我无法评论 Anders 的回复,这是我个人用来静默安装 msi 安装程序的命令,它是从我想安装多个程序时使用过多次的安装程序复制而来的.

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

这是假设您接受 Anders 的建议并尝试使用 WinZip 的 msi 版本。

Anders 还提到了您的代码中的一个错误,即您没有使用您尝试运行的安装程序的完整路径。我还想指出,将路径用单引号括起来总是一个好主意。例如,当您这样做时:

Delete $TEMP\WinZip165.exe

像这样添加单引号:

Delete '$TEMP\WinZip165.exe'

这也适用于你做你的

SetOutPath '$TEMP'

SetOutPath '$INSTDIR'

虽然您可以在没有单引号的情况下摆脱大多数情况,但如果您遇到包含空格的路径,如果您尝试将路径传递给宏或其他东西,它会让您头疼,因为它分隔了空格和将字符串分成多个部分。每当您处理可能有也可能没有空格的 Windows 路径时,这只是一个好习惯。

顺便说一句,我不接受这个答案,我打算将它作为安德斯已经说过的话的后续行动。

于 2012-08-08T13:51:25.073 回答