トップ回答者
ClickOnceで配置されたWPFアプリの再起動方法について

質問
-
お世話になります。
WPFアプリを開発し、ClickOnceを使用してネットワーク上のWindowsフォルダに配置して使用しています。
ソフトウェアの仕様上、途中で自分自身を再起動する必要があり、現在は以下の様なコードで対応しています。
System.Diagnostics.Process.Start(Application.ResourceAssembly.Location);
Application.Current.Shutdown();
このコードでも再起動は行えるのですが、再起動後のアプリはClickOnce方式で起動したアプリとして
認識されないようで困っています。
例えば、ClickOnceのデータフォルダを使用するために、以下の様なコードを使用するのですが
if (ApplicationDeployment.IsNetworkDeployed)
{
return ApplicationDeployment.CurrentDeployment.DataDirectory;
}
else
{
return AppDomain.CurrentDomain.BaseDirectory;
}
IsNetworkDeployedプロパティが、再起動後のアプリだとfalseになってしまい
データフォルダの情報を取得できなかったりしています。
IsNetworkDeployedプロパティを使用せず、ClickOnceアプリとしてのみ作りこむこともできますが
そうなると、普段のデバッグ時に支障がでてしまいます。
(上記の例だと、ローカル上のVisualStadio上で実行すると例外が発生したりします)
そもそもProcess.Start()時の実行方法に問題があるような気がするのですが
ClickOnceの仕組みの理解不足もあり、どのように回避したらよいか見つけることができませんでした。
(起動時のショートカットファイルのパスが分かれば良いような気もしますが、
それに該当するようなAPIも見つけることができませんでした)
なにかよい方法が有りましたら教えて下さい。
よろしくお願いします。
回答
-
こんにちは。
System.Windows.Forms.Application.Restart();
で同じURLで起動されます。(WPF+ClickOnceで確認)
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.restart%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
- 編集済み いわさ Tak1waMVP, Moderator 2015年2月25日 3:48
- 回答としてマーク fieldsunset 2015年2月25日 4:20
すべての返信
-
こんにちは。
System.Windows.Forms.Application.Restart();
で同じURLで起動されます。(WPF+ClickOnceで確認)
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.restart%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
- 編集済み いわさ Tak1waMVP, Moderator 2015年2月25日 3:48
- 回答としてマーク fieldsunset 2015年2月25日 4:20
-