Browse Source

Make bundling work on windows.

Tobias Hieta 9 years ago
parent
commit
eb1ed7096e

+ 1 - 11
CMakeModules/CPackConfiguration.cmake

@@ -32,7 +32,7 @@ set(CPACK_IFW_PACKAGE_PUBLISHER "Plex")
 set(CPACK_IFW_PRODUCT_URL "https://plex.tv")
 set(CPACK_IFW_PACKAGE_ICON ${CMAKE_SOURCE_DIR}/bundle/win/Plex.ico)
 set(CPACK_IFW_PACKAGE_WINDOW_ICON ${CMAKE_SOURCE_DIR}/resources/images/icon.png)
-set(CPACK_IFW_TARGET_DIRECTORY "C:\\Program Files\\PlexMediaPlayer")
+set(CPACK_IFW_TARGET_DIRECTORY "C:/Program Files/PlexMediaPlayer")
 
 if(APPLE)
   set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
@@ -46,19 +46,9 @@ include(CPack)
 cpack_add_component(Core DISPLAY_NAME "Plex Media Player" DESCRIPTION "Plex Media Player (Core Application)" REQUIRED)
 
 if(WIN32 AND DEFINED DEPENDENCY_ROOT)
-  FILE(TO_CMAKE_PATH ${DEPENDENCY_ROOT} tmp)
-  install(FILES ${tmp}/bin/mpv-1.dll DESTINATION .)
-  install(FILES ${tmp}/lib/SDL2.dll DESTINATION .)
-  install(FILES ${tmp}/lib/libcec.dll DESTINATION .)
-  if(IS_DIRECTORY ${CMAKE_BINARY_DIR}/extradlls)
-    file(GLOB EXTRADLLS ${CMAKE_BINARY_DIR}/extradlls/*.dll)
-    install(FILES ${EXTRADLLS} DESTINATION .)
-  endif()
   install(FILES ${CMAKE_SOURCE_DIR}/bundle/win/qt.conf DESTINATION .)
-  install(FILES ${CMAKE_SOURCE_DIR}/bundle/win/PlexMediaPlayer-NoChromiumGPU.bat DESTINATION .)
   #add_custom_command(TARGET package POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/scripts/WindowsSign.cmd  ${CPACK_PACKAGE_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}.exe WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
   # group/component configuration
-  message(STATUS configure IFW)
   include(CPackIFW)
   cpack_ifw_configure_component(Core PRIORITY 1 SCRIPT ${CMAKE_SOURCE_DIR}/bundle/win/shortcut.qs)
 endif(WIN32 AND DEFINED DEPENDENCY_ROOT)

+ 0 - 7
CMakeModules/CompleteBundleOSX.cmake.in

@@ -14,13 +14,6 @@ endforeach(BIN ${BINS})
 set(ENV{DYLD_LIBRARY_PATH} @QTROOT@/lib:@DEPENDENCY_ROOT@/lib)
 set(ENV{DYLD_FRAMEWORK_PATH} @QTROOT@/lib:@DEPENDENCY_ROOT@/lib)
 
-# Write qt.conf in the Qt depends directory so that the Qt tools can find QML files
-set(QTCONFCONTENT "[Paths]
-Prefix=@QTROOT@
-")
-
-file(WRITE @QTROOT@/bin/qt.conf ${QTCONFCONTENT})
-
 execute_process(
   COMMAND @QTROOT@/bin/macdeployqt ${args}
   WORKING_DIRECTORY @QTROOT@/bin

+ 13 - 0
CMakeModules/CompleteBundleWin.cmake.in

@@ -1,5 +1,18 @@
 execute_process(COMMAND @QTROOT@/bin/windeployqt.exe --qmldir @SOURCE_ROOT@/src/ui ${CMAKE_INSTALL_PREFIX}/PlexMediaPlayer.exe)
 
+# on windows windeployqt doesnt install non qt libraries, let cmake do that
+include(BundleUtilities)
+
+foreach(d @CMAKE_FIND_ROOT_PATH@)
+  list(APPEND SEARCHDIRS ${d}/bin)
+  list(APPEND SEARCHDIRS ${d}/lib)
+endforeach()
+
+get_filename_component(CEC_DIR @CEC_LIBRARY@ DIRECTORY)
+list(APPEND SEARCHDIRS ${CEC_DIR})
+
+fixup_bundle("${CMAKE_INSTALL_PREFIX}/PlexMediaPlayer.exe" "" "${SEARCHDIRS}") 
+
 if(@DO_SIGN@)
   file(GLOB_RECURSE EXES ${CMAKE_INSTALL_PREFIX}/*.exe ${CMAKE_INSTALL_PREFIX}/*.dll)
   set(ENV{errorlevel} 1)

+ 7 - 0
CMakeModules/QtConfiguration.cmake

@@ -6,6 +6,13 @@ list(APPEND CMAKE_FIND_ROOT_PATH ${dir})
 list(APPEND CMAKE_PREFIX_PATH ${dir})
 include_directories(${dir}/include)
 
+# Write qt.conf in the Qt depends directory so that the Qt tools can find QML files
+set(QTCONFCONTENT "[Paths]
+Prefix=${QTROOT}
+")
+
+file(WRITE ${QTROOT}/bin/qt.conf ${QTCONFCONTENT})
+
 set(REQUIRED_QT_VERSION "5.5.0")
 
 message(STATUS ${QTROOT})