Я пытался прочитать параметры из NSIS Call, как:
MySQL::SetCredentials "localhost" 3306 "banananode" "root" ""
На методе я попытался получить первый параметр с popstring
как пример кода на NSIS:
LPTSTR mystringbuffer = (LPTSTR)GlobalAlloc(GPTR, (3 + string_size + 1) * sizeof(*mystringbuffer));
int test = popstring(mystringbuffer);
MessageBox(hWnd, mystringbuffer, TEXT("plug-in"), MB_OK);
GlobalFree(mystringbuffer);
Но popstring
только возвращается l
и не localhost
:
Я пытался использовать getuservariable(INST_0)
для примера, но здесь, это дает мне пустой результат.
Можете ли вы сказать мне, что не так?
Это просто противоположность проблема у вас была раньше. Вы по-прежнему смешиваете и сопоставляете строки / функции ANSI и Unicode. Одна буква означает, что вы читаете строку Unicode как строку ANSI. L"localhost"
(l\0o\0c\0a\0l\0h\0o\0s\0t\0\0\0
) как строка ANSI просто "l"
(l\0
).
Возможно, это уменьшит путаницу:
void __declspec(dllexport) test(HWND hWndParent, ...)
{
MessageBox(hWndParent, sizeof(OSVERSIONINFOA) < sizeof(OSVERSIONINFO) ? TEXT("Unicode plug-in") : TEXT("ANSI plug-in"), TEXT("I'm a"), 0);
}
а также
Section
!if "${NSIS_CHAR_SIZE}" > 1
MessageBox mb_ok "Unicode installer"!else
MessageBox mb_ok "ANSI installer"!endif
myplugin::test
SectionEnd
Других решений пока нет …