mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
Windows installer improvements and fixes:
- copy .ico file - write installer log to install.log - restore python DLL to bin directory
This commit is contained in:
parent
c4d232b0be
commit
127cbc3b38
@ -141,8 +141,9 @@ SectionGroup "Panda3D Libraries"
|
|||||||
SetDetailsPrint listonly
|
SetDetailsPrint listonly
|
||||||
|
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
File "${BUILT}\LICENSE"
|
File /nonfatal "${BUILT}\LICENSE"
|
||||||
File /r /x CVS "${BUILT}\ReleaseNotes"
|
File /nonfatal "${BUILT}\ReleaseNotes"
|
||||||
|
File /nonfatal "${BUILT}\pandaIcon.ico"
|
||||||
|
|
||||||
SetOutPath $INSTDIR\etc
|
SetOutPath $INSTDIR\etc
|
||||||
File /r "${BUILT}\etc\*"
|
File /r "${BUILT}\etc\*"
|
||||||
@ -532,15 +533,17 @@ Section "Sample programs" SecSamples
|
|||||||
WriteINIStr $INSTDIR\Manual.url "InternetShortcut" "URL" "https://www.panda3d.org/manual/index.php"
|
WriteINIStr $INSTDIR\Manual.url "InternetShortcut" "URL" "https://www.panda3d.org/manual/index.php"
|
||||||
WriteINIStr $INSTDIR\Samples.url "InternetShortcut" "URL" "https://www.panda3d.org/manual/index.php/Sample_Programs_in_the_Distribution"
|
WriteINIStr $INSTDIR\Samples.url "InternetShortcut" "URL" "https://www.panda3d.org/manual/index.php/Sample_Programs_in_the_Distribution"
|
||||||
SetOutPath $INSTDIR
|
SetOutPath $INSTDIR
|
||||||
CreateShortCut "$SMPROGRAMS\${TITLE}\Panda3D Manual.lnk" "$INSTDIR\Manual.url" "" "$INSTDIR\bin\eggcacher.exe" 0 "" "" "Panda3D Manual"
|
CreateShortCut "$SMPROGRAMS\${TITLE}\Panda3D Manual.lnk" "$INSTDIR\Manual.url" "" "$INSTDIR\pandaIcon.ico" 0 "" "" "Panda3D Manual"
|
||||||
CreateShortCut "$SMPROGRAMS\${TITLE}\Panda3D Website.lnk" "$INSTDIR\Website.url" "" "$INSTDIR\bin\eggcacher.exe" 0 "" "" "Panda3D Website"
|
CreateShortCut "$SMPROGRAMS\${TITLE}\Panda3D Website.lnk" "$INSTDIR\Website.url" "" "$INSTDIR\pandaIcon.ico" 0 "" "" "Panda3D Website"
|
||||||
CreateShortCut "$SMPROGRAMS\${TITLE}\Sample Program Manual.lnk" "$INSTDIR\Samples.url" "" "$INSTDIR\bin\eggcacher.exe" 0 "" "" "Sample Program Manual"
|
CreateShortCut "$SMPROGRAMS\${TITLE}\Sample Program Manual.lnk" "$INSTDIR\Samples.url" "" "$INSTDIR\pandaIcon.ico" 0 "" "" "Sample Program Manual"
|
||||||
|
|
||||||
FindFirst $0 $1 $INSTDIR\samples\*
|
FindFirst $0 $1 $INSTDIR\samples\*
|
||||||
loop:
|
loop:
|
||||||
StrCmp $1 "" done
|
StrCmp $1 "" done
|
||||||
StrCmp $1 "." next
|
StrCmp $1 "." next
|
||||||
StrCmp $1 ".." next
|
StrCmp $1 ".." next
|
||||||
|
FindFirst $2 $3 $INSTDIR\samples\$1\*.py
|
||||||
|
StrCmp $3 "" next
|
||||||
Push $1
|
Push $1
|
||||||
Push "-"
|
Push "-"
|
||||||
Push " "
|
Push " "
|
||||||
@ -557,14 +560,13 @@ Section "Sample programs" SecSamples
|
|||||||
DetailPrint "Creating shortcuts for sample program $READABLE"
|
DetailPrint "Creating shortcuts for sample program $READABLE"
|
||||||
CreateDirectory "$SMPROGRAMS\${TITLE}\Sample Programs\$READABLE"
|
CreateDirectory "$SMPROGRAMS\${TITLE}\Sample Programs\$READABLE"
|
||||||
SetOutPath $INSTDIR\samples\$1
|
SetOutPath $INSTDIR\samples\$1
|
||||||
WriteINIStr $INSTDIR\samples\$1\ManualPage.url "InternetShortcut" "URL" "http://panda3d.org/wiki/index.php/Sample_Programs:_$MANPAGE"
|
WriteINIStr $INSTDIR\samples\$1\ManualPage.url "InternetShortcut" "URL" "https://www.panda3d.org/wiki/index.php/Sample_Programs:_$MANPAGE"
|
||||||
CreateShortCut "$SMPROGRAMS\${TITLE}\Sample Programs\$READABLE\Manual Page.lnk" "$INSTDIR\samples\$1\ManualPage.url" "" "$INSTDIR\bin\eggcacher.exe" 0 "" "" "Manual Entry on this Sample Program"
|
CreateShortCut "$SMPROGRAMS\${TITLE}\Sample Programs\$READABLE\Manual Page.lnk" "$INSTDIR\samples\$1\ManualPage.url" "" "$INSTDIR\pandaIcon.ico" 0 "" "" "Manual Entry on this Sample Program"
|
||||||
CreateShortCut "$SMPROGRAMS\${TITLE}\Sample Programs\$READABLE\View Source Code.lnk" "$INSTDIR\samples\$1"
|
CreateShortCut "$SMPROGRAMS\${TITLE}\Sample Programs\$READABLE\View Source Code.lnk" "$INSTDIR\samples\$1"
|
||||||
FindFirst $2 $3 $INSTDIR\samples\$1\*.py
|
|
||||||
iloop:
|
iloop:
|
||||||
StrCmp $3 "" idone
|
StrCmp $3 "" idone
|
||||||
CreateShortCut "$SMPROGRAMS\${TITLE}\Sample Programs\$READABLE\Run $3.lnk" "$INSTDIR\python\python.exe" "-E $3" "$INSTDIR\bin\eggcacher.exe" 0 SW_SHOWMINIMIZED "" "Run $3"
|
CreateShortCut "$SMPROGRAMS\${TITLE}\Sample Programs\$READABLE\Run $3.lnk" "$INSTDIR\python\python.exe" "-E $3" "$INSTDIR\pandaIcon.ico" 0 SW_SHOWMINIMIZED "" "Run $3"
|
||||||
CreateShortCut "$INSTDIR\samples\$1\Run $3.lnk" "$INSTDIR\python\python.exe" "-E $3" "$INSTDIR\bin\eggcacher.exe" 0 SW_SHOWMINIMIZED "" "Run $3"
|
CreateShortCut "$INSTDIR\samples\$1\Run $3.lnk" "$INSTDIR\python\python.exe" "-E $3" "$INSTDIR\pandaIcon.ico" 0 SW_SHOWMINIMIZED "" "Run $3"
|
||||||
FindNext $2 $3
|
FindNext $2 $3
|
||||||
goto iloop
|
goto iloop
|
||||||
idone:
|
idone:
|
||||||
@ -684,6 +686,10 @@ Section -post
|
|||||||
DetailPrint "Broadcasting WM_WININICHANGE message..."
|
DetailPrint "Broadcasting WM_WININICHANGE message..."
|
||||||
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=500
|
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=500
|
||||||
|
|
||||||
|
# Now dump the log to disk.
|
||||||
|
StrCpy $0 "$INSTDIR\install.log"
|
||||||
|
Push $0
|
||||||
|
Call DumpLog
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section Uninstall
|
Section Uninstall
|
||||||
@ -1235,3 +1241,47 @@ done:
|
|||||||
Exch $R3
|
Exch $R3
|
||||||
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
!define LVM_GETITEMCOUNT 0x1004
|
||||||
|
!define LVM_GETITEMTEXT 0x102D
|
||||||
|
|
||||||
|
Function DumpLog
|
||||||
|
Exch $5
|
||||||
|
Push $0
|
||||||
|
Push $1
|
||||||
|
Push $2
|
||||||
|
Push $3
|
||||||
|
Push $4
|
||||||
|
Push $6
|
||||||
|
|
||||||
|
FindWindow $0 "#32770" "" $HWNDPARENT
|
||||||
|
GetDlgItem $0 $0 1016
|
||||||
|
StrCmp $0 0 exit
|
||||||
|
FileOpen $5 $5 "w"
|
||||||
|
StrCmp $5 "" exit
|
||||||
|
SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6
|
||||||
|
System::Alloc ${NSIS_MAX_STRLEN}
|
||||||
|
Pop $3
|
||||||
|
StrCpy $2 0
|
||||||
|
System::Call "*(i, i, i, i, i, i, i, i, i) i \
|
||||||
|
(0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1"
|
||||||
|
loop: StrCmp $2 $6 done
|
||||||
|
System::Call "User32::SendMessageA(i, i, i, i) i \
|
||||||
|
($0, ${LVM_GETITEMTEXT}, $2, r1)"
|
||||||
|
System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)"
|
||||||
|
FileWrite $5 "$4$\r$\n"
|
||||||
|
IntOp $2 $2 + 1
|
||||||
|
Goto loop
|
||||||
|
done:
|
||||||
|
FileClose $5
|
||||||
|
System::Free $1
|
||||||
|
System::Free $3
|
||||||
|
exit:
|
||||||
|
Pop $6
|
||||||
|
Pop $4
|
||||||
|
Pop $3
|
||||||
|
Pop $2
|
||||||
|
Pop $1
|
||||||
|
Pop $0
|
||||||
|
Exch $5
|
||||||
|
FunctionEnd
|
||||||
|
@ -2871,11 +2871,13 @@ if tp_dir is not None:
|
|||||||
CopyAllFiles(GetOutputDir() + "/bin/", tp_dir + "extras/bin/")
|
CopyAllFiles(GetOutputDir() + "/bin/", tp_dir + "extras/bin/")
|
||||||
|
|
||||||
if not PkgSkip("PYTHON") and not RTDIST:
|
if not PkgSkip("PYTHON") and not RTDIST:
|
||||||
#XXX rdb I don't think we need to copy over the Python DLL, do we?
|
# We need to copy the Python DLL to the bin directory for now.
|
||||||
#pydll = "/" + SDK["PYTHONVERSION"].replace(".", "")
|
pydll = "/" + SDK["PYTHONVERSION"].replace(".", "")
|
||||||
#if (GetOptimize() <= 2): pydll += "_d.dll"
|
if GetOptimize() <= 2:
|
||||||
#else: pydll += ".dll"
|
pydll += "_d.dll"
|
||||||
#CopyFile(GetOutputDir() + "/bin" + pydll, SDK["PYTHON"] + pydll)
|
else:
|
||||||
|
pydll += ".dll"
|
||||||
|
CopyFile(GetOutputDir() + "/bin" + pydll, SDK["PYTHON"] + pydll)
|
||||||
|
|
||||||
#for fn in glob.glob(SDK["PYTHON"] + "/vcruntime*.dll"):
|
#for fn in glob.glob(SDK["PYTHON"] + "/vcruntime*.dll"):
|
||||||
# CopyFile(GetOutputDir() + "/bin/", fn)
|
# CopyFile(GetOutputDir() + "/bin/", fn)
|
||||||
@ -2949,6 +2951,7 @@ if GetTarget() == 'windows':
|
|||||||
# Convert to Windows newlines so they can be opened by notepad.
|
# Convert to Windows newlines so they can be opened by notepad.
|
||||||
WriteFile(GetOutputDir() + "/LICENSE", ReadFile("doc/LICENSE"), newline='\r\n')
|
WriteFile(GetOutputDir() + "/LICENSE", ReadFile("doc/LICENSE"), newline='\r\n')
|
||||||
WriteFile(GetOutputDir() + "/ReleaseNotes", ReadFile("doc/ReleaseNotes"), newline='\r\n')
|
WriteFile(GetOutputDir() + "/ReleaseNotes", ReadFile("doc/ReleaseNotes"), newline='\r\n')
|
||||||
|
CopyFile(GetOutputDir() + "/pandaIcon.ico", "panda/src/configfiles/pandaIcon.ico")
|
||||||
else:
|
else:
|
||||||
CopyFile(GetOutputDir()+"/", "doc/LICENSE")
|
CopyFile(GetOutputDir()+"/", "doc/LICENSE")
|
||||||
CopyFile(GetOutputDir()+"/", "doc/ReleaseNotes")
|
CopyFile(GetOutputDir()+"/", "doc/ReleaseNotes")
|
||||||
@ -6596,7 +6599,7 @@ def MakeInstallerNSIS(file, title, installdir):
|
|||||||
AddToPathEnv("PATH", GetOutputDir() + "\\bin")
|
AddToPathEnv("PATH", GetOutputDir() + "\\bin")
|
||||||
AddToPathEnv("PATH", GetOutputDir() + "\\plugins")
|
AddToPathEnv("PATH", GetOutputDir() + "\\plugins")
|
||||||
|
|
||||||
cmd = sys.executable + " -B -u direct\\src\\plugin_installer\\make_installer.py"
|
cmd = sys.executable + " -B -u " + os.path.join("direct", "src", "plugin_installer", "make_installer.py")
|
||||||
cmd += " --version %s --regview %s" % (VERSION, regview)
|
cmd += " --version %s --regview %s" % (VERSION, regview)
|
||||||
|
|
||||||
if GetTargetArch() == 'x64':
|
if GetTargetArch() == 'x64':
|
||||||
@ -6605,7 +6608,7 @@ def MakeInstallerNSIS(file, title, installdir):
|
|||||||
cmd += " --install \"$PROGRAMFILES32\\Panda3D\" "
|
cmd += " --install \"$PROGRAMFILES32\\Panda3D\" "
|
||||||
|
|
||||||
oscmd(cmd)
|
oscmd(cmd)
|
||||||
shutil.move("direct\\src\\plugin_installer\\p3d-setup.exe", file)
|
shutil.move(os.path.join("direct", "src", "plugin_installer", "p3d-setup.exe"), file)
|
||||||
return
|
return
|
||||||
|
|
||||||
print("Building "+title+" installer at %s" % (file))
|
print("Building "+title+" installer at %s" % (file))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user