2012-05-02 7 views
2

インストーラの開発にnsisを使用しています。最後のステップとして、ユーザーが電子メールアドレスやその他のデータを取得してサーバーに送信する登録プロセスがあります。コードは以下の通りです。"URLパーツエラー" inetc :: post in nsis

StrCpy $ContactName "$0" 
StrCpy $ContactEmail "$1" 
StrCpy $Coments "$2" 
StrCpy $Updates "$3" 
StrCpy $PostStr "userName=$ContactName&userEmail=$ContactEmail&userComments=$Coments&updates=$Updates" 

inetc::post "$PostStr" "http://www.mysite.com/registration/registerAcceptor.php" "$INSTDIR\output.txt" 

Pop $0 
StrCmpS $0 "OK" success failedToSubmit 
failedToSubmit: 
    MessageBox MB_OK|MB_ICONEXCLAMATION "There was an error submitting the registration information" 
Return 

success: 
MessageBox MB_OK|MB_ICONINFORMATION "Your information was successfully received by OrangeHRM" 

しかし、ユーザが登録しようとしている拳の時間のためにそれが

"There was an error submitting the registration information" 

ようなエラーメッセージを与え、私は

を次のようにメッセージを使用して、コマンドの戻り値をチェックするとき
MessageBox MB_OK $0 

それは

URL Parts Error 
次のエラーが表示さ0

しかし、私は戻って、同じ行動を進めるときに、このことは、これら2つのシナリオで2つの別々の道を働き、なぜ私はわからないんだけど、それは成功メッセージを与え、戻り値が

OK 

としてもです。誰かが助けることができる?

ありがとうございます。

答えて

6

てみthis forum thread(存在スタック上の他のものかもしれないし、それが周りに二回目の作品、なぜプラグインが読み取りを停止したときに、これは説明するだろう知っていません)

で提案されているように、プラグインの呼び出しに「/ END」を追加
+0

それは私のために働くアンダースと非常に感謝します。 :) – Thilanka

2

私はinetc NSISプラグインと同じ問題がありましたが、違いはすでに/ENDを使用していて、同じケースで多少動作しませんでした。私はこの問題が不明確なスタックに関連していることを読んだ後、私は自分のコードをチェックし、スタックには変数がたくさん残っています。実際に私が/ENDを送ったという事実も役に立たなかったので、私はinetcを呼び出す前にインターネットからのコードですべての変数から手作業でスタックをクリアしようとしましたが、それは魔法として機能しました。だからここ

はコードです:

!macro ClearStack 
    ${Do} 
     Pop $0 
     IfErrors send 
    ${Loop} 
send: 
!macroend 

!define ClearStack "!insertmacro ClearStack" 

あなたがinetcで何かを送信する必要がある場所に任意の重複を避けるために、マクロとしてそれを使用する、あるいは単にコピー&ペーストを右にすることができます。