]> git.lyx.org Git - features.git/commitdiff
Address #9368
authorJuergen Spitzmueller <spitz@lyx.org>
Thu, 9 Apr 2020 08:08:44 +0000 (10:08 +0200)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 18 Jun 2020 13:48:55 +0000 (15:48 +0200)
pdfview creates a temp pdf file to determine the standard pdf viewer,
code simplification, reducing dll dependencies

Patch by Eugene.

development/Win32/packaging/installer/Readme.txt
development/Win32/packaging/installer/include/filelist.nsh
development/Win32/pdfview/pdfview.nsi

index 7f1d331334a847e959220e5ded24466db1aab8fd..3d8fe1d3b6fe25794532bca3b6fa32b7c6247ed0 100644 (file)
@@ -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
index b1d3df7799513748df190385ef58b848d580470b..1efdb4d518f0c57df3f4e875641d04fd5026e62a 100644 (file)
@@ -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
 
index b8c5b1a0fa53c89a63c8d499942d502562df5d42..5e49a1ee8d8e8f15b1a9af34dd84be27ffbe6004 100644 (file)
@@ -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}