Skip to content

Commit

Permalink
Build both classical per-machine only installers and installers with …
Browse files Browse the repository at this point in the history
…per-user installation support.
  • Loading branch information
arbv committed Sep 30, 2019
1 parent de5c64b commit a84dc24
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 12 deletions.
2 changes: 1 addition & 1 deletion installer/Config.wxi
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ See the 'LICENSE.txt' file for the additional details.
<!--
Set the following variable to to "yes" to support per user installations
-->
<?define PerUserSupport="no" ?>
<!-- <?define PerUserSupport="no" ?> -->
<!--
The name of your application *.exe files. These will be used to kill the process when updating
and creating the desktop shortcut
Expand Down
56 changes: 51 additions & 5 deletions makemsi.bat
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,24 @@ set WixExtensions=-ext WixUIExtension -ext WixUtilExtension

rem set old current directory
set OldDir=%cd%


rem Build the installers

rem per-machine
CALL :gen_version_per_machine
CALL :build_the_installer
CALL :rename_per_machine_installer

rem per-user
CALL :gen_version_per_user
CALL :build_the_installer
CALL :rename_per_user_installer

EXIT /B 0

rem procedure to build the installer
:build_the_installer
cd "%~dp0\"

rem Cleanup
Expand All @@ -27,9 +45,6 @@ del %InstallerObjectFiles%
rem convert TXT license to RTF
.\emacs\bin\emacs.exe -Q --batch -l .\scripts\license-to-rtf.el

rem Generate file with build version information
.\emacs\bin\emacs.exe -Q --batch -l .\scripts\generate-version-wxi.el

rem Generate fragments.
rem These should be synchronised with values in 'Config.wxi'

Expand All @@ -44,8 +59,39 @@ rem build the installer
"%WIX%\bin\candle" %WiXExtensions% -out .\installer\ %InstallerFiles%
"%WIX%\bin\light" %WiXExtensions% -sw1076 -dcl:high -cultures:en-US %InstallerObjectFiles% -out %InstallerName%

rem change current directory
cd "%OldDir%"

rem end of procedure
EXIT /B 0

:rename_per_machine_installer
cd "%~dp0\"
rem rename Emacs installer binary
.\emacs\bin\emacs.exe -Q --batch -l .\scripts\rename-installer.el --eval "(rename-installer)"
cd "%OldDir%"
EXIT /B 0

:rename_per_user_installer
cd "%~dp0\"
rem rename Emacs installer binary
.\emacs\bin\emacs.exe -Q --batch -l .\scripts\rename-installer.el
.\emacs\bin\emacs.exe -Q --batch -l .\scripts\rename-installer.el --eval "(rename-installer t)"
cd "%OldDir%"
EXIT /B 0

rem change current directory
:gen_version_per_machine
cd "%~dp0\"
rem Generate file with build version information
.\emacs\bin\emacs.exe -Q --batch -l .\scripts\generate-version-wxi.el --eval "(generate-version-per-machine)"
cd "%OldDir%"
EXIT /B 0

:gen_version_per_user
cd "%~dp0\"
rem Generate file with build version information
.\emacs\bin\emacs.exe -Q --batch -l .\scripts\generate-version-wxi.el --eval "(generate-version-per-user)"
cd "%OldDir%"
EXIT /B 0



11 changes: 9 additions & 2 deletions scripts/generate-version-wxi.el
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
(defun emacs-x86_64-build-p ()
(not (null (string-match "^[xX]?86_64.+" system-configuration))))

(defun generate-version-wxi (filename)
(defun generate-version-wxi (filename per-user-support)
(when (file-exists-p filename)
(delete-file filename))
(with-temp-buffer
Expand All @@ -23,8 +23,15 @@
(insert (format " <?define Win64=\"%s\" ?>\n" (if (emacs-x86_64-build-p)
"yes"
"no")))
(insert (format " <?define PerUserSupport=\"%s\" ?>\n" (if per-user-support
"yes"
"no")))
(insert "</Include>\n")
(write-file filename)))

(generate-version-wxi ".\\installer\\Version.wxi")
(defun generate-version-per-machine ()
(generate-version-wxi ".\\installer\\Version.wxi" nil))


(defun generate-version-per-user ()
(generate-version-wxi ".\\installer\\Version.wxi" t))
16 changes: 12 additions & 4 deletions scripts/rename-installer.el
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,23 @@
(defun get-installer-name ()
(format "emacs-%d.%d-%s" emacs-major-version emacs-minor-version (get-emacs-patform)))

(defun rename-installer ()
(let ((new-msi-name (concat (get-installer-name) ".msi"))
(new-wixpdb-name (concat (get-installer-name) ".wixpdb"))
(defun rename-installer (&optional per-user)
(let ((new-msi-name (concat (get-installer-name)
(if per-user
"-per-user"
"")
".msi"))
(new-wixpdb-name (concat (get-installer-name)
(if per-user
"-per-user"
"")
".wixpdb"))
(msi-name "emacs-installer.msi")
(wixpdb-name "emacs-installer.wixpdb"))
(when (file-exists-p msi-name)
(rename-file msi-name new-msi-name t))
(when (file-exists-p wixpdb-name)
(rename-file wixpdb-name new-wixpdb-name t))))

(rename-installer)
;;(rename-installer)

0 comments on commit a84dc24

Please sign in to comment.