Skip to content

Commit 6d9dc08

Browse files
authored
Merge pull request #32819 from musm/backport-32054
Backport 32054
2 parents 7cfd2b4 + 072abb1 commit 6d9dc08

File tree

11 files changed

+89
-25
lines changed

11 files changed

+89
-25
lines changed

Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -434,10 +434,10 @@ ifeq ($(OS), WINNT)
434434
cd $(BUILDROOT)/julia-$(JULIA_COMMIT) && find * | sed -e 's/\//\\/g' -e 's/$$/\r/g' > etc/uninstall.log
435435

436436
# build nsis package
437-
cd $(BUILDROOT) && $(call spawn,$(JULIAHOME)/dist-extras/nsis/makensis.exe) -NOCD -DVersion=$(JULIA_VERSION) -DArch=$(ARCH) -DCommit=$(JULIA_COMMIT) -DMUI_ICON="$(call cygpath_w,$(JULIAHOME)/contrib/windows/julia.ico)" $(call cygpath_w,$(JULIAHOME)/contrib/windows/build-installer.nsi) | iconv -f latin1
437+
cd $(BUILDROOT) && $(call spawn,$(JULIAHOME)/dist-extras/nsis/makensis.exe) -NOCD -DVersion=$(JULIA_VERSION) -DArch=$(ARCH) -DCommit=$(JULIA_COMMIT) -DJULIAHOME="$(call cygpath_w,$(JULIAHOME))" $(call cygpath_w,$(JULIAHOME)/contrib/windows/build-installer.nsi) | iconv -f latin1
438438

439439
# compress nsis installer and combine with 7zip self-extracting header
440-
cd $(BUILDROOT) && $(JULIAHOME)/dist-extras/7z a -mx9 "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" julia-installer.exe
440+
cd $(BUILDROOT) && $(JULIAHOME)/dist-extras/7z a -mx=9 "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" julia-installer.exe
441441
cd $(BUILDROOT) && cat $(JULIAHOME)/contrib/windows/7zS.sfx $(JULIAHOME)/contrib/windows/7zSFX-config.txt "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" > "$(JULIA_BINARYDIST_FILENAME).exe"
442442
chmod a+x "$(BUILDROOT)/$(JULIA_BINARYDIST_FILENAME).exe"
443443
-rm -f $(BUILDROOT)/julia-install-$(JULIA_COMMIT)-$(ARCH).7z
@@ -580,11 +580,11 @@ else
580580
$(error no win-extras target for ARCH=$(ARCH))
581581
endif
582582
cd $(JULIAHOME)/dist-extras && \
583-
$(JLDOWNLOAD) http://downloads.sourceforge.net/sevenzip/7z1805-extra.7z && \
584-
$(JLDOWNLOAD) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/unsis/nsis-2.46.5-Unicode-setup.exe && \
583+
$(JLDOWNLOAD) https://sourceforge.net/projects/nsis/files/NSIS%203/3.04/nsis-3.04-setup.exe && \
584+
$(JLCHECKSUM) nsis-3.04-setup.exe && \
585585
chmod a+x 7z.exe && \
586586
chmod a+x 7z.dll && \
587-
$(call spawn,./7z.exe) x -y -onsis nsis-2.46.5-Unicode-setup.exe && \
587+
$(call spawn,./7z.exe) x -y -onsis nsis-3.04-setup.exe && \
588588
chmod a+x ./nsis/makensis.exe
589589

590590
# various statistics about the build that may interest the user

contrib/windows/7zS.sfx

140 KB
Binary file not shown.

contrib/windows/7zSFX-config.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
;!@Install@!UTF-8!
2-
Title="The Julia Language"
2+
Title="Julia"
33
RunProgram="julia-installer.exe"
44
;!@InstallEnd@!

contrib/windows/build-installer.nsi

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,38 @@
1+
Unicode true
2+
13
!include "MUI2.nsh"
24
!include "nsDialogs.nsh"
35
!include "winmessages.nsh"
46

