マクロ関数を (セクション内で) 2 回呼び出すと、次のコンパイル エラーが発生します。
エラー: ラベル "CheckForRMSCustomisationLoop:" セクションで既に宣言されています
label(jump) を 2 回定義しているのでわかりますが、それでよろしいですか?
この問題を回避するにはどうすればよいですか?
マクロを関数に変換する必要がありますか、それとももっと簡単な方法がありますか? 関数に変換すると、パラメーターを渡すことができないため、スタックを使用する必要があります。
Outfile "RequireAdmin.exe"
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
!include LogicLib.nsh
!macro Test param1 param2
TestLabel1:
DetailPrint "TestLabel1"
TestLabel2:
DetailPrint "TestLabel2"
!macroend
Section
!insertmacro Test 1 2
!insertmacro Test 3 4
IfErrors 0 +2
MessageBox MB_ICONEXCLAMATION|MB_OK "Unable to write to the registry" IDOK +1
SectionEnd
Function TestFunct # I MISS MY PARAMS :(
Pop $R9 # represents param2: but actually having param2 is SO MUCH more descriptive
Pop $R8
TestLabel1:
DetailPrint "TestLabel1"
TestLabel2:
DetailPrint "TestLabel2"
FunctionEnd
/* Usage
Push 1
Push 2
Call TestFunct
Push 3
Push 4
Call TestFunct
*/