From fe17c8b15642e89337ecfa320cd6ec07962277c3 Mon Sep 17 00:00:00 2001 From: Paul Kulchenko Date: Wed, 13 Apr 2016 21:24:21 -0700 Subject: [PATCH] Updated Windows launcher to add description and fix loading of Unicode parameters (#663, #260). --- build/win32_starter.c | 21 ++++++++++----------- zbstudio.exe | Bin 51296 -> 51952 bytes zbstudio/res/zbstudio.rc | 15 +++++++++++++++ 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/build/win32_starter.c b/build/win32_starter.c index 3dd490134b..0f668273b5 100644 --- a/build/win32_starter.c +++ b/build/win32_starter.c @@ -53,9 +53,7 @@ static const char *luacode = "function(err) msg('Uncaught lua script exception',debug.traceback(err)) end)" ; -#if defined(_WIN32) && defined (_MSC_VER) - -PCHAR* CommandLineToArgvA(PCHAR CmdLine,int* _argc) +PCHAR* CommandLineToArgv(PCHAR CmdLine,int* _argc) { PCHAR* argv; PCHAR _argv; @@ -71,8 +69,7 @@ PCHAR* CommandLineToArgvA(PCHAR CmdLine,int* _argc) len = strlen(CmdLine); i = ((len+2)/2)*sizeof(PVOID) + sizeof(PVOID); - argv = (PCHAR*)GlobalAlloc(GMEM_FIXED, - i + (len+2)*sizeof(CHAR)); + argv = (PCHAR*)GlobalAlloc(GMEM_FIXED, i + (len+2)*sizeof(CHAR)); _argv = (PCHAR)(((PUCHAR)argv)+i); @@ -135,15 +132,17 @@ PCHAR* CommandLineToArgvA(PCHAR CmdLine,int* _argc) return argv; } +PCHAR MultiByteToUTF8(LPCWSTR text) { + int size_needed = WideCharToMultiByte(CP_UTF8, 0, text, -1, NULL, 0, NULL, NULL); + PCHAR buffer = (PCHAR)GlobalAlloc(GMEM_FIXED, size_needed); + WideCharToMultiByte(CP_UTF8, 0, text, -1, buffer, size_needed, NULL, NULL); + return buffer; +} + int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int argc; - char ** argv = CommandLineToArgvA(GetCommandLineA(),&argc); - -#else -int main (int argc, char *argv[]) -{ -#endif + char ** argv = CommandLineToArgv(MultiByteToUTF8(GetCommandLineW()),&argc); HINSTANCE hinstLib; char buffer[MAX_PATH],*file; diff --git a/zbstudio.exe b/zbstudio.exe index 8eab62326a3b933c1f4b7c9e8c3f97995814442e..3276f7447a2f42135467fa1ca5617ff22b63e55e 100644 GIT binary patch delta 6637 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 delta 5949 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 Sck>&^tW&V9xjv!73i%(WIIWQY diff --git a/zbstudio/res/zbstudio.rc b/zbstudio/res/zbstudio.rc index ac0bec9d5b..4ea6e5b8bb 100644 --- a/zbstudio/res/zbstudio.rc +++ b/zbstudio/res/zbstudio.rc @@ -1,2 +1,17 @@ icon ICON "zbstudio.ico" 1 24 zbstudio.manifest +1 VERSIONINFO +{ + BLOCK "StringFileInfo" + { + BLOCK "040904E4" + { + VALUE "CompanyName", "ZeroBrane LLC" + VALUE "FileDescription", "ZeroBrane Studio IDE" + VALUE "InternalName", "zbstudio" + VALUE "LegalCopyright", "All rights reserved © 2011-16 Paul Kulchenko, ZeroBrane LLC" + VALUE "LegalTrademarks", "ZeroBrane®" + VALUE "OriginalFilename", "zbstudio.exe" + } + } +}