Update windows installer according to CC#1891

This commit is contained in:
Patrick Pacher
2021-11-02 09:18:38 +01:00
parent 8d39d18c3a
commit 522a655452
6 changed files with 71 additions and 18 deletions
+2
View File
@@ -8,3 +8,5 @@
/linux/debian/portmaster/
*.exe
/windows/install_summary.nsh
/windows/install_finish.nsh
/windows/.wine
+24 -4
View File
@@ -1,17 +1,26 @@
# Note: Built for execution in container .github/actions/build-nsis
STARTURL ?= https://updates.safing.io/latest/windows_amd64/start/portmaster-start.exe
MAKENSIS ?= makensis
WINEPREFIX ?=
all: portmaster-uninstaller.exe portmaster-installer.exe
prepare-wine:
wget -O /tmp/nsis-installer.exe https://downloads.sourceforge.net/project/nsis/NSIS%203/3.08/nsis-3.08-setup.exe\?ts\=gAAAAABhgOi_QwQAJSZpPpH77UeO42NdRuMrbb9gHArOw_q1xuPE-qVke0568R-KvtJXhFvZ6Z142oyJlQYiDDLQtylZsOvtAw%3D%3D\&r\=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fnsis%2Ffiles%2FNSIS%25203%2F3.08%2Fnsis-3.08-setup.exe%2Fdownload%3Fuse_mirror%3Dnav%26download%3D
WINEPREFIX=$(shell pwd)/.wine wine /tmp/nsis-installer.exe
@echo "run: 'export WINEPREFIX=$(shell pwd)/.wine'"
wine-setup:
ifeq (,$(findstring $(shell pwd),$(WINEPREFIX)))
which sudo && sudo chown -R $$(id -u):$$(id -g) $(WINEPREFIX) || true
endif
portmaster-start.exe:
curl --fail --user-agent GitHub -o portmaster-start.exe $(STARTURL)
portmaster-uninstaller.exe: wine-setup portmaster-installer.nsi install_summary.nsh
makensis -DUNINSTALLER portmaster-installer.nsi
portmaster-uninstaller.exe: wine-setup portmaster-installer.nsi install_summary.nsh install_finish.nsh
$(MAKENSIS) -DUNINSTALLER portmaster-installer.nsi
wine ./uninstaller_pkg.exe
ifdef SIGN
@echo -e "If wanted, sign now (on Windows) using:\nsign.bat portmaster-uninstaller.exe\npress enter to continue"
@@ -23,16 +32,27 @@ install_summary.nsh: install_summary.rtf
perl -p -e 's/\r?\n/\$$\\r\$$\\n/' install_summary.rtf >> install_summary.nsh
echo '"' >> install_summary.nsh
portmaster-installer.exe: wine-setup portmaster-start.exe portmaster-installer.nsi portmaster-uninstaller.exe install_summary.nsh
makensis -DINSTALLER -DPRODUCTION portmaster-installer.nsi #Production enables good compression (takes longer)
install_finish.nsh: install_finish.rtf
echo -n '$${NSD_SetText} $$0 "' > install_finish.nsh
perl -p -e 's/\r?\n/\$$\\r\$$\\n/' install_finish.rtf >> install_finish.nsh
echo '"' >> install_finish.nsh
portmaster-installer.exe: wine-setup portmaster-start.exe portmaster-installer.nsi portmaster-uninstaller.exe install_summary.nsh install_finish.nsh
$(MAKENSIS) -DINSTALLER -DPRODUCTION portmaster-installer.nsi #Production enables good compression (takes longer)
ifdef SIGN
@echo -e "If wanted, sign now (on Windows) using:\nsign.bat portmaster-installer.exe\npress enter to continue"
@read x
endif
test: portmaster-installer.exe
mkdir -p /tmp/test-wine
rm -rf /tmp/test-wine/prefix || true
WINEPREFIX=/tmp/test-wine/prefix wine ./portmaster-installer.exe
clean:
rm -f portmaster-uninstaller.exe
rm -f uninstaller_pkg.exe
rm -f portmaster-installer.exe
rm -f install_summary.nsh
rm -f install_finish.nsh
rm -rf portmaster-start.exe
+7
View File
@@ -0,0 +1,7 @@
{\rtf1\ansi
\
\f1\b0\fs18 \
\f0\b Portmaster updates itself automatically. You can always follow the progress on fixes and new features on https://github.com/safing/portmaster/\
\
\f0\b In order to finish the Portmaster installation you must reboot your system.\
}
-5
View File
@@ -1,9 +1,4 @@
{\rtf1\ansi
\f0\b\fs30 Important
\
\f1\b0\fs18 \
\f0\b Portmaster updates itself automatically. Learn more about this on docs.safing.io.\
\
\
\f0\fs30 Details
\f1\b0\fs18 \
+38 -9
View File
@@ -1,5 +1,9 @@
Unicode true ; The Multi-Language-Part is a modified version of the MultiLanguage-NSIS-Example
!define MUI_ICON "portmaster.ico"
!define MUI_UNICON "portmaster.ico"
!define MUI_HEADERIMAGE
!include MUI2.nsh
!include nsDialogs.nsh
!include LogicLib.nsh
@@ -45,6 +49,7 @@ Var InstDir_parent
;!insertmacro MUI_PAGE_DIRECTORY
Page custom fnc_PageSummary_Show
!insertmacro MUI_PAGE_INSTFILES
Page custom fnc_PageFinish_Show
!insertmacro MUI_PAGE_FINISH
; Uninstaller Pages
@@ -54,6 +59,7 @@ Page custom fnc_PageSummary_Show
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
!endif
!include languages.nsh
Function fnc_PageSummary_Show
@@ -62,7 +68,7 @@ Function fnc_PageSummary_Show
${If} $0 == error
Abort
${EndIf}
!insertmacro MUI_HEADER_TEXT "Summary" "A summary of all that will be installed (and reversed on uninstall)"
!insertmacro MUI_HEADER_TEXT "Summary" "A summary of all that will be installed"
nsDialogs::CreateControl "RichEdit20A" ${ES_READONLY}|${WS_VISIBLE}|${WS_CHILD}|${WS_TABSTOP}|${WS_VSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN} ${WS_EX_STATICEDGE} 0 0 100% 119u ''
Pop $0
@@ -71,16 +77,33 @@ Function fnc_PageSummary_Show
nsDialogs::Show
FunctionEnd
Function fnc_PageFinish_Show
nsDialogs::Create 1018
Pop $0
${If} $0 == error
Abort
${EndIf}
!insertmacro MUI_HEADER_TEXT "Installation successfull" ""
nsDialogs::CreateControl "RichEdit20A" ${ES_READONLY}|${WS_VISIBLE}|${WS_CHILD}|${WS_TABSTOP}|${WS_VSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN} ${WS_EX_STATICEDGE} 0 0 100% 119u ''
Pop $0
!include install_finish.nsh
nsDialogs::Show
FunctionEnd
Function .onInit
ReadEnvStr $0 PROGRAMDATA
StrCpy $InstDir "$0\Safing\Portmaster"
StrCpy $InstDir_parent "$0\Safing"
SetRebootFlag true
FunctionEnd
Function un.onInit
ReadEnvStr $0 PROGRAMDATA
StrCpy $InstDir "$0\Safing\Portmaster"
StrCpy $InstDir_parent "$0\Safing"
SetRebootFlag true
FunctionEnd
!ifdef INSTALLER
@@ -88,7 +111,7 @@ Section "Install"
${If} ${IsWin10}
; do nothing
${ElseIf} ${AtLeastWin10}
MessageBox MB_ICONEXCLAMATION "This MS Version seems not to be supported, Portmaster is not installed"
MessageBox MB_ICONEXCLAMATION "This Windows Version is not supported. The Portmaster cannot be installed"
SetErrors
Abort
${EndIf}
@@ -140,6 +163,14 @@ dontUpdate:
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{7F00FB48-65D5-4BA8-A35B-F194DA7E1A51}\LocalServer32" "" '"$INSTDIR\${ExeName}" notifier-snoretoast'
; prepare directory structure
DetailPrint "Preparing installation directory ..."
nsExec::ExecToStack '$INSTDIR\${ExeName} clean-structure --data=$InstDir'
pop $0
pop $1
; we ignore the error here as a reboot is suggested anyway and that will
; fix the above error as well.
; download
DetailPrint "Downloading Portmaster modules, this may take a while ..."
nsExec::ExecToStack '$INSTDIR\${ExeName} update --data=$InstDir'
@@ -147,7 +178,9 @@ dontUpdate:
pop $1
; DetailPrint $1 ; # would print > BOF from portmaster-start log
${If} $0 <> 0
MessageBox MB_ICONEXCLAMATION "Failed to download Portmaster modules. The portmaster service will attempt to download the modules when started. Note that it will take some time before you see it starting."
MessageBox MB_ICONEXCLAMATION "Failed to download Portmaster assets required for installation. Please check your Internet connection and try installing again."
SetErrors
Abort
${EndIf}
; register Service
@@ -157,7 +190,7 @@ dontUpdate:
pop $1
DetailPrint $1
${If} $0 <> 0
MessageBox MB_ICONEXCLAMATION "Windows Service registration failed, see details."
MessageBox MB_ICONEXCLAMATION "Windows Service registration failed. Please contact our support at support@safing.io."
SetErrors
Abort
${EndIf}
@@ -182,12 +215,8 @@ dontUpdate:
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Portmaster" \
"NoModify" 1
; Start Portmaster Core Service and Notifier
DetailPrint "Starting Portmaster Core Service and Notifier ..."
Exec '"sc.exe" start PortmasterCore'
Exec '"$INSTDIR\${ExeName}" notifier --data=$InstDir'
SectionEnd
!endif
!ifdef UNINSTALLER
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB