diff --git a/INSTALL/ventoy/vtoyjump32.exe b/INSTALL/ventoy/vtoyjump32.exe index 7259ef24..db8d0f28 100644 Binary files a/INSTALL/ventoy/vtoyjump32.exe and b/INSTALL/ventoy/vtoyjump32.exe differ diff --git a/INSTALL/ventoy/vtoyjump64.exe b/INSTALL/ventoy/vtoyjump64.exe index 4693f2e6..9e52ce4c 100644 Binary files a/INSTALL/ventoy/vtoyjump64.exe and b/INSTALL/ventoy/vtoyjump64.exe differ diff --git a/LANGUAGES/languages.json b/LANGUAGES/languages.json index d7c2cd89..4a4fd0cf 100644 --- a/LANGUAGES/languages.json +++ b/LANGUAGES/languages.json @@ -1987,5 +1987,56 @@ "STR_VTSI_CREATE_SUCCESS":"VTSI ֆայլը հաջողությամբ ստեղծվեց!#@Դուք կարող եք օգտագործել Rufus (3.15+) կրիչում ձայնագրելու համար, որպեսզի ավարտեք Ventoy-ի տեղադրումը:", "STR_VTSI_CREATE_FAILED":"VTSI ֆայլի ստեղծումը ձախողվեց։", "STRXXX":"" + }, + { + "name":"Finnish (suomi)", + "FontFamily":"Courier New", + "FontSize":16, + "Author":"heidi.wenger", + + "STR_ERROR":"Virhe", + "STR_WARNING":"Varoitus", + "STR_INFO":"Tiedot", + "STR_INCORRECT_DIR":"Ole hyvä ja aja oikean kansion alla!", + "STR_INCORRECT_TREE_DIR":"Älä aja minua tässä, ole hyvä ja lataa julkaistu asennuspaketti, ja suorita ajo siellä.", + "STR_DEVICE":"Laite", + "STR_LOCAL_VER":"Ventoy paketissa", + "STR_DISK_VER":"Ventoy laitteessa", + "STR_STATUS":"Tila - VALMIS", + "STR_INSTALL":"Asenna", + "STR_UPDATE":"Päivitä", + "STR_UPDATE_TIP":"Päivytystoiminto on turvallinen, ISO -tiedostot pysyvät muuttumattomana.#@Jatketaanko?", + "STR_INSTALL_TIP":"Laite tullaan alustamaan ja tämän johdosta kaikki tieto sen sisällä menetetään.#@Jatketaanko?", + "STR_INSTALL_TIP2":"Laite tullaan alustamaan ja tämän johdosta kaikki tieto sen sisällä menetetään.#@Jatketaanko? (Kaksoistarkistus)", + "STR_INSTALL_SUCCESS":"Onnittelut!#@Ventoy on asennettu laitteeseen onnistuneesti.", + "STR_INSTALL_FAILED":"Asennuksen yhteydessä ilmeni virhe. Voit nypätä USB-laitteen irti ja koettaa uudelleen. Katso log.txt nähdäksesi yksityiskohdat. Mikäli toimi epäonnistuu aina, lue usein kysytyt kysymykset (FAQ) virallisella sivustolla.", + "STR_UPDATE_SUCCESS":"Onnittelut!#@Ventoy päivitettiin laitteeseen onnistuneesti.", + "STR_UPDATE_FAILED":"Päivityksen aikana ilmeni virhe. Voit nypätä USB-laitteen irti ja koettaa uudelleen. Katso log.txt nähdäksesi yksityiskohdat. Mikäli toimi epäonnistuu aina, lue usein kysytyt kysymykset (FAQ) virallisella sivustolla.", + "STR_WAIT_PROCESS":"Toimi on ajossa juuri nyt, ole hyvä ja odota...", + "STR_MENU_OPTION":"Vaihtoehto", + "STR_MENU_SECURE_BOOT":"Secure Boot (turvakäynnistys) -tuki", + "STR_MENU_PART_CFG":"Osioasetukset", + "STR_BTN_OK":"SELVÄ", + "STR_BTN_CANCEL":"Peruuta", + "STR_PRESERVE_SPACE":"Jätä hiukan vapaata tilaa levyn loppuun", + "STR_SPACE_VAL_INVALID":"Epäkelpo määrä tilavaraukselle", + "STR_MENU_CLEAR":"Poista Ventoy", + "STR_CLEAR_SUCCESS":"Ventoy on nyt poistettu laitteesta onnistuneesti.", + "STR_CLEAR_FAILED":"Ilmeni virhe poistettaessa Ventoyta levyltä. Voit nypätä laitteen irti ja koettaa uudelleen. Katso log.txt nähdäksesi yksityiskohdat.", + "STR_MENU_PART_STYLE":"Osiotyyli", + "STR_DISK_2TB_MBR_ERROR":"Ole hyvä ja valitse GPT laitteille joissa on tilavuutta yli 2 teratavua", + "STR_SHOW_ALL_DEV":"Näytä kaikki laitteet", + "STR_PART_ALIGN_4KB":"Järjestä osiot 4Kt mukaisesti", + "STR_WEB_COMMUNICATION_ERR":"Kommunikaatiovirhe:", + "STR_WEB_REMOTE_ABNORMAL":"Kommunikaatiovirhe: epätavanomainen etävaste", + "STR_WEB_REQUEST_TIMEOUT":"Kommunikaatiovirhe: pyynnön aikavaste ylittyi", + "STR_WEB_SERVICE_UNAVAILABLE":"Kommunikaatiovirhe: palvelu on tavoittamattomissa", + "STR_WEB_TOKEN_MISMATCH":"Taustaohjelman tila päivittyi, ole hyvä ja yritä myöhemmin uudelleen.", + "STR_WEB_SERVICE_BUSY":"Palvelu ruuhkautunut, ole hyvä ja yritä myöhemmin uudelleen.", + "STR_MENU_VTSI_CREATE":"Luo VTSI -tiedosto", + "STR_VTSI_CREATE_TIP":"Tällä kerralla laitteeseen ei kirjoiteta, vaan luodaan ainoastaan VTSI -tiedosto#@Jatketaanko?", + "STR_VTSI_CREATE_SUCCESS":"VTSI -tiedosto luotiin onnistuneesti!#@Voit käyttää Rufus-ohjelmaa(3.15+) kirjoittaaksesi sen laitteeseen viimeistelläksesi Ventoy-asennuksen.", + "STR_VTSI_CREATE_FAILED":"VTSI -tiedoston luominen epäonnistui.", + "STRXXX":"" } ] diff --git a/vtoyjump/vtoyjump/vtoyjump.c b/vtoyjump/vtoyjump/vtoyjump.c index 46a5fceb..aea27118 100644 --- a/vtoyjump/vtoyjump/vtoyjump.c +++ b/vtoyjump/vtoyjump/vtoyjump.c @@ -40,6 +40,9 @@ static CHAR g_prog_full_path[MAX_PATH]; static CHAR g_prog_dir[MAX_PATH]; static CHAR g_prog_name[MAX_PATH]; +#define AUTO_RUN_BAT "X:\\VentoyAutoRun.bat" +#define AUTO_RUN_LOG "X:\\VentoyAutoRun.log" + #define LOG_FILE "X:\\Windows\\system32\\ventoy.log" #define MUTEX_LOCK(hmutex) if (hmutex != NULL) LockStatus = WaitForSingleObject(hmutex, INFINITE) #define MUTEX_UNLOCK(hmutex) if (hmutex != NULL && WAIT_OBJECT_0 == LockStatus) ReleaseMutex(hmutex) @@ -1251,7 +1254,9 @@ static int VentoyHook(ventoy_os_param *param) int rc; BOOL find = FALSE; CHAR Letter; + CHAR MntLetter; DWORD Drives; + DWORD NewDrives; DISK_EXTENT DiskExtent; UINT8 UUID[16]; CHAR IsoPath[MAX_PATH]; @@ -1316,7 +1321,28 @@ static int VentoyHook(ventoy_os_param *param) Log("Find ISO file <%s>", IsoPath); + Drives = GetLogicalDrives(); + Log("Drives before mount: 0x%x", Drives); + rc = MountIsoFile(IsoPath, DiskExtent.DiskNumber); + + NewDrives = GetLogicalDrives(); + Log("Drives after mount: 0x%x", NewDrives); + + MntLetter = 'A'; + NewDrives = (NewDrives ^ Drives); + while (NewDrives) + { + if (NewDrives & 0x01) + { + Log("Maybe the ISO file is mounted at %C:", MntLetter); + break; + } + + NewDrives >>= 1; + MntLetter++; + } + Log("Mount ISO FILE: %s", rc == 0 ? "SUCCESS" : "FAILED"); // for protect @@ -1348,6 +1374,44 @@ static int VentoyHook(ventoy_os_param *param) { Log("decompress injection archive %s...", IsoPath); DecompressInjectionArchive(IsoPath, DiskExtent.DiskNumber); + + if (IsFileExist("%s", AUTO_RUN_BAT)) + { + HANDLE hOut; + DWORD flags = CREATE_NO_WINDOW; + CHAR StrBuf[1024]; + STARTUPINFOA Si; + PROCESS_INFORMATION Pi; + SECURITY_ATTRIBUTES Sa = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE }; + + Log("%s exist, now run it...", AUTO_RUN_BAT); + + GetStartupInfoA(&Si); + + hOut = CreateFileA(AUTO_RUN_LOG, + FILE_APPEND_DATA, + FILE_SHARE_WRITE | FILE_SHARE_READ, + &Sa, + OPEN_ALWAYS, + FILE_ATTRIBUTE_NORMAL, + NULL); + + Si.dwFlags |= STARTF_USESTDHANDLES; + if (hOut != INVALID_HANDLE_VALUE) + { + Si.hStdError = hOut; + Si.hStdOutput = hOut; + } + + sprintf_s(IsoPath, sizeof(IsoPath), "%C:\\%s", Letter, param->vtoy_img_path); + sprintf_s(StrBuf, sizeof(StrBuf), "cmd.exe /c %s \"%s\" %C", AUTO_RUN_BAT, IsoPath, MntLetter); + CreateProcessA(NULL, StrBuf, NULL, NULL, TRUE, flags, NULL, NULL, &Si, &Pi); + WaitForSingleObject(Pi.hProcess, INFINITE); + } + else + { + Log("%s not exist...", AUTO_RUN_BAT); + } } else {