質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

0回答

5400閲覧

ClickOnceで起動しているアプリのIEサポート終了対応

ware

総合スコア27

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2022/04/01 03:11

前提

あるアプリ内で、ClickOnceアプリの起動を行っています。
Windows11の環境で動かすとClickOnceアプリ起動時にEdgeの確認メッセージと白いタブが表示されてしまいます。

実現したいこと

Edgeの確認メッセージや、白いタブを表示させずにClickOnceアプリを起動したいです。

試したこと

フォームに以下の3つのボタンを配置して、挙動を確認しました。(ソースを参照ください)
(1)プロセス起動(IE)
(2)プロセス起動(Edge)
(3)COM起動

(1)~(3)のどれでも、ClickOnceアプリの起動自体は出来るのですが、
(1)(2)は、Edgeが起動し、「このファイルを開きますか?」のダイアログが表示されます。
「開く」を選択するとClickOnceアプリが起動し、白いタブが表示されたEdgeが残ります。
(3)は、挙動的には問題ないのですが、内部的に「SHDocVw.InternetExplorer」を使用しているので、出来れば避けたいです。

(3)の挙動をCOMを使用せずに実現する方法があれば教えていただきたいです。
Edgeの設定などで対応できないか調べてはみたのですが…見つけられませんでした…。

using System.Runtime.InteropServices; namespace WindowsFormsApp { public partial class Form1 : Form { private string url = @"http://xxxxx/test_dev.application?ARG1={0}&ARG2={1}"; private const string ARG1 = "hoge"; private const string ARG2 = "hogehoge"; [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetForegroundWindow(IntPtr hWnd); public Form1() { InitializeComponent(); } /// <summary> /// (1)プロセス起動(IE)ボタンを押したときの処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProcessIEbutton_Click(object sender, EventArgs e) { Process.Start(new ProcessStartInfo() { FileName = "iexplore.exe", Arguments = string.Format(url, ARG1, ARG2), CreateNoWindow = false, RedirectStandardOutput = false, WindowStyle = ProcessWindowStyle.Minimized, UseShellExecute = true, }); } /// <summary> /// (2)プロセス起動(Edge)ボタンを押したときの処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProcessEdgebutton_Click(object sender, EventArgs e) { Process.Start(new ProcessStartInfo() { FileName = "MicrosoftEdge.exe", Arguments = string.Format(url, ARG1, ARG2), CreateNoWindow = true, RedirectStandardOutput = false, WindowStyle = ProcessWindowStyle.Minimized, UseShellExecute = true, }); } /// <summary> /// (3)COM起動ボタンを押したときの処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void COMbutton_Click(object sender, EventArgs e) { //オブジェクトを作成 SHDocVw.InternetExplorer objIE = new SHDocVw.InternetExplorer(); objIE.Navigate(string.Format(url, ARG1, ARG2)); //IEを非表示 objIE.Visible = false; //最前面表示 SetForegroundWindow((IntPtr)objIE.HWND); } } }

補足情報(FW/ツールのバージョンなど)

VisualStudio2017
.NetFramework 4.6.1
Edge バージョン 99.0.1150.55 (公式ビルド) (64 ビット)
→EdgeのClickOnce SupportはEnableにしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/04/01 03:15

IE や Edge を使わず直接起動すれば良いのでは?
ware

2022/04/01 03:22

直接起動というのはローカルにインストールされたものを起動するという事でしょうか? インストールされていなければインストールしたい+最新のプログラムをダウンロードして欲しいのでローカルにインストールされたものを起動する形にするのは避けたいです。
Zuishin

2022/04/01 03:33

Click Once はもともとそのような動作になっています。 起動すると常に最新バージョンを探し、インストールされていなければインストールします。
ware

2022/04/01 04:05

サーバの「test_dev.application」を直接起動するという事でしょうか? 「test_dev.application」の置かれたディレクトリは共有などの設定はできなくて、直接アクセスできないようになっています… 直接起動という意味を取り違えていたらすいません…。
Zuishin

2022/04/01 04:13

アクセスできないものは起動もインストールもできるはずがないので、それは何かの間違いでしょう。
Zuishin

2022/04/01 05:08

ブラウザしかアクセス権限がないわけではないと思いますが。
ware

2022/04/01 05:25

ブラウザを介した起動しかした事なかったので、クライアントPCからtest_dev.applicationを直接起動する方法が思い浮かびません…不勉強ですいません…。 processでFileNameに直接URLを指定しても、通常使うブラウザで立ち上がるだけですし…直接起動…うーん。
Zuishin

2022/04/01 05:30 編集

WebView コントロールを使うなり、ダウンロードするなりしてみてはどうでしょうか。 その前に一度、手動ダウンロードして実行できるかを確かめてみた方が良いと思います。
ware

2022/04/01 09:28

ありがとうございます。 色々と試していて検証に時間がかかりそうなので先にお礼だけ… (現在の状況) ○ダウンロードするパターンの検証 test_dev.applicationのcodebaseが相対パスになっていて、test_dev.applicationだけをダウンロードしても動作しなかったのでフォルダ毎ごっそりダウンロードして動かす形にしてみました。 起動は出来たのですが、ダウンロードしているtempディレクトリが変わるせいで同一バージョンにもかかわらずダウンロードの度にインストールされてしまうので何とか回避する方法がないか調べています。 ○WebView2コントロール URLを指定してもClickOnceが起動しないです。 そもそも起動できないのか、書き方が間違っているのか…調査中です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問