1. Fix the issue that Ventoy2Disk_X64.exe can not run under altexe directory.

2. Fix the issue that VentoyPlugson_X64.exe exit silently.
3. Add missing /FS option for Ventoy2Disk.exe in Windows command line mode.
4. Ventoy2Disk.exe automatically change current directory when started from other directory.
This commit is contained in:
longpanda 2023-01-14 21:56:19 +08:00
parent 3e34dd8514
commit 4f5334026e
12 changed files with 86 additions and 8 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -54,8 +54,6 @@ void ventoy_set_loglevel(int level)
g_ventoy_log_level = level; g_ventoy_log_level = level;
} }
void ventoy_syslog_printf(const char *Fmt, ...) void ventoy_syslog_printf(const char *Fmt, ...)
{ {
char log[512]; char log[512];

View File

@ -82,6 +82,14 @@ const WCHAR *g_msg_en[MSGID_BUTT] =
L"ventoy\\plugson.tar.xz does not exist, please run under the correct directory!", L"ventoy\\plugson.tar.xz does not exist, please run under the correct directory!",
}; };
#define UTF8_Log(fmt, wstr) \
{\
memset(TmpPathA, 0, sizeof(TmpPathA));\
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, TmpPathA, sizeof(TmpPathA), NULL, NULL);\
vlog(fmt, TmpPathA);\
}
const WCHAR **g_msg_lang = NULL; const WCHAR **g_msg_lang = NULL;
HINSTANCE g_hInst; HINSTANCE g_hInst;
@ -399,7 +407,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lPara
{ {
InitDialog(hWnd, wParam, lParam); InitDialog(hWnd, wParam, lParam);
break; break;
} }
case WM_CLOSE: case WM_CLOSE:
{ {
if (g_running) if (g_running)
@ -414,6 +422,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lPara
OnDestroyDialog(); OnDestroyDialog();
EndDialog(hWnd, 0); EndDialog(hWnd, 0);
break;
} }
} }
@ -527,8 +536,14 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
{ {
int i; int i;
int rc; int rc;
int status = 0;
HANDLE hMutex; HANDLE hMutex;
WCHAR* Pos = NULL;
WCHAR CurDir[MAX_PATH]; WCHAR CurDir[MAX_PATH];
WCHAR ExePath[MAX_PATH];
WCHAR CurDirBk[MAX_PATH];
WCHAR ExePathBk[MAX_PATH];
CHAR TmpPathA[MAX_PATH];
UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(hPrevInstance);
@ -562,12 +577,67 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
} }
GetCurrentDirectoryW(MAX_PATH, CurDir); GetCurrentDirectoryW(MAX_PATH, CurDir);
GetCurrentDirectoryW(MAX_PATH, CurDirBk);
GetModuleFileNameW(NULL, ExePath, MAX_PATH);
GetModuleFileNameW(NULL, ExePathBk, MAX_PATH);
for (Pos = NULL, i = 0; i < MAX_PATH && ExePath[i]; i++)
{
if (ExePath[i] == '\\' || ExePath[i] == '/')
{
Pos = ExePath + i;
}
}
if (Pos)
{
*Pos = 0;
if (wcscmp(CurDir, ExePath))
{
status |= 1;
SetCurrentDirectoryW(ExePath);
GetCurrentDirectoryW(MAX_PATH, CurDir);
}
else
{
status |= 2;
}
}
Pos = wcsstr(CurDir, L"\\altexe");
if (Pos)
{
*Pos = 0;
status |= 4;
SetCurrentDirectoryW(CurDir);
}
WideCharToMultiByte(CP_UTF8, 0, CurDir, -1, g_cur_dir, MAX_PATH, NULL, 0); WideCharToMultiByte(CP_UTF8, 0, CurDir, -1, g_cur_dir, MAX_PATH, NULL, 0);
sprintf_s(g_ventoy_dir, sizeof(g_ventoy_dir), "%s", g_cur_dir); sprintf_s(g_ventoy_dir, sizeof(g_ventoy_dir), "%s", g_cur_dir);
sprintf_s(g_log_file, sizeof(g_log_file), "%s\\%s", g_cur_dir, LOG_FILE); sprintf_s(g_log_file, sizeof(g_log_file), "%s", LOG_FILE);
ventoy_log_init(); ventoy_log_init();
vlog("====================== Ventoy Plugson =========================\n");
UTF8_Log("Current Directory <%s>\n", CurDirBk);
UTF8_Log("Exe file path <%s>\n", ExePathBk);
if (status & 1)
{
UTF8_Log("Change current dir to exe <%s>\n", ExePath);
}
if (status & 2)
{
vlog("Current directory check OK.\n");
}
if (status & 4)
{
UTF8_Log("altexe detected, change current dir to <%s>\n", CurDir);
}
if (!ventoy_is_file_exist("%s\\ventoy\\%s", g_ventoy_dir, PLUGSON_TXZ)) if (!ventoy_is_file_exist("%s\\ventoy\\%s", g_ventoy_dir, PLUGSON_TXZ))
{ {
MessageBoxW(NULL, g_msg_lang[MSGID_NO_TARXZ_TIP], g_msg_lang[MSGID_ERROR], MB_OK | MB_ICONERROR); MessageBoxW(NULL, g_msg_lang[MSGID_NO_TARXZ_TIP], g_msg_lang[MSGID_ERROR], MB_OK | MB_ICONERROR);
@ -585,7 +655,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
} }
vlog("===============================================\n"); vlog("===============================================\n");
vlog("===== Ventoy Plugson %s:%s =====\n", g_sysinfo.ip, g_sysinfo.port); vlog("========= Ventoy Plugson %s:%s =========\n", g_sysinfo.ip, g_sysinfo.port);
vlog("===============================================\n"); vlog("===============================================\n");
@ -605,7 +675,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
ventoy_http_init(); ventoy_http_init();
g_hInst = hInstance; g_hInst = hInstance;
DialogBoxA(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc); DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
return 0; return 0;
} }

View File

@ -27,5 +27,11 @@
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application> </application>
</compatibility> </compatibility>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
</assembly> </assembly>

View File

@ -169,7 +169,7 @@
<DelayLoadDLLs>gdi32.dll;winspool.dll;comdlg32.dll;advapi32.dll;shell32.dll;ole32.dll;oleaut32.dll;uuid.dll;odbc32.dll;odbccp32.dll</DelayLoadDLLs> <DelayLoadDLLs>gdi32.dll;winspool.dll;comdlg32.dll;advapi32.dll;shell32.dll;ole32.dll;oleaut32.dll;uuid.dll;odbc32.dll;odbccp32.dll</DelayLoadDLLs>
</Link> </Link>
<Manifest> <Manifest>
<AdditionalManifestFiles>$(ProjectDir)\Res\Plugson32.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles> <AdditionalManifestFiles>$(ProjectDir)\Res\Plugson64.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest> </Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>

Binary file not shown.

View File

@ -233,6 +233,10 @@ static int CLI_CheckParam(int argc, char** argv, PHY_DRIVE_INFO* pDrvInfo, CLI_C
{ {
fstype = VTOY_FS_FAT32; fstype = VTOY_FS_FAT32;
} }
else if (_stricmp(opt + 4, "UDF") == 0)
{
fstype = VTOY_FS_UDF;
}
} }
} }