From: Juergen Spitzmueller Date: Thu, 9 Apr 2020 08:08:44 +0000 (+0200) Subject: Address #9368 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=3cfe6292abbd37dd51efee8bde4cb4a15e54ddfc;p=features.git Address #9368 pdfview creates a temp pdf file to determine the standard pdf viewer, code simplification, reducing dll dependencies Patch by Eugene. --- diff --git a/development/Win32/packaging/installer/Readme.txt b/development/Win32/packaging/installer/Readme.txt index 7f1d331334..3d8fe1d3b6 100644 --- a/development/Win32/packaging/installer/Readme.txt +++ b/development/Win32/packaging/installer/Readme.txt @@ -96,7 +96,6 @@ Updating dependencies - pdfview.exe this is a NSIS script, which calls users standard pdf viewer to display pdf files you compile with - LaTeX using LyX, its source is available in %%lyxgit%%\development\Win32\pdfview, - it uses System.dll and Console.dll + LaTeX using LyX, its source is available in %%lyxgit%%\development\Win32\pdfview Note: if you update any dependencies, please add a note to ChangeLog.txt \ No newline at end of file diff --git a/development/Win32/packaging/installer/include/filelist.nsh b/development/Win32/packaging/installer/include/filelist.nsh index b1d3df7799..1efdb4d518 100644 --- a/development/Win32/packaging/installer/include/filelist.nsh +++ b/development/Win32/packaging/installer/include/filelist.nsh @@ -129,8 +129,6 @@ Lists of files to include in the installer !macro FileListPDFViewBin COMMAND DIRECTORY ${FILE}pdfview.exe" - ${FILE}System.dll" - ${FILE}Console.dll" !macroend diff --git a/development/Win32/pdfview/pdfview.nsi b/development/Win32/pdfview/pdfview.nsi index b8c5b1a0fa..5e49a1ee8d 100644 --- a/development/Win32/pdfview/pdfview.nsi +++ b/development/Win32/pdfview/pdfview.nsi @@ -10,9 +10,7 @@ but works around the file locking problems of Adobe Reader and Acrobat. */ -# FIXME -#Unicode true -#doesn't work with the Uniode system.dll of NSIS 3.0.2 +Unicode true !include LogicLib.nsh !include FileFunc.nsh @@ -34,11 +32,9 @@ RequestExecutionLevel user # Variables Var Character -Var RunAppReturn Var OriginalFile Var OriginalFileName -Var OriginalDir Var PDFFile Var ViewerFileName @@ -46,32 +42,6 @@ Var Viewer Var ViewerHandle Var ViewerVersion -#-------------------------------- -# Macros - -!macro SystemCall STACK - - # Call a Windows API function - - Push `${STACK}` - CallInstDLL "$EXEDIR\System.dll" Call - -!macroend - -!macro HideConsole COMMAND_LINE - - # Run an application and hide console output - - Push `${COMMAND_LINE}` - CallInstDLL "$EXEDIR\Console.dll" Exec - Pop $RunAppReturn - - ${If} $RunAppReturn == "error" - MessageBox MB_OK|MB_ICONSTOP "Error opening PDF file $PDFFile." - ${EndIf} - -!macroend - #-------------------------------- # PDF viewing @@ -80,30 +50,32 @@ Section "View PDF file" InitPluginsDir # Temporary directory for PDF file # Command line parameters - ${GetParameters} $OriginalFile + ${GetParameters} $OriginalFileName # Trim quotes - StrCpy $Character $OriginalFile 1 + StrCpy $Character $OriginalFileName 1 ${If} $Character == '"' - StrCpy $OriginalFile $OriginalFile "" 1 + StrCpy $OriginalFileName $OriginalFileName "" 1 ${EndIf} - StrCpy $Character $OriginalFile 1 -1 + StrCpy $Character $OriginalFileName 1 -1 ${If} $Character == '"' - StrCpy $OriginalFile $OriginalFile -1 + StrCpy $OriginalFileName $OriginalFileName -1 ${EndIf} - GetFullPathName $OriginalFile $OriginalFile - ${GetFileName} $OriginalFile $OriginalFileName - ${GetParent} $OriginalFile $OriginalDir # tmpbuf - ${GetParent} $OriginalDir $OriginalDir # tmpdir + GetFullPathName $OriginalFile $OriginalFileName SetOutPath $TEMP # The LyX tmpbuf should not be locked StrCpy $PDFFile $PLUGINSDIR\$OriginalFileName # Check whether the file will be opened with Adobe Reader or Adobe Acrobat - !insertmacro SystemCall "shell32::FindExecutable(t '$OriginalFile', t '', t .s)" - Pop $ViewerFileName + + FileOpen $R0 "$PLUGINSDIR\a.pdf" "w" #create a temp pdf file with a simple name + FileClose $R0 + + #find stadard executable for "a.pdf", writes result in $0 (".r0" below) + System::Call "shell32::FindExecutable(t '$PLUGINSDIR\a.pdf', t '', t .r0)" + StrCpy $ViewerFileName $0 ${GetFileName} $ViewerFileName $Viewer ${If} $Viewer == "" @@ -148,7 +120,7 @@ Section "View PDF file" CopyFiles /SILENT $OriginalFile $PDFFile # Open a new view - !insertmacro HideConsole '"$ViewerFileName" "$PDFFile"' + ExecWait '"$ViewerFileName" "$PDFFile"' ${Else}