我有一个nsis脚本,它有一个show readme函数,可以使用以下行在所有操作系统中成功地启动pdf:

ExecShell "open" "$0\$(APP_DATA_PATH)\AppData\Readme\readme_$(LOCAL_CODE).pdf"

但是-不是在Windows8中。如果除了adobe之外的任何其他阅读器都是默认的阅读器,那么看起来没问题。我们必须支持adobe,在windows 8中的其他地方启动pdf文件似乎没有什么问题。
有没有其他nsis命令可以尝试启动我可以尝试的文件?还有其他建议吗?

最佳答案

尝试使用默认动词:ExecShell "" "c:\full\path\to\file.pdf"
编辑:

Section

StrCpy $0 "$desktop\test.pdf"

; This should be the same as using ExecShell
System::Call 'shell32::ShellExecute(i$hwndparent,i0,t"$0",i0,i0,i5)i.r1'
DetailPrint "ShellExecute: Return=$1 (> 32 for success)"

; Let's try really hard by using SEE_MASK_INVOKEIDLIST
!define SEE_MASK_INVOKEIDLIST 0x0000000C
!define SEE_MASK_FLAG_DDEWAIT 0x00000100
System::Call '*(i60,i${SEE_MASK_INVOKEIDLIST}|${SEE_MASK_FLAG_DDEWAIT},i$hwndparent,i0,t"$0",i0,i0,i5,i,i0,i,i,i,i,i)i.r2' ; Allocate SHELLEXECUTEINFO
System::Call 'shell32::ShellExecuteEx(ir2)i.r1'
System::Free $2
DetailPrint "ShellExecuteEx: Success=$1"

SectionEnd

关于windows - NullSoft/NSIS使用Adobe 11启动PDF无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20478366/

10-11 13:46