From d45a9b0803622f3fc6bc341a1e51dd46ac9f9db7 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Thu, 28 Jul 2022 17:31:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=BB=84=E4=BB=B6=E5=BA=93?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8F=8A=E8=BE=93=E5=87=BA=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.bat | 2 +- build_all.bat | 42 +++++++-------- device/scanner.rc | 8 +-- device/scanner.vcxproj | 37 +++++++------ sane/sane.rc | 8 +-- sane/sane.vcxproj | 45 ++++++++-------- sln/Release/hgsetver.exe | Bin 88576 -> 92672 bytes sln/hgsetver/hgsetver.cpp | 100 ++++++++++++++++++++++++++++++++++-- twain/brand.h | 54 ------------------- twain/twain.vcxproj | 24 +++++---- twain/twain.vcxproj.filters | 2 +- twain/twain/huagaods.cpp | 4 +- 12 files changed, 188 insertions(+), 138 deletions(-) delete mode 100644 twain/brand.h diff --git a/build.bat b/build.bat index 61fe668..db6c3f6 100644 --- a/build.bat +++ b/build.bat @@ -118,7 +118,7 @@ goto end call %dev%\..\..\..\vc\auxiliary\build\vcvars32.bat ) -"%~dp0\sln\release\hgsetver.exe" "%~dp0\twain\brand.h" -oem %OEM% -cpu %CPU% -pid %PID% %COMPILE_RANGE% %NOT_INCREASE_VER% +"%~dp0\sln\release\hgsetver.exe" "%~dp0\..\sdk\include\huagao\brand.h" -oem %OEM% -cpu %CPU% -pid %PID% %COMPILE_RANGE% %NOT_INCREASE_VER% if %COMPILE_RANGE%=="" ( MSBuild.exe "%~dp0\device\scanner.vcxproj" /p:Configuration=Release /p:Platform=x86 MSBuild.exe "%~dp0\sane\sane.vcxproj" /p:Configuration=Release /p:Platform=x86 diff --git a/build_all.bat b/build_all.bat index e423dd6..e92804f 100644 --- a/build_all.bat +++ b/build_all.bat @@ -11,29 +11,29 @@ if "%1"=="nov" ( if "%OEM%"=="hw" ( build.bat hw x86 0x1000 %NOV% -build.bat hw onlytwain 0x1002 %NOV% -build.bat hw onlytwain 0x7000 %NOV% -build.bat hw onlytwain 0x7002 %NOV% -build.bat hw onlytwain 0x7039 %NOV% -build.bat hw onlytwain 0x8000 %NOV% -build.bat hw onlytwain 0x9000 %NOV% +build.bat hw onlytwain 0x1002 nov +build.bat hw onlytwain 0x7000 nov +build.bat hw onlytwain 0x7002 nov +build.bat hw onlytwain 0x7039 nov +build.bat hw onlytwain 0x8000 nov +build.bat hw onlytwain 0x9000 nov ) else if "%OEM%" == "lsc" ( build.bat lsc x86 0x8200 %NOV% -build.bat lsc onlytwain 0x8420 %NOV% -build.bat lsc onlytwain 0x8429 %NOV% -build.bat lsc onlytwain 0x8520 %NOV% -build.bat lsc onlytwain 0x8529 %NOV% -build.bat lsc onlytwain 0x8620 %NOV% -build.bat lsc onlytwain 0x8629 %NOV% -build.bat lsc onlytwain 0x8730 %NOV% -build.bat lsc onlytwain 0x8739 %NOV% +build.bat lsc onlytwain 0x8420 nov +build.bat lsc onlytwain 0x8429 nov +build.bat lsc onlytwain 0x8520 nov +build.bat lsc onlytwain 0x8529 nov +build.bat lsc onlytwain 0x8620 nov +build.bat lsc onlytwain 0x8629 nov +build.bat lsc onlytwain 0x8730 nov +build.bat lsc onlytwain 0x8739 nov ) else ( build.bat x86 0x100 %NOV% -build.bat onlytwain 0x200 %NOV% -build.bat onlytwain 0x300 %NOV% -build.bat onlytwain 0x400 %NOV% -build.bat onlytwain 0x139 %NOV% -build.bat onlytwain 0x239 %NOV% -build.bat onlytwain 0x439 %NOV% -build.bat onlytwain 0x402 %NOV% +build.bat onlytwain 0x200 nov +build.bat onlytwain 0x300 nov +build.bat onlytwain 0x400 nov +build.bat onlytwain 0x139 nov +build.bat onlytwain 0x239 nov +build.bat onlytwain 0x439 nov +build.bat onlytwain 0x402 nov ) diff --git a/device/scanner.rc b/device/scanner.rc index f04662f..ba7e981 100644 --- a/device/scanner.rc +++ b/device/scanner.rc @@ -51,8 +51,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 4,1030,2022,7271 - PRODUCTVERSION 4,1030,2022,7271 + FILEVERSION 4,1032,2022,7281 + PRODUCTVERSION 4,1032,2022,7281 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -69,12 +69,12 @@ BEGIN BEGIN VALUE "CompanyName", "Äþ²¨»ª¸ßÐÅÏ¢¿Æ¼¼ÓÐÏÞ¹«Ë¾" VALUE "FileDescription", "»ª¸ßɨÃèÒÇÓ¦ÓóÌÐò" - VALUE "FileVersion", "4.1030.2022.7271" + VALUE "FileVersion", "4.1032.2022.7281" VALUE "InternalName", "scanner.dll" VALUE "LegalCopyright", "Copyright (C) 2022" VALUE "OriginalFilename", "scanner.dll" VALUE "ProductName", "HUAGOScan" - VALUE "ProductVersion", "4.1030.2022.7271" + VALUE "ProductVersion", "4.1032.2022.7281" END END BLOCK "VarFileInfo" diff --git a/device/scanner.vcxproj b/device/scanner.vcxproj index e71fa37..1c0adda 100644 --- a/device/scanner.vcxproj +++ b/device/scanner.vcxproj @@ -119,11 +119,12 @@ - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir %FINAL_DIR% copy "$(TargetPath)" "$(SolutionDir)..\..\release\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" +move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" @@ -151,10 +152,11 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -move /Y "$(OutDirFullPath)$(ProjectName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir %FINAL_DIR% +move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" @@ -174,10 +176,12 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ opencv_world3414.lib;IlmImf.lib;ittnotify.lib;leptonica.lib;libjasper.lib;libjpeg-turbo.lib;libpng.lib;libtiff.lib;libwebp.lib;log4cplusS.lib;quirc.lib;tiff.lib;zlib.lib;user32.lib - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -move /Y "$(OutDirFullPath)$(ProjectName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir %FINAL_DIR% +copy "$(TargetPath)" "$(SolutionDir)..\..\release\win\$(PlatformTarget)\$(Configuration)" +move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" @@ -201,10 +205,11 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ opencv_world3414.lib;IlmImf.lib;ittnotify.lib;leptonica.lib;libjasper.lib;libjpeg-turbo.lib;libpng.lib;libtiff.lib;libwebp.lib;log4cplusS.lib;quirc.lib;tiff.lib;zlib.lib;user32.lib - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -move /Y "$(OutDirFullPath)$(ProjectName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir %FINAL_DIR% +move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" diff --git a/sane/sane.rc b/sane/sane.rc index 10aaee5..a0452c9 100644 --- a/sane/sane.rc +++ b/sane/sane.rc @@ -248,8 +248,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 4,1030,2022,7271 - PRODUCTVERSION 4,1030,2022,7271 + FILEVERSION 4,1032,2022,7281 + PRODUCTVERSION 4,1032,2022,7281 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -266,12 +266,12 @@ BEGIN BEGIN VALUE "CompanyName", "Äþ²¨»ª¸ßÐÅÏ¢¿Æ¼¼ÓÐÏÞ¹«Ë¾" VALUE "FileDescription", "»ª¸ßɨÃèÒÇÓ¦ÓóÌÐò" - VALUE "FileVersion", "4.1030.2022.7271" + VALUE "FileVersion", "4.1032.2022.7281" VALUE "InternalName", "sane.dll" VALUE "LegalCopyright", "Copyright (C) 2022" VALUE "OriginalFilename", "sane.dll" VALUE "ProductName", "HUAGOScan" - VALUE "ProductVersion", "4.1030.2022.7271" + VALUE "ProductVersion", "4.1032.2022.7281" END END BLOCK "VarFileInfo" diff --git a/sane/sane.vcxproj b/sane/sane.vcxproj index 2fde2bf..ef17d2f 100644 --- a/sane/sane.vcxproj +++ b/sane/sane.vcxproj @@ -74,14 +74,14 @@ true $(SolutionDir)..\..\sdk\include;$(SolutionDir)..\..\code_device\include\;$(IncludePath) - $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\;$(LibraryPath) + $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\;$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\OEM\huagao;$(LibraryPath) $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ false $(SolutionDir)..\..\sdk\include;$(SolutionDir)..\..\code_device\include\;$(IncludePath) - $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\;$(LibraryPath) + $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\;$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\OEM\huagao;$(LibraryPath) $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ @@ -90,14 +90,14 @@ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\sdk\include;$(SolutionDir)..\..\code_device\include\;$(IncludePath) - $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\;$(LibraryPath) + $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\;$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\OEM\huagao;$(LibraryPath) false $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\sdk\include;$(SolutionDir)..\..\code_device\include\;$(IncludePath) - $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\;$(LibraryPath) + $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\;$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\OEM\huagao;$(LibraryPath) @@ -115,11 +115,12 @@ $(ProjectDir)sane.def - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir %FINAL_DIR% copy "$(TargetPath)" "$(SolutionDir)..\..\release\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" +move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" @@ -143,10 +144,11 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ $(ProjectDir)sane.def - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -move /Y "$(OutDirFullPath)$(ProjectName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir %FINAL_DIR% +move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" @@ -162,10 +164,12 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ true - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -move /Y "$(OutDirFullPath)$(ProjectName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir %FINAL_DIR% +copy "$(TargetPath)" "$(SolutionDir)..\..\release\win\$(PlatformTarget)\$(Configuration)" +move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" @@ -185,10 +189,11 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$ true - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -move /Y "$(OutDirFullPath)$(ProjectName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir %FINAL_DIR% +move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" diff --git a/sln/Release/hgsetver.exe b/sln/Release/hgsetver.exe index 005bfa8a7fd42c90602b0c7d71b001d1b0824013..023feed718f3fb69d1bc80c955b1d81f909fdcb8 100644 GIT binary patch delta 33893 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 diff --git a/sln/hgsetver/hgsetver.cpp b/sln/hgsetver/hgsetver.cpp index d9b641b..2feecde 100644 --- a/sln/hgsetver/hgsetver.cpp +++ b/sln/hgsetver/hgsetver.cpp @@ -245,13 +245,13 @@ static bool change_build(std::wstring& brand, int build) { wchar_t ver[20] = { 0 }; int next = 0, - bgn = find_line(brand, L"#define VERSION_BUILD", &next); + bgn = find_line(brand, L"#define VERSION_BUILD1", &next); bool ret = false; swprintf_s(ver, _countof(ver) - 1, L"%d\r\n", build); if (bgn >= 0) { - bgn += lstrlenW(L"#define VERSION_BUILD"); + bgn += lstrlenW(L"#define VERSION_BUILD1"); while (brand[bgn] == L'\t' || brand[bgn] == L' ') bgn++; if (brand[bgn] >= L'0' && brand[bgn] <= L'9') @@ -262,7 +262,7 @@ static bool change_build(std::wstring& brand, int build) } if (!ret) - std::wcout << L" change VERSION_BUILD to '" << ver << L"+' failed.\r\n"; + std::wcout << L" change VERSION_BUILD1 to '" << ver << L"+' failed.\r\n"; return ret; } @@ -393,7 +393,7 @@ namespace rc *v2 = _wtoi(cont.c_str() + bgn); } - tag = L"#define VERSION_BUILD"; + tag = L"#define VERSION_BUILD1"; if (v3) { bgn = find_line(cont, tag.c_str(), &end); @@ -614,6 +614,93 @@ namespace rc return ret; } + static void change_post_command_dir(std::wstring& cont, const std::wstring& o) + { + std::wstring target(L"\\$(Configuration)"); + size_t pos = cont.find(target); + + if (pos != std::wstring::npos) + { + pos += target.length(); + + size_t end = cont.find(L"\"", pos); + if (cont.find(L"\r\n", pos) < end) + end = cont.find(L"\r\n", pos); + if (end == std::wstring::npos) + end = cont.length(); + cont.replace(pos, end - pos, L"\\..\\oem\\" + o); + } + } + static void change_post_lib_dir(std::wstring& cont, const std::wstring& o) + { + std::wstring target(L"\\OEM"); + size_t pos = cont.find(target); + + if (pos != std::wstring::npos) + { + pos += target.length(); + + size_t end = cont.find(L";", pos); + if (cont.find(L""), end(L""), post(L""), os(L"huagao"); + size_t bgn = cont.find(first), len = cont.find(end); + + if (o == OEM_HANWANG) + os = L"hanvon"; + else if (o == OEM_LISICHENG) + os = L"lanxum"; + + while (len > bgn) + { + bgn += first.length(); + len -= bgn; + post = cont.substr(bgn, len); + + change_post_command_dir(post, os); + + cont.replace(bgn, len, post); + bgn += post.length() + end.length(); + bgn = cont.find(first, bgn); + len = cont.find(end, bgn); + } + + return true; + } + bool __stdcall change_lib_indir(std::wstring& cont, oem o) + { + std::wstring first(L""), end(L""), post(L""), os(L"huagao"); + size_t bgn = cont.find(first), len = cont.find(end); + + if (o == OEM_HANWANG) + os = L"hanvon"; + else if (o == OEM_LISICHENG) + os = L"lanxum"; + + while (len > bgn) + { + bgn += first.length(); + len -= bgn; + post = cont.substr(bgn, len); + + change_post_lib_dir(post, os); + + cont.replace(bgn, len, post); + bgn += post.length() + end.length(); + bgn = cont.find(first, bgn); + len = cont.find(end, bgn); + } + + return true; + } 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) { @@ -794,6 +881,8 @@ namespace rc } change_out_dir(cont, o); + change_lib_outdir(cont, o); + change_lib_indir(cont, o); std::string bomstr(""); if (bm == BOM_UNICODE) @@ -940,6 +1029,7 @@ namespace rc if (ok && param->change_out_dir) ok = change_out_dir(cont, param->o); + change_lib_outdir(cont, param->o); return ok; } @@ -1012,6 +1102,8 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main param.o = vendor; param.product_id = pid; STR_PARENT_FOLDER(base); + base += L"\\..\\..\\..\\code_twain\\twain"; + STR_TO_ABSOLUTE_PATH(base); if (rc::get_version_from_file(file, &main, &sub, &build, &patch, &cn, &scn, &vs)) { if (!twain_only) diff --git a/twain/brand.h b/twain/brand.h deleted file mode 100644 index 6133be8..0000000 --- a/twain/brand.h +++ /dev/null @@ -1,54 +0,0 @@ -#pragma once - -// Definitions for all versions ... -// -// - -#define OEM_NONE -#define VERSION_MAIN 4 -#define VERSION_SUB 1030 -#define VERSION_BUILD 2022 -#define VERSION_PATCH 7271 - -#define TO_STR(a) #a -#define TO_VER_STR(vs) TO_STR(v##vs) -#define VERSION_STR(a, b, c, d) TO_VER_STR(a.b.c.d) - -#define PRODUCT_ID 239 -#define MAKE_PID(pid) 0x##pid -#define PASTE_DEF(a, b) a##b -#define FINAL_STR(a, b, c) TO_STR(a##b##c) -#define MAKE_NAME(pid) FULL_NAME(PASTE_DEF(G, pid)) -#define FULL_FAMILY(a) FINAL_STR(a, \x20, Series) -#define MAKE_FAMILY(pid) FULL_FAMILY(PASTE_DEF(G, pid)) - -#ifdef OEM_HANWANG - -#define OEM_NAME L"\u6C49\u738B\u79D1\u6280\u80A1\u4EFD\u6709\u9650\u516C\u53F8" -#define OEM_SHORT_NAME L"\u6c49\u738b" -#define FULL_NAME(a) FINAL_STR(HANVONSCAN\x20, a, \x20TWAIN) -#define PRODUCT_VID 0x2903 -#define PRODUCT_VENDOR "Hanvon" - -#elif defined(OEM_LISICHENG) - -#define OEM_NAME L"\u5317\u4EAC\u7ACB\u601D\u8FB0\u8BA1\u7B97\u673A\u6280\u672F\u6709\u9650\u516C\u53F8" -#define OEM_SHORT_NAME L"\u7acb\u601d\u8fb0" -#define FULL_NAME(a) FINAL_STR(LANXUMSCAN\x20, a, \x20TWAIN) -#define PRODUCT_VID 0x31c9 -#define PRODUCT_VENDOR "Lanxum" - -#else - -#define OEM_NAME L"\u5B81\u6CE2\u534E\u9AD8\u4FE1\u606F\u79D1\u6280\u6709\u9650\u516C\u53F8" -#define OEM_SHORT_NAME L"\u534e\u9ad8" -#define FULL_NAME(a) FINAL_STR(HUAGOSCAN\x20, a, \x20TWAIN) -#define PRODUCT_VID 0x3072 -#define PRODUCT_VENDOR "HUAGO" - -#endif - - -#define PRODUCT_PID MAKE_PID(PRODUCT_ID) -#define PRODUCT_FAMILY MAKE_FAMILY(PRODUCT_ID) -#define PRODUCT_NAME MAKE_NAME(PRODUCT_ID) diff --git a/twain/twain.vcxproj b/twain/twain.vcxproj index c44c49e..671de31 100644 --- a/twain/twain.vcxproj +++ b/twain/twain.vcxproj @@ -49,7 +49,7 @@ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ $(LibraryPath) - huagaotwain239.ds + huagaotwain402.ds false @@ -57,7 +57,7 @@ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ $(LibraryPath) - huagaotwain239.ds + huagaotwain402.ds @@ -78,10 +78,11 @@ - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -move /Y "$(OutDirFullPath)$(TargetName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(TargetName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(TargetName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(TargetName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(TargetName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(TargetName).pdb" "%FINAL_DIR%" move /Y "$(TargetPath)" "$(OutDirFullPath)$(TargetName)" copy "$(OutDirFullPath)$(TargetName)" "$(WinDir)\twain_32\HuaGoScan" /y @@ -108,16 +109,17 @@ copy "$(OutDirFullPath)$(TargetName)" "$(WinDir)\twain_32\HuaGoScan" /y - mkdir $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -move /Y "$(OutDirFullPath)$(TargetName).exp" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(TargetName).lib" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(TargetName).pdb" "$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)" + set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao +mkdir "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(TargetName).exp" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(TargetName).lib" "%FINAL_DIR%" +move /Y "$(OutDirFullPath)$(TargetName).pdb" "%FINAL_DIR%" move /Y "$(TargetPath)" "$(OutDirFullPath)$(TargetName)" + - diff --git a/twain/twain.vcxproj.filters b/twain/twain.vcxproj.filters index 10ebab4..5d8a932 100644 --- a/twain/twain.vcxproj.filters +++ b/twain/twain.vcxproj.filters @@ -171,7 +171,7 @@ Headers - + Headers diff --git a/twain/twain/huagaods.cpp b/twain/twain/huagaods.cpp index d618be8..7a61d95 100644 --- a/twain/twain/huagaods.cpp +++ b/twain/twain/huagaods.cpp @@ -577,10 +577,10 @@ float trans_range(float val, float min_from, float max_from, float min_to, float //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // huagao_ds ... -#include "../brand.h" +#include "../../../sdk/include/huagao/brand.h" static Identity* srcIdent = new Identity( - Version(VERSION_MAIN, VERSION_SUB, Language::English, Country::China, VERSION_STR(VERSION_MAIN, VERSION_SUB, VERSION_BUILD, VERSION_PATCH)), + Version(VERSION_MAIN, VERSION_SUB, Language::English, Country::China, VERSION_STR(VERSION_MAIN, VERSION_SUB, VERSION_BUILD1, VERSION_PATCH)), DataGroup::Image, PRODUCT_VENDOR, PRODUCT_FAMILY, PRODUCT_NAME); static const SCANNERID scanner_guid = MAKE_SCANNER_ID(PRODUCT_PID, PRODUCT_VID);