2017-04-20 9 views
0

NSISのNewbeeさん、現在のアプリケーションが動作しているかどうかを確認するためにnsProcessプラグインを実装しようとしていました!私はサンプルコードで同じものを実装するのに成功しましたが、プロジェクトで同じものを実装しようとしたとき、私は下の画像メッセージボックスに示すように予想外の出力を得ています!!なぜ私はこれを得ていますか?誰でも私を導くことができます。事前に助けてくれてありがとう:)NSIS:NsProcess UnExpected Output

プロジェクトSnipet!

!include "MUI2.nsh" 
     ;!include "MUI.nsh" 
     !include LogicLib.nsh 
     !include "StrFunc.nsh" 
     !include "FileFunc.nsh" 
     !include WinMessages.nsh 
     !include "nsProcess.nsh" 
     ;!include "FindProcess.nsh" 

     #Dummy Section 
     ... 
    #EndSecton 


!macro CheckAppRunning_ _FILE _ERR 

    App_Running_Check: 
    ${nsProcess::FindProcess} "MyApp.exe" $R0 
    MessageBox MB_OK "$R0" 
    ${If} $R0 == 0 
     MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "Please stop App.exe before continuing" /SD IDCANCEL IDRETRY App_Running_Check 
     Quit 
    ${EndIf} 

notRunning: 
!macroend 

Function .onInit 
    !insertmacro CheckAppRunning_ `MyApp.exe` $R0 
FunctionEnd 

enter image description here

$ R0は、この値を返します!!!なぜ ???

答えて

1

これは、ANSI対Unicodeコンパイラ/プラグインの不一致の可能性が高いです。

NSIS v2を使用している場合は、プラグインフォルダに.zip(サードパーティのNSIS forkを使用していない限りANSI)の正しいプラグインバージョンを抽出する必要があります。 NSIS v3を使用している場合は、各タイプのプラグインサブフォルダがあります。各サブフォルダに正しいプラグインを入れてください。 Unicodeプラグインの.dllは、Unicodeサブフォルダ内にあることが多く、.zipアーカイブのファイル名に「W」というサフィックスがあります。

+0

Hey Anders! 返信いただきありがとうございます。しかし、1つのバージョン(NSIS 3.01)しかインストールされていないので、別の例(http://nsis.sourceforge.net/NsProcess_plugin)で実装するとうまくいきます。 – faisal

+0

1つの.nsiスクリプトに 'Unicode true'が含まれている可能性があります。偽を言い、存在しません。完全なコードを投稿していないため、言い難いです! – Anders

+0

Hey Anders、 ありがとう、問題はUnicodeの旗で!再度、感謝します。 – faisal