如何在Windows 10上使用Inno Setup打开PDF?

时间:2016-10-06 20:16:45

标签: windows-10 inno-setup

如何在Windows 10上从Inno Setup安装程序打开PDF?我试图显示帮助文档,我使用的技术(based on comments on this question)和适用于Windows 7的技术在Windows 10上运行时没有任何结果(文件没有打开,没有报告错误消息。)

具体而言,在安装程序中尝试打开PDF时(在使用ShellExec()的自定义代码部分中安装之前或使用[Run]标志在shellexec部分中安装之后)需要提升权限,它将产生2个Adobe进程,但不会打开任何窗口(此外,在手动终止这些进程之前,不能打开其他PDF)。但是,如果出现以下情况,PDF将会打开:

  1. 另一个PDF已经打开,
  2. 安装程序是从已提升的命令提示符或
  3. 启动的
  4. 安装程序来自Inno Setup Studio
  5. 在所有其他情况下,PDF将无法启动(在您杀死2个Adobe进程之前,不会打开其他PDF文件)。

    这实际上是适用于Windows 7但不适用于Windows 10的代码:

    ExtractTemporaryFile('test.pdf');
    ShellExec('open',
      AddQuotes(ExpandConstant('{tmp}\test.pdf')), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
    

1 个答案:

答案 0 :(得分:1)

我怀疑某些事情正在发生特权,因为结果会有所不同,具体取决于安装程序的启动方式(例如,从已经提升的进程到启动后提升)。

使用ShellExecAsOriginalUser有效。 e.g:

ExtractTemporaryFile('test.pdf');
ShellExecAsOriginalUser('open',
  AddQuotes(ExpandConstant('{tmp}\test.pdf')), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);

我不知道这是ShellExec在Windows 10和ShellExecAsOriginalUser上为此目的而无效的错误或预期功能。