forked from extern/easydiffusion
169 lines
5.1 KiB
Plaintext
169 lines
5.1 KiB
Plaintext
|
; Script generated by the HM NIS Edit Script Wizard.
|
||
|
|
||
|
; HM NIS Edit Wizard helper defines
|
||
|
!define PRODUCT_NAME "Stable Diffusion UI"
|
||
|
!define PRODUCT_VERSION "Installer 2.35"
|
||
|
!define PRODUCT_PUBLISHER "cmdr2 and contributors"
|
||
|
!define PRODUCT_WEB_SITE "https://stable-diffusion-ui.github.io"
|
||
|
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Cmdr2\App Paths\installer.exe"
|
||
|
|
||
|
; MUI 1.67 compatible ------
|
||
|
!include "MUI.nsh"
|
||
|
!include "LogicLib.nsh"
|
||
|
!include "nsDialogs.nsh"
|
||
|
|
||
|
Var Dialog
|
||
|
Var Label
|
||
|
Var Text
|
||
|
Var V14
|
||
|
Var V15
|
||
|
|
||
|
; This function returns the number of spaces in a 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
|
||
|
; https://nsis.sourceforge.io/Check_for_spaces_in_a_directory_path
|
||
|
Function CheckForSpaces
|
||
|
Exch $R0
|
||
|
Push $R1
|
||
|
Push $R2
|
||
|
Push $R3
|
||
|
StrCpy $R1 -1
|
||
|
StrCpy $R3 $R0
|
||
|
StrCpy $R0 0
|
||
|
loop:
|
||
|
StrCpy $R2 $R3 1 $R1
|
||
|
IntOp $R1 $R1 - 1
|
||
|
StrCmp $R2 "" done
|
||
|
StrCmp $R2 " " 0 loop
|
||
|
IntOp $R0 $R0 + 1
|
||
|
Goto loop
|
||
|
done:
|
||
|
Pop $R3
|
||
|
Pop $R2
|
||
|
Pop $R1
|
||
|
Exch $R0
|
||
|
FunctionEnd
|
||
|
|
||
|
Function DirectoryLeave
|
||
|
; check whether the installation directory path is longer than 40 characters.
|
||
|
;----------------------------------------------------------------------------
|
||
|
StrLen $0 "$INSTDIR"
|
||
|
${If} $0 > 40
|
||
|
MessageBox MB_OK|MB_ICONEXCLAMATION "Installation path name too long. The installation path must not have more than 40 characters."
|
||
|
abort
|
||
|
${EndIf}
|
||
|
|
||
|
; Check for spaces in the installation directory path.
|
||
|
; ----------------------------------------------------
|
||
|
|
||
|
; $R0 = CheckForSpaces( $INSTDIR )
|
||
|
Push $INSTDIR # Input string (install path).
|
||
|
Call CheckForSpaces
|
||
|
Pop $R0 # The function returns the number of spaces found in the input string.
|
||
|
|
||
|
; Check if any spaces exist in $INSTDIR.
|
||
|
${If} $R0 != 0
|
||
|
; Plural if more than 1 space in $INSTDIR.
|
||
|
; If $R0 == 1: $R1 = ""; else: $R1 = "s"
|
||
|
StrCmp $R0 1 0 +3
|
||
|
StrCpy $R1 ""
|
||
|
Goto +2
|
||
|
StrCpy $R1 "s"
|
||
|
|
||
|
; Show message box then take the user back to the Directory page.
|
||
|
MessageBox MB_OK|MB_ICONEXCLAMATION "Error: The Installaton directory \
|
||
|
has $R0 space character$R1.$\nPlease choose an installation directory without space characters."
|
||
|
Abort
|
||
|
${EndIf}
|
||
|
|
||
|
FunctionEnd
|
||
|
|
||
|
Function nsDialogsPage
|
||
|
!insertmacro MUI_HEADER_TEXT "Default Stable diffusion model" "Select the default model to be installed"
|
||
|
nsDialogs::Create 1018
|
||
|
Pop $Dialog
|
||
|
|
||
|
${If} $Dialog == error
|
||
|
Abort
|
||
|
${EndIf}
|
||
|
|
||
|
${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
|
||
|
|
||
|
${NSD_CreateFirstRadioButton} 0 49u 100% 12u "Use SD v1.4 as default"
|
||
|
Pop $V14
|
||
|
|
||
|
${NSD_CreateAdditionalRadioButton} 0 62u 100% 12u "Use SD v1.5 as default"
|
||
|
Pop $V15
|
||
|
|
||
|
nsDialogs::Show
|
||
|
FunctionEnd
|
||
|
|
||
|
|
||
|
; MUI Settings
|
||
|
!define MUI_ABORTWARNING
|
||
|
!define MUI_ICON "sd.ico"
|
||
|
|
||
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "astro.bmp"
|
||
|
|
||
|
; Welcome page
|
||
|
!insertmacro MUI_PAGE_WELCOME
|
||
|
; License page
|
||
|
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
|
||
|
!insertmacro MUI_PAGE_LICENSE "..\CreativeML Open RAIL-M License"
|
||
|
; Directory page
|
||
|
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE "DirectoryLeave"
|
||
|
!insertmacro MUI_PAGE_DIRECTORY
|
||
|
|
||
|
;; TODO: Requires support from "Start Stable Diffusion UI.cmd" and "server.py"
|
||
|
;; which needs to be developed first
|
||
|
; --------
|
||
|
; Page custom nsDialogsPage
|
||
|
; --------
|
||
|
|
||
|
; Instfiles page
|
||
|
!insertmacro MUI_PAGE_INSTFILES
|
||
|
; Finish page
|
||
|
!define MUI_FINISHPAGE_RUN "$INSTDIR\Start Stable Diffusion UI.cmd"
|
||
|
!insertmacro MUI_PAGE_FINISH
|
||
|
|
||
|
; Language files
|
||
|
!insertmacro MUI_LANGUAGE "English"
|
||
|
|
||
|
; MUI end ------
|
||
|
|
||
|
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
||
|
OutFile "Install Stable Diffusion UI.exe"
|
||
|
InstallDir "C:\Stable-Diffusion-UI\"
|
||
|
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
|
||
|
ShowInstDetails show
|
||
|
|
||
|
Section "MainSection" SEC01
|
||
|
SetOutPath "$INSTDIR"
|
||
|
File "..\CreativeML Open RAIL-M License"
|
||
|
File "..\How to install and run.txt"
|
||
|
File "..\LICENSE"
|
||
|
File "..\Start Stable Diffusion UI.cmd"
|
||
|
SetOutPath "$INSTDIR\scripts"
|
||
|
File "..\scripts\bootstrap.bat"
|
||
|
File "..\scripts\install_status.txt"
|
||
|
File "..\scripts\on_env_start.bat"
|
||
|
CreateDirectory "$INSTDIR\profile"
|
||
|
CreateDirectory "$SMPROGRAMS\Stable Diffusion UI"
|
||
|
CreateShortCut "$SMPROGRAMS\Stable Diffusion UI\Start Stable Diffusion UI.lnk" "$INSTDIR\Start Stable Diffusion UI.cmd"
|
||
|
SectionEnd
|
||
|
|
||
|
; 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.
|
||
|
; 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
|
||
|
; needs to be provided in Kilobytes.
|
||
|
Function .onInit
|
||
|
# Set required size of section 'SEC01' to 25 Gigabytes
|
||
|
SectionSetSize ${SEC01} 26214400
|
||
|
FunctionEnd
|
||
|
|
||
|
|
||
|
Section -Post
|
||
|
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\installer.exe"
|
||
|
SectionEnd
|