From a3b98687fabe94b23ca4b784b35dc76a627038f5 Mon Sep 17 00:00:00 2001 From: Joost Verburg Date: Sat, 4 Nov 2006 23:06:14 +0000 Subject: [PATCH] store temporary PDF files outside the LyX tmpbuf to prevent file locking problems when LyX is closed while Adobe Reader is still open git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15742 a592a061-630c-0410-9148-cb99ea01b6c8 --- development/Win32/pdfview/pdfview.nsi | 73 +++++++++++++++------------ 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/development/Win32/pdfview/pdfview.nsi b/development/Win32/pdfview/pdfview.nsi index 5be4897a92..f4aba8cdd6 100644 --- a/development/Win32/pdfview/pdfview.nsi +++ b/development/Win32/pdfview/pdfview.nsi @@ -35,7 +35,9 @@ SilentInstall silent ;Variables Var Dummy -Var FileName +Var OriginalFile +Var OriginalFileName +Var PDFFile Var Viewer Var OriginalTimeHigh Var OriginalTimeLow @@ -69,24 +71,33 @@ Var CurrentTimeLow Section "View PDF file" + InitPluginsDir ;Temporary directory for PDF file + ;Command line parameters Call GetParameters - Pop $FileName + Pop $OriginalFile ;Trim quotes - StrCpy $Dummy $FileName 1 + StrCpy $Dummy $OriginalFile 1 ${if} $Dummy == '"' - StrCpy $FileName $FileName "" 1 + StrCpy $OriginalFile $OriginalFile "" 1 ${endif} - StrCpy $Dummy $FileName 1 -1 + StrCpy $Dummy $OriginalFile 1 -1 ${if} $Dummy == '"' - StrCpy $FileName $FileName -1 + StrCpy $OriginalFile $OriginalFile -1 ${endif} - GetFullPathName $FileName $FileName + GetFullPathName $OriginalFile $OriginalFile + Push $OriginalFile + Call GetFileName + Pop $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 - Push $FileName + Push $OriginalFile !insertmacro SystemCall "shell32::FindExecutable(t s, t '', t .s)" Call GetFileName Pop $Viewer @@ -97,51 +108,49 @@ Section "View PDF file" ;Using Adobe viewer ;Close existing view - ${if} ${fileexists} $FileName~ - !insertmacro HideConsole '"$EXEDIR\pdfclose.exe" --file "$FileName~"' + ${if} ${fileexists} $PDFFile + !insertmacro HideConsole '"$EXEDIR\pdfclose.exe" --file "$PDFFile"' ${endif} ;Copy PDF to temporary file to allow LyX to overwrite the original - CopyFiles /SILENT $FileName $FileName~ + CopyFiles /SILENT $OriginalFile $PDFFile ;Open a new view - !insertmacro HideConsole '"$EXEDIR\pdfopen.exe" --back --file "$FileName~"' + !insertmacro HideConsole '"$EXEDIR\pdfopen.exe" --back --file "$PDFFile"' ;Monitor for updates of the original file - GetFileTime $FileName $OriginalTimeHigh $OriginalTimeLow + GetFileTime $OriginalFile $OriginalTimeHigh $OriginalTimeLow ${do} Sleep 500 - FileOpen $Dummy $FileName~ a + FileOpen $Dummy $PDFFile a ${if} $Dummy != "" ;File no longer locked, reader closed FileClose $Dummy - Delete $FileName~ + Delete $PDFFile Quit ${endif} - ${unless} ${fileexists} $FileName - ;Original no longer exists - Delete $FileName~ - Quit - ${endif} - - GetFileTime $FileName $CurrentTimeHigh $CurrentTimeLow - - ${if} $OriginalTimeHigh != $CurrentTimeHigh - ${orif} $OriginalTimeLow != $CurrentTimeLow + ${if} ${fileexists} $OriginalFile - ;Original has been modified, update! + GetFileTime $OriginalFile $CurrentTimeHigh $CurrentTimeLow - StrCpy $OriginalTimeHigh $CurrentTimeHigh - StrCpy $OriginalTimeLow $CurrentTimeLow - !insertmacro HideConsole '"$EXEDIR\pdfclose.exe" --file "$FileName~"' - CopyFiles /SILENT $FileName $FileName~ - !insertmacro HideConsole '"$EXEDIR\pdfopen.exe" --back --file "$FileName~"' + ${if} $OriginalTimeHigh != $CurrentTimeHigh + ${orif} $OriginalTimeLow != $CurrentTimeLow + + ;Original has been modified, update! + + StrCpy $OriginalTimeHigh $CurrentTimeHigh + StrCpy $OriginalTimeLow $CurrentTimeLow + !insertmacro HideConsole '"$EXEDIR\pdfclose.exe" --file "$PDFFile"' + CopyFiles /SILENT $OriginalFile $PDFFile + !insertmacro HideConsole '"$EXEDIR\pdfopen.exe" --back --file "$PDFFile"' + + ${endif} ${endif} @@ -151,7 +160,7 @@ Section "View PDF file" ;Another PDF viewer like GSView is used ;No need for special actions, just forward to ShellExecute - ExecShell open $FileName + ExecShell open $OriginalFile ${endif} -- 2.39.5