Mercurial > DynamicMail
changeset 52:02f7f88e3880 default tip
Add MacOS signing support with environment variable: CODESIGNIDENTITY.
Also add initial installer support on Mac, Windows and OS/2.
author | Brian Smith <brian@dbsoft.org> |
---|---|
date | Sun, 12 Mar 2023 17:04:20 -0500 |
parents | 80413c31d0b3 |
children | |
files | Makefile.in install/dmail-x64.nsi install/dmail-x86.nsi install/dmail.wis mac/installer.sh readme.txt |
diffstat | 6 files changed, 339 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.in Tue Jun 28 04:06:05 2022 -0500 +++ b/Makefile.in Sun Mar 12 17:04:20 2023 -0500 @@ -46,6 +46,10 @@ -chmod +x mac/finishup.sh -mac/finishup.sh "$(DISPLAYNAME)" "$(TARGET)" +installer: $(TARGET) + -chmod +x mac/installer.sh + -mac/installer.sh "$(DISPLAYNAME)" "$(TARGET)" "$(CODESIGNIDENTITY)" + clean: $(RM) $(OBJECTS) resources.o dmail $(RM) -r resources/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/install/dmail-x64.nsi Sun Mar 12 17:04:20 2023 -0500 @@ -0,0 +1,147 @@ +; Dynamic Mail NSIS Modern User Interface + +;-------------------------------- +; Include Modern UI + + !include "MUI2.nsh" + + !include x64.nsh + +; Handle 64bit mode +Function .onInit + + ${If} ${RunningX64} + + ${EnableX64FSRedirection} + + ${else} + + MessageBox MB_OK "Sorry this application runs only on x64 machines" + + Abort + + ${EndIf} + +FunctionEnd + +;-------------------------------- +; General + + ; Name and file + Name "Dynamic Mail" + OutFile "dmailwin64.exe" + + ; Default installation folder + InstallDir "$PROGRAMFILES64\DMAIL" + + ; Get installation folder from registry if available + InstallDirRegKey HKCU "Software\DMAIL" "" + + ; Request application privileges for Windows Vista + RequestExecutionLevel admin + +;-------------------------------- +; Variables + + Var StartMenuFolder + +;-------------------------------- +; Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +; Pages + + !insertmacro MUI_PAGE_LICENSE "..\scripts\license.txt" + ;!insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + + ;Start Menu Folder Page Configuration + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\DMAIL" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + + !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +; Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +; Installer Sections + +Section "Dummy Section" SecDummy + + SetOutPath "$INSTDIR" + + ; Binaries + File dmail.exe + File *.dll + ; Help + File readme.txt + + ; Store installation folder + WriteRegStr HKCU "Software\DMAIL" "" $INSTDIR + + ; Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ; Create shortcuts + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Dynamic Mail.lnk" "$INSTDIR\dmail.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + + ; Create Uninstall infor + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DMAIL" \ + "DisplayName" "Dynamic Mail + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DMAIL" \ + "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" + !insertmacro MUI_STARTMENU_WRITE_END + +SectionEnd + +;-------------------------------- +; Descriptions + + ; Language strings + ;LangString DESC_SecDummy ${LANG_ENGLISH} "A test section." + + ; Assign language strings to sections + ;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + ; !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) + ;!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ; Binaries + Delete "$INSTDIR\dmail.exe" + Delete "$INSTDIR\*.dll" + ; Help + Delete "$INSTDIR\readme.txt" + + Delete "$INSTDIR\Uninstall.exe" + + ; Directories + RMDir "$INSTDIR" + + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Dynamic Mail.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + + DeleteRegKey /ifempty HKCU "Software\DMAIL" + +SectionEnd \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/install/dmail-x86.nsi Sun Mar 12 17:04:20 2023 -0500 @@ -0,0 +1,128 @@ +; Dynamic Mail NSIS Modern User Interface + +;-------------------------------- +; Include Modern UI + + !include "MUI2.nsh" + +;-------------------------------- +; General + + ; Name and file + Name "Dynamic Mail" + OutFile "dmailwin.exe" + + ; Default installation folder + InstallDir "$PROGRAMFILES\DWIB" + + ; Get installation folder from registry if available + InstallDirRegKey HKCU "Software\DMAIL" "" + + ; Request application privileges for Windows Vista + RequestExecutionLevel admin + +;-------------------------------- +; Variables + + Var StartMenuFolder + +;-------------------------------- +; Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +; Pages + + !insertmacro MUI_PAGE_LICENSE "..\scripts\license.txt" + ;!insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + + ;Start Menu Folder Page Configuration + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\DMAIL" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + + !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +; Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +; Installer Sections + +Section "Dummy Section" SecDummy + + SetOutPath "$INSTDIR" + + ; Binaries + File dmail.exe + File *.dll + ; Help + File readme.txt + + ; Store installation folder + WriteRegStr HKCU "Software\DMAIL" "" $INSTDIR + + ; Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ; Create shortcuts + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Dynamic Mail.lnk" "$INSTDIR\dmail.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + + ; Create Uninstall infor + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DMAIL" \ + "DisplayName" "Dynamic Mail" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DMAIL" \ + "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" + !insertmacro MUI_STARTMENU_WRITE_END + +SectionEnd + +;-------------------------------- +; Descriptions + + ; Language strings + ;LangString DESC_SecDummy ${LANG_ENGLISH} "A test section." + + ; Assign language strings to sections + ;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + ; !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) + ;!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ; Binaries + Delete "$INSTDIR\dmail.exe" + Delete "$INSTDIR\*.dll" + ; Help + Delete "$INSTDIR\readme.txt" + + Delete "$INSTDIR\Uninstall.exe" + + ; Directories + RMDir "$INSTDIR" + + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Dynamic Mail.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + + DeleteRegKey /ifempty HKCU "Software\DMAIL" + +SectionEnd \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/install/dmail.wis Sun Mar 12 17:04:20 2023 -0500 @@ -0,0 +1,39 @@ +<WARPIN> +<HEAD> +<PCK INDEX="1" + PACKAGEID="Brian Smith\DWIB\Base package\1\0\5" + TARGET="?:\Programs\DMail" + SELECT + TITLE="Dynamic Mail" + CREATEOBJECT="WPProgram|Dynamic Mail|<WP_DESKTOP>|EXENAME=$(1)\DWIB.EXE;OBJECTID=<DMAIL>;" + >Electronic Mail Client based on Dynamic WindowsL.</PCK> +</HEAD> +<!-- Here come the different pages. They are linked by + the <NEXTBUTTON> tags, which must have a target. + Each page must have a TYPE= attribute, which tells + WarpIn what will be visible on that page. --> +<BODY> +<!-- page 1: introductory page --> +<PAGE INDEX="1" TYPE="README"> +<NEXTBUTTON TARGET=2>~Next</NEXTBUTTON> +<README EXTRACTFROMPCK="1">license.txt</README> +<TEXT> +Select "Next" to continue. +Select "Cancel" to abort installation.</TEXT> +</PAGE> +<!-- The TYPE=CONTAINER will list the packages which can be installed. --> +<PAGE INDEX="2" TYPE="CONTAINER"> +<NEXTBUTTON TARGET="3">~Next</NEXTBUTTON> +<TEXT> +On this page, you may deselect the package if it is already installed or change the package's target path. </TEXT> +</PAGE> +<!-- Display another TEXT page to inform the user + that installation will begin. We use the TARGET=0 + with the NEXTBUTTON tag which starts installation. --> +<PAGE INDEX="3" TYPE="TEXT"> +<NEXTBUTTON TARGET="0">I~nstall</NEXTBUTTON> +<TEXT> +Press "Install" to begin installing this archive.</TEXT> +</PAGE> +</BODY> +</WARPIN>
--- a/mac/installer.sh Tue Jun 28 04:06:05 2022 -0500 +++ b/mac/installer.sh Sun Mar 12 17:04:20 2023 -0500 @@ -2,19 +2,27 @@ PLATFORM=`uname -s` APPNAME=$1 BINNAME=$2 +IDENTITY=$3 if [ $PLATFORM = "Darwin" ] then - rm -rf ../install/package - mkdir ../install/package - cp -prf "$APPNAME.app" ../install/package - cp -f ../readme.txt ../install/package - cp -f /usr/local/lib/libdwindows.dylib "../install/package/$APPNAME.app/Contents/MacOS" - cp -f /usr/local/lib/libdwcompat.dylib "../install/package/$APPNAME.app/Contents/MacOS" - install_name_tool -change `otool -L $BINNAME | grep libdwindows | cut -d ' ' -f 1 | tr -d '\t'` @executable_path/libdwindows.dylib "../install/package/$APPNAME.app/Contents/MacOS/$BINNAME" - install_name_tool -change `otool -L $BINNAME | grep libdwcompat | cut -d ' ' -f 1 | tr -d '\t'` @executable_path/libdwcompat.dylib "../install/package/$APPNAME.app/Contents/MacOS/$BINNAME" - #/Developer/Tools/SetFile -a V "../install/package/$BINNAME.png" - ln -s /Applications ../install/package/. - rm -f "../install/$APPNAME.dmg" - hdiutil create -fs HFS+ -volname "$APPNAME" -srcfolder ../install/package/ "../install/$APPNAME.dmg" + rm -rf install/package + mkdir install/package + cp -prf "$APPNAME.app" install/package + cp -f ../readme.txt install/package + cp -f /usr/local/lib/libdwindows.dylib "install/package/$APPNAME.app/Contents/MacOS" + cp -f /usr/local/lib/libdwcompat.dylib "install/package/$APPNAME.app/Contents/MacOS" + install_name_tool -change `otool -L $BINNAME | grep libdwindows | cut -d ' ' -f 1 | tr -d '\t'` @executable_path/libdwindows.dylib "install/package/$APPNAME.app/Contents/MacOS/$BINNAME" + install_name_tool -change `otool -L $BINNAME | grep libdwcompat | cut -d ' ' -f 1 | tr -d '\t'` @executable_path/libdwcompat.dylib "install/package/$APPNAME.app/Contents/MacOS/$BINNAME" + if [ -z "$IDENTITY" ] + then + IDENTITY="-" + else + echo "Signing code with identity: $IDENTITY" + fi + codesign --deep -s "$IDENTITY" "install/package/$APPNAME.app" + #/Developer/Tools/SetFile -a V "install/package/$BINNAME.png" + ln -s /Applications install/package/. + rm -f "install/$APPNAME.dmg" + hdiutil create -fs HFS+ -volname "$APPNAME" -srcfolder install/package/ "install/$APPNAME.dmg" fi