2016-10-06 2 views
1

Windows 10의 Inno 설치 프로그램에서 PDF를 어떻게 열 수 있습니까? 도움말 문서를 표시하려고하는데 사용하는 기술 (based on comments on this question)과 Windows 7에서 작동하는 기술이 Windows 10 (파일이 열리지 않고 오류 메시지가보고되지 않음)에서 실행될 때 아무런 결과도 나타나지 않습니다.Windows 10에서 Inno Setup으로 PDF를 여는 방법은 무엇입니까?

특히, (중 ShellExec() 또는 shellexec 플래그를 사용하여 [Run] 섹션에서 설치 후 사용하여 사용자 정의 코드 섹션에서 설치 전) 상승 된 권한을 필요로하는 설치 프로그램에를, 그것은 2 개 어도비 프로세스를 생성하는 PDF를 열하려고 할 때, 창은 열리지 않습니다 (또한 프로세스가 수동으로 종료 될 때까지 다른 PDF를 열 수 없습니다). 그러나, PDF 파일이 열립니다 : 다른 PDF가 이미 열려

  1. 설치가 이미 상승 된 명령 프롬프트에서 시작되었다
  2. , 또는
  3. 설치 프로그램이 Inno Setup으로 스튜디오에서 lanuched하고,

다른 모든 상황에서는 PDF가 실행되지 않습니다 (2 개의 Adobe 프로세스를 종료 할 때까지 다른 PDF는 열리지 않습니다).

이 기본적으로 윈도우 7이 아닌 윈도우 10에서 작동하는 코드입니다 :

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

관리자로 실행할 때 ** ** ** 표시되는 쉘 명령이 없을 가능성이 있습니다. 열린 대신에'''을 그냥 지나치려고 했습니까? (이것은'ShellExec'가 아닌 경우'ShellExecAsOriginalUser'가 작동하는 이유를 설명합니다 - 비 관리자에게는 PDF 파일에 할당 된 열린 동사 동작이 있습니다.) 최신 Acrobat Reader 버전의 기본값은 * Open *이 아닌 * Read *이고 빈 문자열을 사용하면 기본 동작을 사용하게됩니다. –

+0

'' '를'ShellExec'에 전달하는 것은 아무런 결과가 없습니다. 그러나 _read_가 새로운 기본 동작 인 것을 아는 것이 좋습니다. 감사합니다. – dbc

답변

1

나는 결과가 설치 프로그램이 시작되는 방법에 따라 다르기 때문에 뭔가, 권한으로 벌어지고있는 것으로 의심되는 (예를 들어, 이미 상승 된 프로세스 대 시작 후 상승).

ShellExecAsOriginalUser 작품을 사용하십시오. 예컨대 :

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

ShellExec 윈도우 10이 목적을 위해 작동하지 않고 ShellExecAsOriginalUser가하는 버그의 의도 된 기능의 경우 나도 몰라.

+1

어쨌든 맨 처음부터'ShellExecAsOriginalUser'를 사용해야합니다. 응용 프로그램에서 필요로하지 않는 한 승격 된 권한으로 응용 프로그램을 실행하지 않으려 고합니다. 그리고 PDF 뷰어는 그렇지 않습니다. –