#include <fstream> #include <string> #include "miniz/miniz.h" #include "zipdata.h" // xxd -i yourfile.zip > zipdata.h // Write embedded ZIP data to a temporary file std::string writeTempZipFile() { char tempPath[MAX_PATH]; GetTempPathA(MAX_PATH, tempPath); std::string tempZipPath = std::string(tempPath) + "\\mEditorData.zip"; std::ofstream outFile(tempZipPath, std::ios::binary); if (!outFile) { std::cerr << "Failed to create temporary file!" << std::endl; return ""; } outFile.write(reinterpret_cast<char*>(data_zip), data_zip_len); outFile.close(); std::cout << "Temporary ZIP file created: " << tempZipPath << std::endl; return tempZipPath; } // Extract the ZIP file using miniz bool extractZipFile(const std::string& zipPath, const std::string& outputDir) { mz_zip_archive zipArchive; memset(&zipArchive, 0, sizeof(zipArchive)); if (!mz_zip_reader_init_file(&zipArchive, zipPath.c_str(), 0)) { std::cerr << "Failed to open ZIP file: " << zipPath << std::endl; return false; } // Set the password for decryption //mz_zip_reader_set_password(&zipArchive, "654321"); int numFiles = mz_zip_reader_get_num_files(&zipArchive); for (int i = 0; i < numFiles; i++) { mz_zip_archive_file_stat fileStat; if (!mz_zip_reader_file_stat(&zipArchive, i, &fileStat)) { std::cerr << "Failed to read file info at index " << i << std::endl; continue; } std::string outputFilePath = outputDir + "\\" + fileStat.m_filename; if (mz_zip_reader_is_file_a_directory(&zipArchive, i)) { //std::string dirPath = outputFilePath.substr(0, outputFilePath.find_last_of("\\")); CreateDirectoryA(outputFilePath.c_str(), NULL); continue; } if (!mz_zip_reader_extract_to_file(&zipArchive, i, outputFilePath.c_str(), 0)) { std::cerr << "Failed to extract file: " << fileStat.m_filename << std::endl; continue; } std::cout << "Extracted: " << fileStat.m_filename << std::endl; } mz_zip_reader_end(&zipArchive); return true; }