2016-10-06 14 views
1

Windows 10のInno Setupインストーラから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は開きません)。

これは基本的にWindows 7のではなく、Windowsの10で動作するコードです:

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

管理者として実行しているときに、動詞** open **のシェルコマンドが登録されていない可能性があります。開いた代わりに '' 'を渡すだけでしたか? (これは、 'ShellExecAsOriginalUser'がなぜ' ShellExec'が動作しないときに機能するのかを説明するでしょう - 非管理者はPDFファイルに割り当てられた動詞動詞アクションを持っています)新しいAcrobat Readerバージョンのデフォルトは、* Open *空の文字列を使用すると、デフォルトのアクションが使用されます。 –

+0

'' ''を 'ShellExec'に渡すことは、同じ結果をもたらします。しかし、_read_が新しいデフォルトのアクションであることを知ってうれしいです。ありがとう。 – dbc

答えて

1

私は結果はインストーラが起動される方法に応じて異なるので何かが、権限で起こっていると思われる(例えばすでに上昇しているプロセスと開始後の上昇との比較)。

ShellExecAsOriginalUserを使用しています。例えば:

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

それはShellExecは、Windows 10上で、この目的のために動作しないとShellExecAsOriginalUserがないバグや目的の機能である場合、私は知りません。

+1

とにかく、最初から 'ShellExecAsOriginalUser'を使ってください。アプリケーションが必要としない限り、昇格された特権を持つアプリケーションを実行する必要はありません。そして、PDFビューアはそうではありません。 –

関連する問題