2017-05-02 7 views
0

を取得する場合、私は現在、自分のアプリケーションと一緒にドライバをインストールするには、次のスクリプトを使用しています:DPInst戻り>= 0x80010000場合NSISロールバックインストーラExecWaitコマンドは、特定のリターンコード

!macro customInstall 
    ExecWait '"$INSTDIR\resources\DPInst.exe" /sw' 
!macroend 

しかし、これは1またはを意味し、より多くのドライバのインストールが失敗したので、インストールをロールバックして終了する必要があります。どのように私はこれをやろうと思った?

答えて

1

ExecWaitは、プロセス終了コードを2番目のパラメータに格納できます。

!include LogicLib.nsh 
Section 
SetOutPath "$instdir\resources" 
File "whatever\DPInst.exe" 
ExecWait '"$INSTDIR\resources\DPInst.exe" /sw' $0 
${If} $0 U>= 0x80010000 
    Delete "$INSTDIR\resources\DPInst.exe" 
    RMDir $instdir\resources 
    RMDir $instdir 
    MessageBox mb_iconstop "Error blah blah" 
    Abort 
${EndIf} 
SectionEnd 
+0

これは機能しますが、セットアップでロールバックするのは簡単ではないので、私は解析することに決めましたドライバにインストールされているかどうかを確認するためのアプリ内の 'PnPUtil'の出力と、ドライバがインストールされていない場合にはドライバのインストールを再確認します。 – Tim

関連する問題