mirror of
https://github.com/easydiffusion/easydiffusion.git
synced 2025-06-19 17:39:16 +02:00
NSIS script enhancements
- Enable Unicode support - Activate LongPathsEnabled if the user tries to install into a directory with more than 30 characters length - Change welcome text page. No need to close other programs during our setup - Warn if the user has less than 8GB of RAM - Formatting, comments
This commit is contained in:
parent
8165086d02
commit
bf205de3a1
110
NSIS/sdui.nsi
110
NSIS/sdui.nsi
@ -1,5 +1,8 @@
|
|||||||
; Script generated by the HM NIS Edit Script Wizard.
|
; Script generated by the HM NIS Edit Script Wizard.
|
||||||
|
|
||||||
|
Target x86-unicode
|
||||||
|
Unicode True
|
||||||
|
!AddPluginDir /x86-unicode "."
|
||||||
; HM NIS Edit Wizard helper defines
|
; HM NIS Edit Wizard helper defines
|
||||||
!define PRODUCT_NAME "Stable Diffusion UI"
|
!define PRODUCT_NAME "Stable Diffusion UI"
|
||||||
!define PRODUCT_VERSION "Installer 2.35"
|
!define PRODUCT_VERSION "Installer 2.35"
|
||||||
@ -18,6 +21,11 @@ Var Text
|
|||||||
Var V14
|
Var V14
|
||||||
Var V15
|
Var V15
|
||||||
|
|
||||||
|
Var InstDirLen
|
||||||
|
Var LongPathsEnabled
|
||||||
|
Var AccountType
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
; This function returns the number of spaces in a string.
|
; This function returns the number of spaces in a string.
|
||||||
; The string is passed on the stack (using Push $STRING)
|
; The string is passed on the stack (using Push $STRING)
|
||||||
; The result is also returned on the stack and can be consumed with Pop $var
|
; The result is also returned on the stack and can be consumed with Pop $var
|
||||||
@ -44,13 +52,32 @@ Function CheckForSpaces
|
|||||||
Exch $R0
|
Exch $R0
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
|
; The function DirectoryLeave is called after the user chose the installation directory.
|
||||||
|
; If it calls "abort", the user is sent back to choose a different directory.
|
||||||
Function DirectoryLeave
|
Function DirectoryLeave
|
||||||
; check whether the installation directory path is longer than 40 characters.
|
; check whether the installation directory path is longer than 30 characters.
|
||||||
|
; If yes, we suggest to the user to enable long filename support
|
||||||
;----------------------------------------------------------------------------
|
;----------------------------------------------------------------------------
|
||||||
StrLen $0 "$INSTDIR"
|
StrLen $InstDirLen "$INSTDIR"
|
||||||
${If} $0 > 40
|
|
||||||
MessageBox MB_OK|MB_ICONEXCLAMATION "Installation path name too long. The installation path must not have more than 40 characters."
|
; Check whether the registry key that allows for >260 characters in a path name is set
|
||||||
abort
|
ReadRegStr $LongPathsEnabled HKLM "SYSTEM\CurrentControlSet\Control\FileSystem" "LongPathsEnabled"
|
||||||
|
|
||||||
|
${If} $InstDirLen > 30
|
||||||
|
${AndIf} $LongPathsEnabled == "0"
|
||||||
|
; Check whether we're in the Admin group
|
||||||
|
UserInfo::GetAccountType
|
||||||
|
Pop $AccountType
|
||||||
|
|
||||||
|
${If} $AccountType == "Admin"
|
||||||
|
${AndIf} ${Cmd} `MessageBox MB_YESNO|MB_ICONQUESTION 'The path name is too long. $\n$\nYou can either enable long file name support in Windows,$\nor you can go back and choose a different path.$\n$\nFor details see: shorturl.at/auBD1$\n$\nEnable long path name support in Windows?' IDYES`
|
||||||
|
; Enable long path names
|
||||||
|
WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\FileSystem" "LongPathsEnabled" 1
|
||||||
|
${Else}
|
||||||
|
MessageBox MB_OK|MB_ICONEXCLAMATION "Installation path name too long. The installation path must not have more than 30 characters."
|
||||||
|
abort
|
||||||
|
${EndIf}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
; Check for spaces in the installation directory path.
|
; Check for spaces in the installation directory path.
|
||||||
@ -78,8 +105,12 @@ Function DirectoryLeave
|
|||||||
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
|
; This function is currently not being used. To be used in the future for the v1.4 vs v1.5 chooser
|
||||||
Function nsDialogsPage
|
Function nsDialogsPage
|
||||||
!insertmacro MUI_HEADER_TEXT "Default Stable diffusion model" "Select the default model to be installed"
|
!insertmacro MUI_HEADER_TEXT "Default Stable diffusion model" "Select the default model to be installed"
|
||||||
|
|
||||||
|
|
||||||
nsDialogs::Create 1018
|
nsDialogs::Create 1018
|
||||||
Pop $Dialog
|
Pop $Dialog
|
||||||
|
|
||||||
@ -90,23 +121,26 @@ Function nsDialogsPage
|
|||||||
${NSD_CreateLabel} 0 0 100% 48u "Which Stable Diffusion Modell do you want to use?$\r$\n$\r$\nThere are two models of Stable Diffusion.$\r$\n- Version 1.4 is using less memory.$\r$\n- Version 1.5 is bigger, but has slightly better results."
|
${NSD_CreateLabel} 0 0 100% 48u "Which Stable Diffusion Modell do you want to use?$\r$\n$\r$\nThere are two models of Stable Diffusion.$\r$\n- Version 1.4 is using less memory.$\r$\n- Version 1.5 is bigger, but has slightly better results."
|
||||||
Pop $Label
|
Pop $Label
|
||||||
|
|
||||||
${NSD_CreateFirstRadioButton} 0 49u 100% 12u "Use SD v1.4 as default"
|
${NSD_CreateFirstRadioButton} 0 49u 100% 12u "Use SD v1.4 as default (3.97 GB)"
|
||||||
Pop $V14
|
Pop $V14
|
||||||
|
|
||||||
${NSD_CreateAdditionalRadioButton} 0 62u 100% 12u "Use SD v1.5 as default"
|
${NSD_CreateAdditionalRadioButton} 0 62u 100% 12u "Use SD v1.5 as default (4.7 GB)"
|
||||||
Pop $V15
|
Pop $V15
|
||||||
|
|
||||||
nsDialogs::Show
|
nsDialogs::Show
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
; MUI Settings
|
; MUI Settings
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
!define MUI_ABORTWARNING
|
!define MUI_ABORTWARNING
|
||||||
!define MUI_ICON "sd.ico"
|
!define MUI_ICON "sd.ico"
|
||||||
|
|
||||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "astro.bmp"
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "astro.bmp"
|
||||||
|
|
||||||
; Welcome page
|
; Welcome page
|
||||||
|
!define MUI_WELCOMEPAGE_TEXT "This installer will guide you through the installation of Stable Diffusion UI.$\n$\n\
|
||||||
|
Click Next to continue."
|
||||||
!insertmacro MUI_PAGE_WELCOME
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
; License page
|
; License page
|
||||||
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
|
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
|
||||||
@ -118,19 +152,21 @@ FunctionEnd
|
|||||||
;; TODO: Requires support from "Start Stable Diffusion UI.cmd" and "server.py"
|
;; TODO: Requires support from "Start Stable Diffusion UI.cmd" and "server.py"
|
||||||
;; which needs to be developed first
|
;; which needs to be developed first
|
||||||
; --------
|
; --------
|
||||||
; Page custom nsDialogsPage
|
;Page custom nsDialogsPage
|
||||||
; --------
|
; --------
|
||||||
|
|
||||||
; Instfiles page
|
; Instfiles page
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
|
||||||
; Finish page
|
; Finish page
|
||||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\Start Stable Diffusion UI.cmd"
|
!define MUI_FINISHPAGE_RUN "$INSTDIR\Start Stable Diffusion UI.cmd"
|
||||||
!insertmacro MUI_PAGE_FINISH
|
!insertmacro MUI_PAGE_FINISH
|
||||||
|
|
||||||
; Language files
|
; Language files
|
||||||
!insertmacro MUI_LANGUAGE "English"
|
!insertmacro MUI_LANGUAGE "English"
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
; MUI end ------
|
; MUI end
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
||||||
OutFile "Install Stable Diffusion UI.exe"
|
OutFile "Install Stable Diffusion UI.exe"
|
||||||
@ -138,6 +174,8 @@ InstallDir "C:\Stable-Diffusion-UI\"
|
|||||||
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
|
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
|
||||||
ShowInstDetails show
|
ShowInstDetails show
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
|
; List of files to be installed
|
||||||
Section "MainSection" SEC01
|
Section "MainSection" SEC01
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
File "..\CreativeML Open RAIL-M License"
|
File "..\CreativeML Open RAIL-M License"
|
||||||
@ -153,17 +191,55 @@ Section "MainSection" SEC01
|
|||||||
CreateShortCut "$SMPROGRAMS\Stable Diffusion UI\Start Stable Diffusion UI.lnk" "$INSTDIR\Start Stable Diffusion UI.cmd"
|
CreateShortCut "$SMPROGRAMS\Stable Diffusion UI\Start Stable Diffusion UI.lnk" "$INSTDIR\Start Stable Diffusion UI.cmd"
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------------
|
||||||
; Our installer only needs 25 KB, but once it has run, we need 25 GB
|
; Our installer only needs 25 KB, but once it has run, we need 25 GB
|
||||||
; So we need to overwrite the automatically detected space requirements.
|
; So we need to overwrite the automatically detected space requirements.
|
||||||
; https://nsis.sourceforge.io/Docs/Chapter4.html#4.9.13.7
|
; https://nsis.sourceforge.io/Docs/Chapter4.html#4.9.13.7
|
||||||
; The example in section 4.9.13.7 seems to be wrong: the number
|
; The example in section 4.9.13.7 seems to be wrong: the number
|
||||||
; needs to be provided in Kilobytes.
|
; needs to be provided in Kilobytes.
|
||||||
Function .onInit
|
Function .onInit
|
||||||
# Set required size of section 'SEC01' to 25 Gigabytes
|
; Set required size of section 'SEC01' to 25 Gigabytes
|
||||||
SectionSetSize ${SEC01} 26214400
|
SectionSetSize ${SEC01} 26214400
|
||||||
|
|
||||||
|
|
||||||
|
; Check system meory size. We need at least 8GB
|
||||||
|
; ----------------------------------------------------
|
||||||
|
|
||||||
|
; allocate a few bytes of memory
|
||||||
|
System::Alloc 64
|
||||||
|
Pop $1
|
||||||
|
|
||||||
|
; Retrieve HW info from the Windows Kernel
|
||||||
|
System::Call "*$1(i64)"
|
||||||
|
System::Call "Kernel32::GlobalMemoryStatusEx(i r1)"
|
||||||
|
; unpack the data into $R2 - $R10
|
||||||
|
System::Call "*$1(i.r2, i.r3, l.r4, l.r5, l.r6, l.r7, l.r8, l.r9, l.r10)"
|
||||||
|
|
||||||
|
# free up the memory
|
||||||
|
System::Free $1
|
||||||
|
|
||||||
|
; Result mapping:
|
||||||
|
; "Structure size: $2 bytes"
|
||||||
|
; "Memory load: $3%"
|
||||||
|
; "Total physical memory: $4 bytes"
|
||||||
|
; "Free physical memory: $5 bytes"
|
||||||
|
; "Total page file: $6 bytes"
|
||||||
|
; "Free page file: $7 bytes"
|
||||||
|
; "Total virtual: $8 bytes"
|
||||||
|
; "Free virtual: $9 bytes"
|
||||||
|
|
||||||
|
; Mem size in MB
|
||||||
|
System::Int64Op $4 / 1048576
|
||||||
|
Pop $4
|
||||||
|
|
||||||
|
${If} $4 < "80000"
|
||||||
|
MessageBox MB_OK|MB_ICONEXCLAMATION "Warning!$\n$\nYour system has less than 8GB of memory (RAM).$\n$\n\
|
||||||
|
You can still try to install Stable Diffusion UI,$\nbut it might have problems to start, or run$\nvery slowly."
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
|
||||||
Section -Post
|
;Section -Post
|
||||||
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\installer.exe"
|
; WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\installer.exe"
|
||||||
SectionEnd
|
;SectionEnd
|
||||||
|
Loading…
x
Reference in New Issue
Block a user