0

いくつかのネットワークプリンターをインストールするためのNSISインストーラースクリプトを書いています。各プリンタをオプションとしてインストールしたいのSectionですが、プリントスプーラを複数回再起動したくありません。そこで、各プリンターセクションが選択されているかどうかを確認する非表示のセクションを作成しました。選択されている場合は、そのプリンターのポートを作成するためのレジストリ設定が含まれています。次に、印刷スプーラを再起動します。問題は、この非表示セクションを最初に実行する必要があることですが、プリンターセクションのセクションインデックスも使用する必要があります。

セクションを定義する前にセクションインデックスを参照する方法を知っている人はいますか?私が考えたもう1つのアプローチは、非表示のセクションを最後に移動することでしたが、最初にインストールされていることを確認する方法が必要になります。どんな助けやアイデアもいただければ幸いです。

Section "-"
    ${IfThen} ${SectionIsSelected} ${Sec01} ${|} !include "10.0.0.8.nsh" ${|}
    ${IfThen} ${SectionIsSelected} ${Sec02} ${|} !include "10.0.0.11.nsh" ${|}
    nsExec::Exec 'net stop spooler'
    nsExec::Exec 'net start spooler'
SectionEnd

Section "My Printer" Sec01
    ExecWait 'rundll32 printui.dll,PrintUIEntry /if /b "My Printer" /f "$EXEDIR\oj8000\hpoj800z.inf" /r "10.0.0.8" /m "HP Officejet Pro 8000 A809 Series" /z'
SectionEnd

Section "Copier" Sec02
    ExecWait 'rundll32 printui.dll,PrintUIEntry /if /b "Copier" /f "$EXEDIR\copier\oemsetup.inf" /r "10.0.0.11" /m "RICOH Aficio MP C4000 PCL 6" /z'        
SectionEnd
4

1 に答える 1

1
Section -
...
call doSectionChecks
SectionEnd


Section "My Printer" Sec01
...
SectionEnd


Function doSectionChecks
... ${Sec01}
FunctionEnd
于 2013-02-10T05:48:16.343 に答える