[英]How can I register two dll:s in with the same macro using regasm in a nsis script?
我正在尝试使用带有以下参数的宏来注册两个dll:s:
!宏RegisterWithRegAsm标志可执行文件typeLib
我这样称呼宏:
!insertmacro RegisterWithRegAsm“”“ Dll1.dll”“ Dll1.tlb”!insertmacro RegisterWithRegAsm“”“ Dll2.dll”“ Dll2.tlb”
问题是我只能在第二次NSIS抱怨我已经声明了标签的情况下一次运行宏:
inst__:StrCpy $ R1'$ R0 $ {DOT_NET_VERSION_2_SP2} \\ RegAsm.exe“ $ INSTDIR \\ $ {APP_NAME_COMPACT} \\ $ {executable}” / codebase / tlb:“ $ INSTDIR \\ $ {APP_NAME_COMPACT} \\ $ {typeLib}” /无声'
如何将该标签(和u_inst_)移到宏之外,以便可以多次使用?
谁知道一个好的网站可供参考? 我已经看过nsis网页,但是找不到对多个dll处理的引用。
感谢任何想法!
一种解决方案是使用前缀使标签唯一:
!macro UselessExample string
!define UselessExample_lbl "UselessExample_${__LINE__}" ;prefixing with the macro name is a good way to avoid conflicts
Goto ${UselessExample_lbl}pointlessjump
DetailPrint "Hello?"
${UselessExample_lbl}pointlessjump:
DetailPrint "${string}"
!undef UselessExample_lbl
!macroend
Section
!insertmacro UselessExample "Hello1"
!insertmacro UselessExample "Hello2"
SectionEnd
或者,如果要创建在许多地方都将要调用的实用程序函数,通常最好创建一个函数。 util.nsh中的CallArtificialFunction内容是一个帮助程序宏,可以轻松地将宏转换为函数。
!include util.nsh
!macro UselessExample string
Push "${string}"
${CallArtificialFunction} UselessExampleWorker
!macroend
!macro UselessExampleWorker
Pop $0
DetailPrint $0
!macroend
Section
!insertmacro UselessExample "Hello1"
!insertmacro UselessExample "Hello2"
SectionEnd
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.