NSIS有Unicode一说, 所以在使用和系统有关系的字符时,必须按照unicode(宽字符)明确指定编码,如果指定的是窄字符,则和期望的不一样。
比如要用:
System::Call 'kernel32::CreateMutexW(i 0, i 0, w "${PRODUCT_IE_ACTIVE_MUTEX}") ?e'
而不要用
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${PRODUCT_IE_ACTIVE_MUTEX}") ?e' 此时创建的并非期望的字符串。
当然了,如果都是NSIS制作的程序自己在那里玩,则无所谓怎么什么编码。