diff --git a/cmake/build_helpers.cmake b/cmake/build_helpers.cmake index 4847d7b69..dda2fc97e 100644 --- a/cmake/build_helpers.cmake +++ b/cmake/build_helpers.cmake @@ -211,6 +211,7 @@ macro(configurePackingResources) set(CPACK_WIX_UI_BANNER "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix_banner.png") set(CPACK_WIX_UI_DIALOG "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix_dialog.png") set(CPACK_WIX_CULTURES "en-US;de-DE;ja-JP;it-IT;pt-BR;zh-CN;zh-TW;ru-RU") + set(CPACK_WIX_PATCH_FILE "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix_patch.xml") set(CPACK_PACKAGE_INSTALL_DIRECTORY "ImHex") set_property(INSTALL "$" @@ -314,7 +315,7 @@ macro(createPackage) POST_EXCLUDE_REGEXES ".*system32/.*\\.dll" ) - if(_c_deps_FILENAMES AND NOT _c_deps STREQUAL "") + if(_c_deps_FILENAMES AND _c_deps AND NOT (_c_deps STREQUAL "")) message(WARNING "Conflicting dependencies for library: \"${_c_deps}\"!") endif() @@ -333,30 +334,6 @@ macro(createPackage) endforeach() ]]) - if (NOT MSVC) - set(VERSIONLESS_LIBWINPTHREAD "${CMAKE_BINARY_DIR}/libwinpthread-1.dll") - find_file(LIBWINPTHREAD_PATH NAMES libwinpthread-1.dll) - if (NOT LIBWINPTHREAD_PATH) - message(FATAL_ERROR "Could not find libwinpthread-1.dll!") - endif() - - add_custom_command( - OUTPUT ${VERSIONLESS_LIBWINPTHREAD} - COMMAND $ ${LIBWINPTHREAD_PATH} ${VERSIONLESS_LIBWINPTHREAD} - DEPENDS version-stripper - COMMENT "Stripping version info from libwinpthread..." - VERBATIM - ) - - add_custom_target(versionless_libwinpthread ALL - DEPENDS ${VERSIONLESS_LIBWINPTHREAD} - ) - - install(FILES ${VERSIONLESS_LIBWINPTHREAD} - DESTINATION ${CMAKE_INSTALL_BINDIR} - ) - endif() - downloadImHexPatternsFiles(".") elseif(UNIX AND NOT APPLE) set_target_properties(libimhex PROPERTIES SOVERSION ${IMHEX_VERSION}) diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 283be0ba6..068970440 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -7,10 +7,6 @@ endif () add_subdirectory(gui) if (WIN32) add_subdirectory(forwarder) - - if (NOT MSVC) - add_subdirectory(version_stripper) - endif() endif () if (NOT EMSCRIPTEN) diff --git a/main/version_stripper/CMakeLists.txt b/main/version_stripper/CMakeLists.txt deleted file mode 100644 index a8c215add..000000000 --- a/main/version_stripper/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -project(version-stripper) - -add_executable(version-stripper - source/main.cpp -) \ No newline at end of file diff --git a/main/version_stripper/source/main.cpp b/main/version_stripper/source/main.cpp deleted file mode 100644 index 58494c2e4..000000000 --- a/main/version_stripper/source/main.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/** - * A simple utility to strip version resources from Windows executables. - * - * Usage: version_stripper - * - * This program copies the input executable to the output path and removes - * its version resource information. - * - * Based on https://github.com/shewitt-au/nuke_version - */ - -#include -#include -#include -#include -#include -#include - -using LangIds = std::vector; - -BOOL CALLBACK EnumResLangProc( - HMODULE hModule, - LPCTSTR lpszType, - LPCTSTR lpszName, - WORD wIDLanguage, - LONG_PTR lParam -) { - auto& langs = *reinterpret_cast(lParam); - langs.push_back(wIDLanguage); - return true; -} - -LangIds getLangIDs(LPCTSTR pExe) { - LangIds langs; - - HMODULE hMod = LoadLibrary(pExe); - if (hMod == nullptr) - throw std::runtime_error("LoadLibrary failed!"); - - BOOL bOK = EnumResourceLanguages( - hMod, // HMODULE hModule - RT_VERSION, // LPCTSTR lpType - MAKEINTRESOURCE(1), // LPCTSTR lpName - EnumResLangProc, // ENUMRESLANGPROC lpEnumFunc - reinterpret_cast(&langs) // LONG_PTR lParam - ); - - FreeLibrary(hMod); - - if (!bOK) - throw std::runtime_error("EnumResourceLanguages failed!"); - - return langs; -} - -void nukeVersionResource(LPCTSTR pExe) { - LangIds langs = getLangIDs(pExe); - - HANDLE hResUpdate = BeginUpdateResource(pExe, FALSE); - if (hResUpdate == nullptr) - throw std::runtime_error("BeginUpdateResource failed!"); - - for (WORD langID : langs) { - BOOL bOK = UpdateResource( - hResUpdate, // HANDLE hUpdate - RT_VERSION, // LPCTSTR lpType - MAKEINTRESOURCE(1), // LPCTSTR lpName - langID, // WORD wLanguage - nullptr, // LPVOID lpData - 0 // DWORD cb - ); - - if (!bOK) { - EndUpdateResource( - hResUpdate, // HANDLE hUpdate - TRUE // BOOL fDiscard - ); - - throw std::runtime_error("UpdateResource failed! Nothing done!"); - } - - } - - EndUpdateResource( - hResUpdate, // HANDLE hUpdate - FALSE // BOOL fDiscard - ); -} - -int main(int argc, char* argv[]) { - if (argc != 3) { - printf("Usage: %s \n", argv[0]); - return 1; - } - - std::filesystem::path inputPath(argv[1]); - std::filesystem::path outputPath(argv[2]); - - try { - std::filesystem::copy(inputPath, outputPath, std::filesystem::copy_options::overwrite_existing); - nukeVersionResource(outputPath.c_str()); - } catch (const std::exception& e) { - fprintf(stderr, "%s", e.what()); - std::filesystem::remove(outputPath); - return 1; - } - - return 0; -} \ No newline at end of file diff --git a/resources/dist/windows/wix_patch.xml b/resources/dist/windows/wix_patch.xml new file mode 100644 index 000000000..ff0219ba5 --- /dev/null +++ b/resources/dist/windows/wix_patch.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file