Skip to content

Commit

Permalink
move windows nsis parts for cpack into external files
Browse files Browse the repository at this point in the history
  • Loading branch information
majestrate committed May 30, 2022
1 parent e480e36 commit 065e52a
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 8 deletions.
28 changes: 20 additions & 8 deletions cmake/win32_installer_deps.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,26 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "Lokinet")
set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/win32-setup/lokinet.ico")
set(CPACK_NSIS_DEFINES "RequestExecutionLevel admin")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ifFileExists $INSTDIR\\\\bin\\\\tuntap-install.exe 0 +2\\nExecWait '$INSTDIR\\\\bin\\\\tuntap-install.exe /S'\\nExecWait '$INSTDIR\\\\bin\\\\lokinet.exe --install'\\nExecWait 'sc failure lokinet reset= 60 actions= restart/1000'\\nExecWait '$INSTDIR\\\\bin\\\\lokinet.exe -g C:\\\\ProgramData\\\\lokinet\\\\lokinet.ini'\\nCopyFiles '$INSTDIR\\\\share\\\\bootstrap.signed' C:\\\\ProgramData\\\\lokinet\\\\bootstrap.signed\\n")
set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecWait 'net stop lokinet'\\nExecWait 'taskkill /f /t /im lokinet-gui.exe'\\nExecWait '$INSTDIR\\\\bin\\\\lokinet.exe --remove'\\nRMDir /r /REBOOTOK C:\\\\ProgramData\\\\lokinet")
set(CPACK_NSIS_CREATE_ICONS_EXTRA
"CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Lokinet.lnk' '$INSTDIR\\\\share\\\\gui\\\\lokinet-gui.exe'"
)
set(CPACK_NSIS_DELETE_ICONS_EXTRA
"Delete '$SMPROGRAMS\\\\$START_MENU\\\\Lokinet.lnk'"
)


function(read_nsis_file filename outvar)
file(STRINGS "${filename}" _outvar)
list(TRANSFORM _outvar REPLACE "\\\\" "\\\\\\\\")
list(JOIN _outvar "\\n" out)
set(${outvar} ${out} PARENT_SCOPE)
endfunction()

read_nsis_file("${CMAKE_SOURCE_DIR}/win32-setup/extra_preinstall.nsis" _extra_preinstall)
read_nsis_file("${CMAKE_SOURCE_DIR}/win32-setup/extra_install.nsis" _extra_install)
read_nsis_file("${CMAKE_SOURCE_DIR}/win32-setup/extra_uninstall.nsis" _extra_uninstall)
read_nsis_file("${CMAKE_SOURCE_DIR}/win32-setup/extra_create_icons.nsis" _extra_create_icons)
read_nsis_file("${CMAKE_SOURCE_DIR}/win32-setup/extra_delete_icons.nsis" _extra_delete_icons)

set(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "${_extra_preinstall}")
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${_extra_install}")
set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${_extra_uninstall}")
set(CPACK_NSIS_CREATE_ICONS_EXTRA "${_extra_create_icons}")
set(CPACK_NSIS_DELETE_ICONS_EXTRA "${_extra_delete_icons}")

get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
list(REMOVE_ITEM CPACK_COMPONENTS_ALL "Unspecified")
1 change: 1 addition & 0 deletions win32-setup/extra_create_icons.nsis
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CreateShortCut '$SMPROGRAMS\$STARTMENU_FOLDER\Lokinet.lnk' '$INSTDIR\share\gui\lokinet-gui.exe'
1 change: 1 addition & 0 deletions win32-setup/extra_delete_icons.nsis
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CreateShortCut '$SMPROGRAMS\$STARTMENU_FOLDER\Lokinet.lnk' '$INSTDIR\share\gui\lokinet-gui.exe'
7 changes: 7 additions & 0 deletions win32-setup/extra_install.nsis
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ifFileExists $INSTDIR\bin\tuntap-install.exe 0 +2
ExecWait '$INSTDIR\bin\tuntap-install.exe /S'
ExecWait '$INSTDIR\bin\lokinet.exe --install'
ExecWait 'sc failure lokinet reset= 60 actions= restart/1000'
ExecWait '$INSTDIR\bin\lokinet.exe -g C:\ProgramData\lokinet\lokinet.ini'
CopyFiles '$INSTDIR\share\bootstrap.signed' C:\ProgramData\lokinet\bootstrap.signed

6 changes: 6 additions & 0 deletions win32-setup/extra_preinstall.nsis
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
IfFileExists $INSTDIR\bin\lokinet.exe 0 +3
ExecWait 'net stop lokinet'
ExecWait '$INSTDIR\bin\lokinet.exe --remove'

IfFileExists $INSTDIR\share\gui\lokinet.exe 0 +2
ExecWait 'taskkill /f /t /im lokinet-gui.exe'
5 changes: 5 additions & 0 deletions win32-setup/extra_uninstall.nsis
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ExecWait 'net stop lokinet'
ExecWait 'taskkill /f /t /im lokinet-gui.exe'
ExecWait '$INSTDIR\bin\lokinet.exe --remove'
RMDir /r /REBOOTOK C:\ProgramData\lokinet

0 comments on commit 065e52a

Please sign in to comment.