Installation 如何使用NSIS为WinZip安装程序设置应答文件/.ini

Installation 如何使用NSIS为WinZip安装程序设置应答文件/.ini,installation,nsis,ini,winzip,Installation,Nsis,Ini,Winzip,我正在创建一个同时安装多个程序和文件包的安装程序,其中一个是WinZip,我希望WinZip安装程序在后台运行,根据我收集的信息,使用/s将使其在静默模式下运行,但安装程序仍然不安装。我相信这是因为在WinZip安装过程中必须进行选择。所以我的问题是,我如何设置它以在后台静默安装WinZip?我需要一个应答文件吗?如果是这样的话,我该如何设置?任何帮助都会很好 *NSIS文件中的代码片段: Section IfFileExists "C:\Program Files\WinZip\WINZIP3

我正在创建一个同时安装多个程序和文件包的安装程序,其中一个是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,并且与我如何在需要时建立应答文件有关。

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

他们提供了一个.MSI,你可能想看看。他们的知识库包含一些有用的提示,如和。你也可以通过谷歌搜索其他一些技巧


如果您对他们的静默安装模式有任何其他问题,您可能应该联系。

因为我还没有足够的声誉,所以我无法评论Anders的回应,下面是我个人用来静默安装msi安装程序的命令,当我想安装多个程序时,直接从我使用过多次的安装程序中复制

ExecWait '"msiexec" /i "$TEMP\MSI Installer.msi" /qn'
这是假设您接受Anders的建议并尝试使用msi版本的WinZip

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

Delete $TEMP\WinZip165.exe
添加单引号,如下所示:

Delete '$TEMP\WinZip165.exe'
这也适用于您执行任务时

SetOutPath '$TEMP'

虽然在大多数情况下不需要单引号,但如果遇到一条路径中有空格,如果试图将该路径传递给宏或其他对象,则会让您头疼,因为它会在空格上进行分隔,并将字符串分成多个片段。无论何时处理可能有或可能没有空间的窗口路径,这都是一个好习惯

顺便说一句,不要接受这个答案,我只是想跟进安德斯已经说过的话

SetOutPath '$INSTDIR'