【发布时间】:2016-10-06 20:16:44
【问题描述】:
如何在 Windows 10 上从 Inno Setup 安装程序打开 PDF?我正在尝试显示帮助文档,而我使用的技术 (based on comments on this question) 适用于 Windows 7,但在 Windows 10 上运行时不会发生任何事情(文件未打开,并且未报告错误消息)。
具体来说,当尝试在需要提升权限的安装程序中打开 PDF 时(在使用 ShellExec() 在自定义代码部分安装之前或在使用 [Run] 部分安装之后使用 shellexec 标志)时,它将生成 2 个 Adobe 进程,但不会打开任何窗口(此外,在手动终止这些进程之前,无法打开其他 PDF)。但是,如果出现以下情况,PDF 将打开:
- 另一个 PDF 已打开,
- 安装程序是从已经提升的命令提示符启动的,或者
- 安装程序是从 Inno Setup Studio 启动的
在所有其他情况下,PDF 将不会启动(并且在您终止 2 个 Adobe 进程之前,不会打开其他 PDF)。
这实际上是适用于 Windows 7 但不适用于 Windows 10 的代码:
ExtractTemporaryFile('test.pdf');
ShellExec('open',
AddQuotes(ExpandConstant('{tmp}\test.pdf')), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
【问题讨论】:
-
以管理员身份运行时,可能没有为动词 open 注册的 shell 命令。您是否尝试只传递
''而不是打开? (这也可以解释为什么ShellExecAsOriginalUser工作时ShellExec不工作 - 非管理员为 PDF 文件分配了打开动词操作。)较新的 Acrobat Reader 版本的默认值是 Read,而不是打开,使用空字符串会导致它使用默认动作。 -
不走运,将
''传递给ShellExec具有相同的结果。不过,很高兴知道 read 是新的默认操作,谢谢。
标签: windows-10 inno-setup