5-
Name "The Julia Language"
67
OutFile "julia-installer.exe"
78
SetCompress off
8-
CRCCheck on
9+
CRCCheck off
910
SetDataBlockOptimize on
10-
ShowInstDetails show
11+
ShowInstDetails nevershow
12+
ShowUninstDetails nevershow
1113
RequestExecutionLevel user
12-
BrandingText "Julia ${Version}"
14+
BrandingText " "
15+
16+
!define /date YEAR "%Y"
17+
18+
Name "Julia"
19+
VIProductVersion "10.20.0.0" # arbitrary value since it doesn't mater, but is required; format must be X.X.X.X
20+
VIAddVersionKey "ProductName" "Julia"
21+
VIAddVersionKey "CompanyName " "Julia Language"
22+
VIAddVersionKey "ProductVersion" "${Version}"
23+
VIAddVersionKey "FileDescription" "Julia Language Installer"
24+
VIAddVersionKey "Comments" "https://julialang.org/"
25+
VIAddVersionKey "LegalCopyright" "Copyright (c) 2009-${YEAR} Julia Language"
26+
VIAddVersionKey "FileVersion" ""
27+
28+
Caption "Julia Installer" # title bar
29+
30+
!define MUI_ICON "${JULIAHOME}\contrib\windows\julia.ico"
31+
!define MUI_UNICON "${JULIAHOME}\contrib\windows\julia.ico"
32+
!define MUI_WELCOMEFINISHPAGE_BITMAP "${JULIAHOME}\contrib\windows\julia-banner.bmp"
33+
!define MUI_HEADERIMAGE
34+
!define MUI_HEADERIMAGE_BITMAP "${JULIAHOME}\contrib\windows\julia-header.bmp"
35+
!define MUI_HEADERIMAGE_RIGHT
1336

1437
# Uninstall settings
1538
!define UninstLog "uninstall.log"
@@ -29,7 +52,7 @@ FunctionEnd
2952
Function createDesktopLink
3053
${NSD_GetState} $Checkbox $0
3154
${If} $0 <> 0
32-
CreateShortCut "$DESKTOP\julia.lnk" "$INSTDIR\bin\julia.exe"
55+
CreateShortCut "$DESKTOP\julia.lnk" "$INSTDIR\bin\julia.exe" "" "$INSTDIR\bin\julia.exe" 0
3356
${EndIf}
3457
FunctionEnd
3558

@@ -38,25 +61,43 @@ InstallDir "$LOCALAPPDATA\Julia-${Version}"
3861
!define JuliaStartMenuFolder "Julia ${Version}"
3962

4063
# Page settings
41-
# Note that we repurpose the checkboxes on the FinishPage
42-
# in order to keep it simple.
43-
!define MUI_DIRECTORYPAGE_TEXT_TOP "Julia may be installed in any accessible directory, including a home folder or portable device. Please run as Administrator to install for system-wide use."
64+
# Note that we repurpose the checkboxes on the FinishPage in order to keep it simple.
65+
!define MUI_DIRECTORYPAGE_TEXT_TOP "Julia may be installed in any accessible directory.$\r$\n$\r$\nPlease run installer as Administrator to install Julia system-wide."
4466
!define MUI_FINISHPAGE_SHOWREADME
4567
!define MUI_FINISHPAGE_SHOWREADME_TEXT "Create Start Menu folder and shortcut"
4668
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION AddToStartMenu
69+
70+
!define MUI_WELCOMEPAGE_TITLE "Welcome to Julia ${Version}"
71+
!define MUI_WELCOMEPAGE_TEXT "Setup will guide you through installation.$\r$\n$\r$\nClick Next to continue."
72+
!define MUI_FINISHPAGE_TITLE "Julia installation complete"
73+
!define MUI_FINISHPAGE_TEXT "Julia has been successfully installed.$\r$\n$\r$\nClick Finish to close the installer."
74+
4775
!define MUI_FINISHPAGE_RUN
48-
!define MUI_FINISHPAGE_RUN_TEXT "Open Julia install folder"
76+
!define MUI_FINISHPAGE_RUN_TEXT "Open the Julia install folder"
4977
!define MUI_FINISHPAGE_RUN_FUNCTION ShowInstallFolder
5078

51-
# Pages to show
79+
!define MUI_UNCONFIRMPAGE_TEXT_TOP "Julia will be uninstalled from the following folder."
80+
!define MUI_UNCONFIRMPAGE_TEXT_LOCATION "Uninstalling from"
5281

82+
# Pages to show
83+
!define MUI_PAGE_HEADER_TEXT "Choose Installation Directory"
84+
!define MUI_PAGE_HEADER_SUBTEXT ""
85+
!insertmacro MUI_PAGE_WELCOME
5386
!insertmacro MUI_PAGE_DIRECTORY
5487
!insertmacro MUI_PAGE_INSTFILES
88+
Section
89+
!insertmacro MUI_HEADER_TEXT "Installing" ""
90+
SectionEnd
5591

5692
!define MUI_PAGE_CUSTOMFUNCTION_SHOW desktopCheckbox
5793
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE createDesktopLink
5894
!insertmacro MUI_PAGE_FINISH
5995

