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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/readme.txt	Sun Mar 12 17:04:20 2023 -0500
@@ -0,0 +1,1 @@
+Place holder readme for Dynamic Mail.
\ No newline at end of file