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

时间:2012-08-07 17:21:20

标签: installer nsis ini winzip

我正在创建一个安装程序,一次安装多个程序和文件包,其中一个是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特性,并且如果需要我将如何建立答案文件。

2 个答案:

答案 0 :(得分:2)

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

他们确实提供.MSI,你可能想看一下。他们的知识库包含一些有用的提示,例如thisthis。您还可以通过Google搜索来find其他一些提示......

如果您对其静音安装模式有任何其他疑问,请联系WinZip support

答案 1 :(得分:1)

由于我还没有评论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'

虽然你可以在没有单引号的情况下逃脱大多数情况,但是如果你遇到过包含空格的路径,如果你试图将路径传递给宏或某些东西,它会让你头疼,因为它划分了空格并将字符串分成多个部分。只要你处理可能有或没有空格的Windows路径,这是一个很好的习惯。

BTW不接受这个答案,我打算将其作为安德斯已经说过的后续行动。