"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":""
}
]
static CHAR g_prog_dir[MAX_PATH];\r
static CHAR g_prog_name[MAX_PATH];\r
\r
+#define AUTO_RUN_BAT "X:\\VentoyAutoRun.bat"\r
+#define AUTO_RUN_LOG "X:\\VentoyAutoRun.log"\r
+\r
#define LOG_FILE "X:\\Windows\\system32\\ventoy.log"\r
#define MUTEX_LOCK(hmutex) if (hmutex != NULL) LockStatus = WaitForSingleObject(hmutex, INFINITE)\r
#define MUTEX_UNLOCK(hmutex) if (hmutex != NULL && WAIT_OBJECT_0 == LockStatus) ReleaseMutex(hmutex)\r
int rc;\r
BOOL find = FALSE;\r
CHAR Letter;\r
+ CHAR MntLetter;\r
DWORD Drives;\r
+ DWORD NewDrives;\r
DISK_EXTENT DiskExtent;\r
UINT8 UUID[16];\r
CHAR IsoPath[MAX_PATH];\r
\r
Log("Find ISO file <%s>", IsoPath);\r
\r
+ Drives = GetLogicalDrives();\r
+ Log("Drives before mount: 0x%x", Drives);\r
+\r
rc = MountIsoFile(IsoPath, DiskExtent.DiskNumber);\r
+\r
+ NewDrives = GetLogicalDrives();\r
+ Log("Drives after mount: 0x%x", NewDrives);\r
+\r
+ MntLetter = 'A';\r
+ NewDrives = (NewDrives ^ Drives);\r
+ while (NewDrives)\r
+ {\r
+ if (NewDrives & 0x01)\r
+ {\r
+ Log("Maybe the ISO file is mounted at %C:", MntLetter);\r
+ break;\r
+ }\r
+\r
+ NewDrives >>= 1;\r
+ MntLetter++;\r
+ }\r
+\r
Log("Mount ISO FILE: %s", rc == 0 ? "SUCCESS" : "FAILED");\r
\r
// for protect\r
{\r
Log("decompress injection archive %s...", IsoPath);\r
DecompressInjectionArchive(IsoPath, DiskExtent.DiskNumber);\r
+\r
+ if (IsFileExist("%s", AUTO_RUN_BAT))\r
+ {\r
+ HANDLE hOut;\r
+ DWORD flags = CREATE_NO_WINDOW;\r
+ CHAR StrBuf[1024];\r
+ STARTUPINFOA Si;\r
+ PROCESS_INFORMATION Pi;\r
+ SECURITY_ATTRIBUTES Sa = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };\r
+\r
+ Log("%s exist, now run it...", AUTO_RUN_BAT);\r
+\r
+ GetStartupInfoA(&Si);\r
+\r
+ hOut = CreateFileA(AUTO_RUN_LOG,\r
+ FILE_APPEND_DATA,\r
+ FILE_SHARE_WRITE | FILE_SHARE_READ,\r
+ &Sa,\r
+ OPEN_ALWAYS,\r
+ FILE_ATTRIBUTE_NORMAL,\r
+ NULL);\r
+\r
+ Si.dwFlags |= STARTF_USESTDHANDLES;\r
+ if (hOut != INVALID_HANDLE_VALUE)\r
+ {\r
+ Si.hStdError = hOut;\r
+ Si.hStdOutput = hOut;\r
+ }\r
+\r
+ sprintf_s(IsoPath, sizeof(IsoPath), "%C:\\%s", Letter, param->vtoy_img_path);\r
+ sprintf_s(StrBuf, sizeof(StrBuf), "cmd.exe /c %s \"%s\" %C", AUTO_RUN_BAT, IsoPath, MntLetter);\r
+ CreateProcessA(NULL, StrBuf, NULL, NULL, TRUE, flags, NULL, NULL, &Si, &Pi);\r
+ WaitForSingleObject(Pi.hProcess, INFINITE);\r
+ }\r
+ else\r
+ {\r
+ Log("%s not exist...", AUTO_RUN_BAT);\r
+ }\r
}\r
else\r
{\r