-1

一度に複数のプログラムとファイル パッケージをインストールするインストーラーを作成しています。そのうちの 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 は、実行しようとしているインストーラーへのフル パスを使用していないコード内のエラーの 1 つについて言及しています。また、パスを一重引用符で囲むことは常に良い考えであることにも注意してください。たとえば、次の場合:

Delete $TEMP\WinZip165.exe

次のように一重引用符を追加します。

Delete '$TEMP\WinZip165.exe'

これは、あなたがあなたの

SetOutPath '$TEMP'

SetOutPath '$INSTDIR'

一重引用符なしでほとんどの場合を回避できますが、パスにスペースが含まれている場合は、パスをマクロなどに渡そうとすると頭が痛くなります。文字列を複数の断片に分割します。スペースがある場合とない場合がある Windows パスを扱うときはいつでも、これは良い習慣です。

ところで、この回答は受け入れられません。私は、アンダースがすでに言ったことへのフォローアップになることを意図していました。

于 2012-08-08T13:51:25.073 に答える