96+
!define MUI_PAGE_HEADER_TEXT "Uninstall Julia"
97+
!define MUI_PAGE_HEADER_SUBTEXT ""
98+
!insertmacro MUI_UNPAGE_CONFIRM
99+
!insertmacro MUI_UNPAGE_INSTFILES
100+
60101
!insertmacro MUI_LANGUAGE "English"
61102

62103
# Add/Remove Programs entry
@@ -65,14 +106,14 @@ InstallDir "$LOCALAPPDATA\Julia-${Version}"
65106
Section "Dummy Section" SecDummy
66107
SetOutPath $INSTDIR
67108
File /a /r "julia-${Commit}\*"
68-
WriteUninstaller "$INSTDIR\Uninstall.exe"
69-
CreateShortcut "$INSTDIR\julia.lnk" "$INSTDIR\bin\julia.exe"
109+
WriteUninstaller "$INSTDIR\uninstall.exe"
110+
CreateShortcut "$INSTDIR\julia.lnk" "$INSTDIR\bin\julia.exe" "" "$INSTDIR\bin\julia.exe" 0
70111

71112
# ARP entries
72113
WriteRegStr HKCU "${ARP}" \
73-
"DisplayName" "Julia Language ${Version}"
114+
"DisplayName" "Julia ${Version}"
74115
WriteRegStr HKCU "${ARP}" \
75-
"Publisher" "The Julia Project"
116+
"Publisher" "Julia Language"
76117
WriteRegStr HKCU "${ARP}" \
77118
"DisplayIcon" "$INSTDIR\bin\julia.exe"
78119
WriteRegStr HKCU "${ARP}" \
@@ -145,13 +186,11 @@ SectionEnd
145186
# Helper function to create Start Menu folder and shortcuts
146187
Function AddToStartMenu
147188
CreateDirectory "$SMPROGRAMS\${JuliaStartMenuFolder}"
148-
CreateShortcut "$SMPROGRAMS\${JuliaStartMenuFolder}\julia-${Version}.lnk" "$INSTDIR\julia.lnk" "" "" "" "" "" "The Julia Language"
149-
CreateShortcut "$SMPROGRAMS\${JuliaStartMenuFolder}\Uninstall-Julia-${Version}.lnk" "$instdir\Uninstall.exe"
189+
CreateShortcut "$SMPROGRAMS\${JuliaStartMenuFolder}\julia-${Version}.lnk" "$INSTDIR\julia.lnk" "" "" "" "" "" "Julia"
190+
CreateShortcut "$SMPROGRAMS\${JuliaStartMenuFolder}\Uninstall-Julia-${Version}.lnk" "$instdir\uninstall.exe"
150191
FunctionEnd
151192

152193
# Opens the installation folder
153194
Function ShowInstallFolder
154195
ExecShell "open" $INSTDIR
155196
FunctionEnd
156-
157-

contrib/windows/icon-readme.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
Generate the logo
3+
```julia
4+
using Luxor
5+
Drawing(325, 325, joinpath(pwd(), "julia-dots.svg"))
6+
origin()
7+
translate(0, 25)
8+
juliacircles(100)
9+
finish()
10+
```
11+
12+
Create the ico file
13+
```sh
14+
#!/bin/bash
15+
16+
for size in 16 20 24 32 40 48 64 128 256; do
17+
rsvg-convert -w $size -h $size julia-dots.svg -o $size.png
18+
done
19+
20+
convert 256.png 128.png 64.png 48.png 40.png 32.png 24.png 20.png 16.png julia.ico
21+
22+
rm 256.png 128.png 64.png 48.png 40.png 32.png 24.png 20.png 16.png
23+
```

contrib/windows/julia-banner.bmp

151 KB
Binary file not shown.

contrib/windows/julia-header.bmp

25.2 KB
Binary file not shown.

contrib/windows/julia.ico

100644100755
75.7 KB
Binary file not shown.

contrib/windows/julia.rc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ BEGIN
1818
VALUE "FileDescription", "Julia Programming Language"
1919
VALUE "FileVersion", JLVER_STR
2020
VALUE "InternalName", "julia"
21-
VALUE "LegalCopyright", "MIT Licensed"
21+
VALUE "LegalCopyright", "(c) 2009-2019 Julia Language"
2222
VALUE "OriginalFilename", "julia.exe"
2323
VALUE "ProductName", "Julia"
2424
VALUE "ProductVersion", JLVER_STR
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3c93427c56714478bb5a7a4bbaab934f

0 commit comments

Comments
 (0)