From 99771a68c38820e263bafe32f2c717ab44c41342 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Fri, 8 Jul 2022 14:12:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DOEM=E5=8E=82=E5=95=86?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E6=97=B6=EF=BC=8C=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E9=85=8D=E7=BD=AE=E4=B8=8D=E5=AE=8C=E5=85=A8=E7=9A=84?= =?UTF-8?q?BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- device/scanner.rc | 8 +- device/scanner.vcxproj | 9 +- device/scanner.vcxproj.filters | 15 ++- sane/sane.rc | 8 +- sane/sane.vcxproj | 4 +- sln/Release/hgsetver.exe | Bin 79360 -> 85504 bytes sln/hgsetver/hgsetver.cpp | 187 ++++++++++++++++++++++++++++++++- twain/brand.h | 2 +- 8 files changed, 204 insertions(+), 29 deletions(-) diff --git a/device/scanner.rc b/device/scanner.rc index 5d34081..d965968 100644 --- a/device/scanner.rc +++ b/device/scanner.rc @@ -51,8 +51,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 4,1015,2022,7061 - PRODUCTVERSION 4,1015,2022,7061 + FILEVERSION 4,1015,2022,7081 + PRODUCTVERSION 4,1015,2022,7081 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -69,12 +69,12 @@ BEGIN BEGIN VALUE "CompanyName", "Äþ²¨»ª¸ßÐÅÏ¢¿Æ¼¼ÓÐÏÞ¹«Ë¾" VALUE "FileDescription", "»ª¸ßɨÃèÒÇÓ¦ÓóÌÐò" - VALUE "FileVersion", "4.1015.2022.7061" + VALUE "FileVersion", "4.1015.2022.7081" VALUE "InternalName", "scanner.dll" VALUE "LegalCopyright", "Copyright (C) 2022" VALUE "OriginalFilename", "scanner.dll" VALUE "ProductName", "HUAGOScan" - VALUE "ProductVersion", "4.1015.2022.7061" + VALUE "ProductVersion", "4.1015.2022.7081" END END BLOCK "VarFileInfo" diff --git a/device/scanner.vcxproj b/device/scanner.vcxproj index d37e10c..e5c1b19 100644 --- a/device/scanner.vcxproj +++ b/device/scanner.vcxproj @@ -102,7 +102,7 @@ Level3 true - WIN32;HGSCANNER_EXPORT;CUSTOM_USBVIEW;BACKEND_NAME=hgdriver;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;HGSCANNER_EXPORT;CUSTOM_USBVIEW;OEM_NONE;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true 4996 MultiThreadedDebugDLL @@ -132,7 +132,7 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ true true true - WIN32;HGSCANNER_EXPORT;CUSTOM_USBVIEW;BACKEND_NAME=hgdriver;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;HGSCANNER_EXPORT;CUSTOM_USBVIEW;OEM_NONE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true 4996 stdcpp17 @@ -313,10 +313,9 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ + - - - + diff --git a/device/scanner.vcxproj.filters b/device/scanner.vcxproj.filters index 36f6393..3ab1e17 100644 --- a/device/scanner.vcxproj.filters +++ b/device/scanner.vcxproj.filters @@ -185,15 +185,6 @@ - - 头文件 - - - 头文件 - - - 头文件 - image @@ -395,6 +386,12 @@ 头文件 + + 头文件 + + + 头文件 + diff --git a/sane/sane.rc b/sane/sane.rc index 52642cc..b3f9326 100644 --- a/sane/sane.rc +++ b/sane/sane.rc @@ -248,8 +248,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 4,1015,2022,7061 - PRODUCTVERSION 4,1015,2022,7061 + FILEVERSION 4,1015,2022,7081 + PRODUCTVERSION 4,1015,2022,7081 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -266,12 +266,12 @@ BEGIN BEGIN VALUE "CompanyName", "Äþ²¨»ª¸ßÐÅÏ¢¿Æ¼¼ÓÐÏÞ¹«Ë¾" VALUE "FileDescription", "»ª¸ßɨÃèÒÇÓ¦ÓóÌÐò" - VALUE "FileVersion", "4.1015.2022.7061" + VALUE "FileVersion", "4.1015.2022.7081" VALUE "InternalName", "sane.dll" VALUE "LegalCopyright", "Copyright (C) 2022" VALUE "OriginalFilename", "sane.dll" VALUE "ProductName", "HUAGOScan" - VALUE "ProductVersion", "4.1015.2022.7061" + VALUE "ProductVersion", "4.1015.2022.7081" END END BLOCK "VarFileInfo" diff --git a/sane/sane.vcxproj b/sane/sane.vcxproj index 1b32e88..39c9a7f 100644 --- a/sane/sane.vcxproj +++ b/sane/sane.vcxproj @@ -103,7 +103,7 @@ Level3 true - BACKEND_NAME=hgsane;TWPP_IS_DS;EXPORT_SANE_API;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + BACKEND_NAME=hgsane;TWPP_IS_DS;EXPORT_SANE_API;WIN32;OEM_NONE;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true stdcpp17 4996 @@ -128,7 +128,7 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ true true true - BACKEND_NAME=hgsane;TWPP_IS_DS;EXPORT_SANE_API;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + BACKEND_NAME=hgsane;TWPP_IS_DS;EXPORT_SANE_API;WIN32;OEM_NONE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true stdcpp17 4996 diff --git a/sln/Release/hgsetver.exe b/sln/Release/hgsetver.exe index d0428d89d70892382a3ef549f759d4e11e0f82f1..5acd4233c9a55c4bd2e6b3f2fc0051feaeaa6a14 100644 GIT binary patch delta 30415 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∈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 diff --git a/sln/hgsetver/hgsetver.cpp b/sln/hgsetver/hgsetver.cpp index aebe056..61fadd0 100644 --- a/sln/hgsetver/hgsetver.cpp +++ b/sln/hgsetver/hgsetver.cpp @@ -568,6 +568,33 @@ namespace rc } } while (end); } + static bool change_file(const wchar_t* file, oem o, bool(__stdcall* modify)(std::wstring& cont, oem o)) + { + bom bm = BOM_UTF8; + std::wstring cont(load_file(file, &bm)); + bool ret = modify(cont, o); + + if (ret) + { + std::string bomstr(""); + + if (bm == BOM_UNICODE) + coding_util::bom::from_unicode(cont.c_str(), cont.length() * 2, got_str, &bomstr); + else if (bm == BOM_UTF8) + { + std::string utf8(""); + + coding_util::unicode_2_utf8(cont.c_str(), got_str, &utf8); + coding_util::bom::from_utf8(utf8.c_str(), utf8.length(), got_str, &bomstr); + } + else + coding_util::unicode_2_ansi(cont.c_str(), got_str, &bomstr); + file_util::save_2_file(bomstr.c_str(), bomstr.length(), file); + } + + return ret; + } + bool set_rc_ver(const wchar_t* file, int v_1, int v_2, int v_3, int v_4, const wchar_t* company_name, const wchar_t* short_company_name, const wchar_t* vender) { bom bm = BOM_UTF8; @@ -702,6 +729,138 @@ namespace rc return true; } + bool change_vcxproj_predefine(const wchar_t* file, oem o) + { + bom bm = BOM_UTF8; + std::wstring cont(load_file(file, &bm)), backend(L""), lead(L"BACKEND_NAME="); + size_t pos = cont.find(lead), end = 0; + + //if (pos == std::wstring::npos) + // return false; + if (cont.length() < 1000) + return false; + + if (o == OEM_HANWANG) + backend = L"hw"; + else if (o == OEM_LISICHENG) + backend = L"lsc"; + else + backend = L"hg"; + backend += L"sane"; + + while (pos != std::wstring::npos) + { + pos += lead.length(); + end = pos; + while (cont[end] != L';' && cont[end] != L'<') + end++; + cont.replace(pos, end - pos, backend); + pos += backend.length(); + pos = cont.find(lead, pos); + } + + pos = cont.find(L"OEM_"); + while (pos != std::wstring::npos) + { + end = pos + 4; + while (cont[end] != L';' && cont[end] != L'<') + end++; + if (from_str(cont.substr(pos, end - pos).c_str()) != OEM_NOT) + { + cont.replace(pos, end - pos, oem_str(o)); + end = pos + oem_str(o).length(); + } + pos = cont.find(L"OEM_", end); + } + + std::string bomstr(""); + if (bm == BOM_UNICODE) + coding_util::bom::from_unicode(cont.c_str(), cont.length() * 2, got_str, &bomstr); + else if (bm == BOM_UTF8) + { + std::string utf8(""); + + coding_util::unicode_2_utf8(cont.c_str(), got_str, &utf8); + coding_util::bom::from_utf8(utf8.c_str(), utf8.length(), got_str, &bomstr); + } + else + coding_util::unicode_2_ansi(cont.c_str(), got_str, &bomstr); + file_util::save_2_file(bomstr.c_str(), bomstr.length(), file); + + return true; + } + + bool __stdcall change_sane_def(std::wstring& cont, oem o) + { + std::wstring backend(L"sane_"), prev(L"_hgsane_"); + + if (o == OEM_HANWANG) + backend.insert(0, L"_hw"); + else if (o == OEM_LISICHENG) + backend.insert(0, L"_lsc"); + else + backend.insert(0, L"_hg"); + + if (cont.find(backend) != std::wstring::npos) + return true; + + if (cont.find(prev) == std::wstring::npos) + { + prev = L"_hwsane_"; + if (cont.find(prev) == std::wstring::npos) + { + prev = L"_lscsane_"; + if (cont.find(prev) == std::wstring::npos) + return false; + } + } + + size_t pos = cont.find(prev); + while (pos != std::wstring::npos) + { + cont.replace(pos, prev.length(), backend); + pos += backend.length(); + pos = cont.find(prev, pos); + } + + return true; + } + bool __stdcall change_device_def(std::wstring& cont, oem o) + { + std::wstring backend(L"_scanner_"), prev(L"hg_scanner_"); + + if (o == OEM_HANWANG) + backend.insert(0, L"hw"); + else if (o == OEM_LISICHENG) + backend.insert(0, L"lsc"); + else + backend.insert(0, L"hg"); + + if (cont.find(backend) != std::wstring::npos) + return true; + + if (cont.find(prev) == std::wstring::npos) + { + prev = L"hw_scanner_"; + if (cont.find(prev) == std::wstring::npos) + { + prev = L"lsc_scanner_"; + if (cont.find(prev) == std::wstring::npos) + return false; + } + } + + size_t pos = cont.find(prev); + while (pos != std::wstring::npos) + { + cont.replace(pos, prev.length(), backend); + pos += backend.length(); + pos = cont.find(prev, pos); + } + + return true; + } + }; static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main) @@ -762,20 +921,40 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main coding_util::unicode_2_ansi(unic.c_str(), got_str, &cont); file_util::save_2_file(cont.c_str(), cont.length(), file); - std::wstring cn(L""), scn(L""), vendor(L""), base(file), rcf(L""); + std::wstring cn(L""), scn(L""), vs(L""), base(file), rcf(L""); STR_PARENT_FOLDER(base); - if (rc::get_version_from_file(file, &main, &sub, &build, &patch, &cn, &scn, &vendor)) + if (rc::get_version_from_file(file, &main, &sub, &build, &patch, &cn, &scn, &vs)) { + rcf = base + L"\\..\\sane\\sane.vcxproj"; + STR_SIMPLIFY_PATH(rcf); + if(!rc::change_vcxproj_predefine(rcf.c_str(), vendor)) + std::wcout << "change predefines failed: " << rcf.c_str() << std::endl; + rcf = base + L"\\..\\sane\\sane.rc"; STR_SIMPLIFY_PATH(rcf); - if (!rc::set_rc_ver(rcf.c_str(), main, sub, build, patch, cn.c_str(), scn.c_str(), vendor.c_str())) + if (!rc::set_rc_ver(rcf.c_str(), main, sub, build, patch, cn.c_str(), scn.c_str(), vs.c_str())) std::wcout << "change version failed: " << rcf.c_str() << std::endl; + rcf = base + L"\\..\\sane\\sane.def"; + STR_SIMPLIFY_PATH(rcf); + if(!rc::change_file(rcf.c_str(), vendor, rc::change_sane_def)) + std::wcout << "change exporting-definition failed: " << rcf.c_str() << std::endl; + + rcf = base + L"\\..\\device\\scanner.vcxproj"; + STR_SIMPLIFY_PATH(rcf); + if(!rc::change_vcxproj_predefine(rcf.c_str(), vendor)) + std::wcout << "change predefines failed: " << rcf.c_str() << std::endl; + rcf = base + L"\\..\\device\\scanner.rc"; STR_SIMPLIFY_PATH(rcf); - if (!rc::set_rc_ver(rcf.c_str(), main, sub, build, patch, cn.c_str(), scn.c_str(), vendor.c_str())) + if (!rc::set_rc_ver(rcf.c_str(), main, sub, build, patch, cn.c_str(), scn.c_str(), vs.c_str())) std::wcout << "change version failed: " << rcf.c_str() << std::endl; + + rcf = base + L"\\..\\device\\device.def"; + STR_SIMPLIFY_PATH(rcf); + if(!rc::change_file(rcf.c_str(), vendor, rc::change_device_def)) + std::wcout << "change exporting-definition failed: " << rcf.c_str() << std::endl; } else { diff --git a/twain/brand.h b/twain/brand.h index 2bf0c12..4c8e5e6 100644 --- a/twain/brand.h +++ b/twain/brand.h @@ -8,7 +8,7 @@ #define VERSION_MAIN 4 #define VERSION_SUB 1015 #define VERSION_BUILD 2022 -#define VERSION_PATCH 7061 +#define VERSION_PATCH 7081 #define TO_STR(a) #a #define TO_VER_STR(vs) TO_STR(v##vs)