2016-09-19 14 views
-1

ありがとうございます。Outlook VSTOフォームがリリースバージョン(インストール済み)に表示されない

私は、browserを読み込んで、サードパーティの認証サービスでログインできるようにするポップアップFormを含むOutlookプラグインを開発しています。

これは、デバッグセッションから実行すると効果的です。リボンにカスタムタブが表示され、「ログイン」ボタンをクリックすると、.ShowDialog()を使用してフォームがモーダルとしてポップアップします。私はこのVSTOを公開して、自分のマシンにインストールすると、私は、Outlook 2016

問題

を使用しています

、プラグインのロードと私はカスタムリボンタブにある「ログイン」ボタンを見ることができ、クリックすると何も起こりません。ダイアログが単にメインフォームの下にポップしているのではないことを確認しました。それがあれば、私はそれを見つけることができません。

デバッグセッションに戻る - すべてがうまくいきます。私はパーミッションの問題を疑うが、Outlookからプロンプトやエラーが出ない。

最後に、それが関連するかどうかはわからないが、私は同僚にVSTOインストーラを送信してインストールしようとしたとき、彼らは次のエラーを取得する:

System.Security.SecurityException:カスタマイズ機能この {APP NAME REMOVED}またはその場所の展開マニフェストに署名するために使用された証明書が が信頼されていないため、アプリケーションが機能しません。詳細については、管理者に問い合わせてください。

ご協力いただきまして誠にありがとうございます。

+0

ユージーンの答えは正しいが、問題の根本原因は無関係であることがわかった。私はそれが他の誰かを助ける場合があります:ポップアップは、構成(XML)ファイルから取得されたURLに依存しています。このXMLファイルは、リリース版では使用できませんでした。 –

答えて

1

ほとんどの場合、フォームはOutlookウィンドウの後ろに表示されます。 Outlookウィンドウの上に常にフォームを表示する場合は、親ウィンドウのハンドルを指定する必要があります。 System.Windows.Forms.FormクラスのShowおよびShowDialogメソッドは、IWin32Windowインターフェイスのインスタンスをパラメータとして渡すことによって、親ウィンドウハンドルを指定できます。あなたはIOleWindowインターフェイスにExplorerまたはInspectorクラスのインスタンスをキャストし、ために使用することができるウィンドウハンドルを取得することができますOutlookで

public class WindowWrapper : System.Windows.Forms.IWin32Window 
{ 
    public WindowWrapper(IntPtr handle) 
    { 
     _hwnd = handle; 
    } 

    public IntPtr Handle 
    { 
     get 
     { 
      return _hwnd; 
     } 
    } 

    private IntPtr _hwnd; 
} 

まず、あなたはそのインタフェースを実装するクラスを必要としますIWin32Windowの実装。

+0

ユージンさん、ありがとう、私はこのクラスを追加しましたが、最後の部分を実装するのに少し問題があります。親ウィンドウへの参照を取得する例を提供するような親切にしてもらえますか?また、私のダイアログは別のスレッドから起動されています - これも原因かもしれないと仮定していますが、どう思いますか?申し訳ありません - 私は苦労したプロジェクトを継承しましたが、私はVSTOまたはWindowsフォーム開発者ではありません。あなたの助けをもう一度ありがとう。 –

関連する問題