VentoyPlugson update

This commit is contained in:
longpanda 2021-12-02 10:55:37 +08:00
parent 4bf43ab9d4
commit 293f677cbf
9 changed files with 58 additions and 136 deletions

View File

@ -187,7 +187,7 @@ fi
#change current directory to Ventoy disk #change current directory to Ventoy disk
cd "$mtpnt" cd "$mtpnt"
LANG=en_US $OLDDIR/tool/$TOOLDIR/Plugson "$HOST" "$PORT" "$OLDDIR" "$DISK" $version "$fstype" $partstyle $secureboot & $OLDDIR/tool/$TOOLDIR/Plugson "$HOST" "$PORT" "$OLDDIR" "$DISK" $version "$fstype" $partstyle $secureboot &
wID=$! wID=$!
sleep 1 sleep 1

View File

@ -189,6 +189,7 @@ cp $OPT Ventoy2Disk_*.exe $tmpdir/altexe/
cp $OPT $tmpdir/tool/plugson.tar.xz $tmpdir/ventoy/
cp $OPT $LANG_DIR/languages.json $tmpdir/ventoy/ cp $OPT $LANG_DIR/languages.json $tmpdir/ventoy/
rm -rf $tmpdir/tool rm -rf $tmpdir/tool
rm -f $tmpdir/*.sh rm -f $tmpdir/*.sh

View File

@ -1,14 +1,5 @@
#!/bin/sh #!/bin/sh
output_hex_u32() {
hexval=$(printf '%08x' $1)
hex_B0=${hexval:0:2}
hex_B1=${hexval:2:2}
hex_B2=${hexval:4:2}
hex_B3=${hexval:6:2}
echo -en "\x$hex_B3\x$hex_B2\x$hex_B1\x$hex_B0"
}
if [ -n "$PKG_DATE" ]; then if [ -n "$PKG_DATE" ]; then
plugson_verion=$PKG_DATE plugson_verion=$PKG_DATE
else else
@ -31,18 +22,8 @@ echo -n "$plugson_verion" > ./www/buildtime
tar cf www.tar www tar cf www.tar www
xz --check=crc32 www.tar xz --check=crc32 www.tar
xzdec=$(stat -c '%s' ./www.tar.xz)
echo xzdec=$xzdec
output_hex_u32 0x54535251 > ex.bin
output_hex_u32 $xzdec >> ex.bin
output_hex_u32 0xa4a3a2a1 >> ex.bin
cat ./vs/VentoyPlugson/Release/VentoyPlugson.exe ./www.tar.xz ex.bin > VentoyPlugson.exe
rm -f ./ex.bin
rm -f ../INSTALL/VentoyPlugson.exe rm -f ../INSTALL/VentoyPlugson.exe
cp -a ./VentoyPlugson.exe ../INSTALL/VentoyPlugson.exe cp -a ./vs/VentoyPlugson/Release/VentoyPlugson.exe ../INSTALL/VentoyPlugson.exe
rm -f ../INSTALL/tool/plugson.tar.xz rm -f ../INSTALL/tool/plugson.tar.xz
mv ./www.tar.xz ../INSTALL/tool/plugson.tar.xz mv ./www.tar.xz ../INSTALL/tool/plugson.tar.xz

View File

@ -143,6 +143,48 @@ ventoy_file * ventoy_tar_find_file(const char *path)
} }
int ventoy_decompress_tar(char *tarbuf, int buflen, int *tarsize)
{
int rc = 1;
int inused = 0;
int BufLen = 0;
unsigned char *buffer = NULL;
char tarxz[MAX_PATH];
#if defined(_MSC_VER) || defined(WIN32)
scnprintf(tarxz, sizeof(tarxz), "%s\\ventoy\\%s", g_ventoy_dir, PLUGSON_TXZ);
#else
scnprintf(tarxz, sizeof(tarxz), "%s/tool/%s", g_ventoy_dir, PLUGSON_TXZ);
#endif
if (ventoy_read_file_to_buf(tarxz, 0, (void **)&buffer, &BufLen))
{
vlog("Failed to read file <%s>\n", tarxz);
return 1;
}
g_unxz_buffer = (unsigned char *)tarbuf;
g_unxz_len = 0;
unxz(buffer, BufLen, NULL, unxz_flush, NULL, &inused, unxz_error);
vlog("xzlen:%u rawdata size:%d\n", BufLen, g_unxz_len);
if (inused != BufLen)
{
vlog("Failed to unxz data %d %d\n", inused, BufLen);
rc = 1;
}
else
{
*tarsize = g_unxz_len;
rc = 0;
}
free(buffer);
return rc;
}
int ventoy_www_init(void) int ventoy_www_init(void)
{ {
int i = 0; int i = 0;

View File

@ -20,6 +20,8 @@
#ifndef __VENTOY_UTIL_H__ #ifndef __VENTOY_UTIL_H__
#define __VENTOY_UTIL_H__ #define __VENTOY_UTIL_H__
#define PLUGSON_TXZ "plugson.tar.xz"
#define check_free(p) if (p) free(p) #define check_free(p) if (p) free(p)
#define vtoy_safe_close_fd(fd) \ #define vtoy_safe_close_fd(fd) \
{\ {\
@ -139,16 +141,6 @@ typedef struct tag_tar_head
}VENTOY_TAR_HEAD; }VENTOY_TAR_HEAD;
typedef struct VENTOY_MAGIC
{
uint32_t magic1; // 0x51 0x52 0x53 0x54
uint32_t xzlen; //
uint32_t magic2; // 0xa1 0xa2 0xa3 0xa4
}VENTOY_MAGIC;
#pragma pack() #pragma pack()
#define VENTOY_UP_ALIGN(N, align) (((N) + ((align) - 1)) / (align) * (align)) #define VENTOY_UP_ALIGN(N, align) (((N) + ((align) - 1)) / (align) * (align))

View File

@ -234,42 +234,6 @@ int ventoy_write_buf_to_file(const char *FileName, void *Bufer, int BufLen)
return 0; return 0;
} }
int ventoy_decompress_tar(char *tarbuf, int buflen, int *tarsize)
{
int rc = 1;
int inused = 0;
int BufLen = 0;
unsigned char *buffer = NULL;
char tarxz[MAX_PATH];
scnprintf(tarxz, sizeof(tarxz), "%s/tool/plugson.tar.xz", g_ventoy_dir);
if (ventoy_read_file_to_buf(tarxz, 0, (void **)&buffer, &BufLen))
{
vlog("Failed to read file <%s>\n", tarxz);
return 1;
}
g_unxz_buffer = (unsigned char *)tarbuf;
g_unxz_len = 0;
unxz(buffer, BufLen, NULL, unxz_flush, NULL, &inused, unxz_error);
vlog("xzlen:%u rawdata size:%d\n", BufLen, g_unxz_len);
if (inused != BufLen)
{
vlog("Failed to unxz data %d %d\n", inused, BufLen);
rc = 1;
}
else
{
*tarsize = g_unxz_len;
rc = 0;
}
free(buffer);
return rc;
}
static volatile int g_thread_stop = 0; static volatile int g_thread_stop = 0;
static pthread_t g_writeback_thread; static pthread_t g_writeback_thread;

View File

@ -683,75 +683,6 @@ int ventoy_write_buf_to_file(const char *FileName, void *Bufer, int BufLen)
return 0; return 0;
} }
int ventoy_decompress_tar(char *tarbuf, int buflen, int *tarsize)
{
int rc = 1;
int inused;
HANDLE hFile;
DWORD dwSize;
DWORD dwRead;
WCHAR FullPath[MAX_PATH];
BYTE *buffer;
VENTOY_MAGIC Magic;
GetModuleFileNameW(NULL, FullPath, MAX_PATH);
hFile = CreateFileW(FullPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
vlog("Failed to open self %u\n", LASTERR);
return 1;
}
dwSize = GetFileSize(hFile, NULL);
if (dwSize == INVALID_FILE_SIZE)
{
vlog("Invalid self exe size %u\n", LASTERR);
CHECK_CLOSE_HANDLE(hFile);
return 1;
}
buffer = malloc(dwSize);
if (!buffer)
{
vlog("Failed to malloc %u\n", dwSize);
CHECK_CLOSE_HANDLE(hFile);
return 1;
}
ReadFile(hFile, buffer, dwSize, &dwRead, NULL);
memcpy(&Magic, buffer + dwSize - sizeof(Magic), sizeof(Magic));
if (Magic.magic1 == 0x54535251 && Magic.magic2 == 0xa4a3a2a1)
{
g_unxz_buffer = (UCHAR *)tarbuf;
g_unxz_len = 0;
unxz(buffer + dwSize - Magic.xzlen - sizeof(Magic), Magic.xzlen, NULL, unxz_flush, NULL, &inused, unxz_error);
vlog("bigexe:%u xzlen:%u rawdata size:%d\n", dwSize, Magic.xzlen, g_unxz_len);
if (inused != Magic.xzlen)
{
vlog("Failed to unxz www %d\n", inused);
rc = 1;
}
else
{
*tarsize = g_unxz_len;
rc = 0;
}
}
else
{
vlog("Invalid magic 0x%x 0x%x\n", Magic.magic1, Magic.magic2);
rc = 1;
}
free(buffer);
CHECK_CLOSE_HANDLE(hFile);
return rc;
}
static volatile int g_thread_stop = 0; static volatile int g_thread_stop = 0;
static HANDLE g_writeback_thread; static HANDLE g_writeback_thread;
static HANDLE g_writeback_event; static HANDLE g_writeback_event;

View File

@ -10,6 +10,8 @@
#include <ventoy_disk.h> #include <ventoy_disk.h>
#include <ventoy_http.h> #include <ventoy_http.h>
char g_ventoy_dir[MAX_PATH];
static BOOL g_running = FALSE; static BOOL g_running = FALSE;
static HWND g_refresh_button; static HWND g_refresh_button;
static HWND g_start_button; static HWND g_start_button;
@ -34,6 +36,7 @@ typedef enum MSGID
MSGID_BTN_STOP_TIP, MSGID_BTN_STOP_TIP,
MSGID_BTN_EXIT_TIP, MSGID_BTN_EXIT_TIP,
MSGID_RUNNING_TIP, MSGID_RUNNING_TIP,
MSGID_NO_TARXZ_TIP,
MSGID_BUTT MSGID_BUTT
}MSGID; }MSGID;
@ -56,6 +59,7 @@ const WCHAR *g_msg_cn[MSGID_BUTT] =
L"停止运行后浏览器页面将会关闭,是否继续?", L"停止运行后浏览器页面将会关闭,是否继续?",
L"当前服务正在运行,是否退出?", L"当前服务正在运行,是否退出?",
L"请先关闭正在运行的 VentoyPlugson 程序!", L"请先关闭正在运行的 VentoyPlugson 程序!",
L"ventoy\\plugson.tar.xz 文件不存在,请在正确的目录下运行!",
}; };
const WCHAR *g_msg_en[MSGID_BUTT] = const WCHAR *g_msg_en[MSGID_BUTT] =
{ {
@ -74,6 +78,7 @@ const WCHAR *g_msg_en[MSGID_BUTT] =
L"The browser page will close after stop, continue?", L"The browser page will close after stop, continue?",
L"Service is running, continue?", L"Service is running, continue?",
L"Please close another running VentoyPlugson instance!", L"Please close another running VentoyPlugson instance!",
L"ventoy\\plugson.tar.xz does not exist, please run under the correct directory!",
}; };
const WCHAR **g_msg_lang = NULL; const WCHAR **g_msg_lang = NULL;
@ -485,9 +490,15 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
} }
GetCurrentDirectoryA(MAX_PATH, g_cur_dir); GetCurrentDirectoryA(MAX_PATH, 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\\%s", g_cur_dir, LOG_FILE);
ventoy_log_init(); ventoy_log_init();
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);
return 1;
}
ParseCmdLine(lpCmdLine, g_sysinfo.ip, g_sysinfo.port); ParseCmdLine(lpCmdLine, g_sysinfo.ip, g_sysinfo.port);
if (g_sysinfo.ip[0] == 0) if (g_sysinfo.ip[0] == 0)