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;
}
void ventoy_syslog_printf(const char *Fmt, ...)
{
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!",
};
#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;
HINSTANCE g_hInst;
@ -399,7 +407,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lPara
{
InitDialog(hWnd, wParam, lParam);
break;
}
}
case WM_CLOSE:
{
if (g_running)
@ -414,6 +422,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lPara
OnDestroyDialog();
EndDialog(hWnd, 0);
break;
}
}
@ -527,8 +536,14 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
{
int i;
int rc;
int status = 0;
HANDLE hMutex;
WCHAR* Pos = NULL;
WCHAR CurDir[MAX_PATH];
WCHAR ExePath[MAX_PATH];
WCHAR CurDirBk[MAX_PATH];
WCHAR ExePathBk[MAX_PATH];
CHAR TmpPathA[MAX_PATH];
UNREFERENCED_PARAMETER(hPrevInstance);
@ -562,12 +577,67 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
}
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);
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();
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))
{
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("===== 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");
@ -605,7 +675,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
ventoy_http_init();
g_hInst = hInstance;
DialogBoxA(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
return 0;
}

View File

@ -27,5 +27,11 @@
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application>
</compatibility>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
</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>
</Link>
<Manifest>
<AdditionalManifestFiles>$(ProjectDir)\Res\Plugson32.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
<AdditionalManifestFiles>$(ProjectDir)\Res\Plugson64.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
<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;
}
else if (_stricmp(opt + 4, "UDF") == 0)
{
fstype = VTOY_FS_UDF;
}
}
}