😅
ClickOnce でパラメーター受けて WinForm を開けたい
前の先輩が作った WinForm アプリケーションの起動はとても不安定です。
システムを動くになるように、同じアプリケーションを二回起動の必要があります。
初回起動は A モードを開いて、第二回起動は B モードを開きます。
この2つのモードを同時走っていらないとシステムは作動出来ないです。
ここの問題は、このアプリケーションは2回同時起動すれば、2つのプロセスはBモードで稼働というバグです。
しかもこのアプリケーションはPowerShellで再起動する必要があるです。
ここではもう Powershell で 1分の Sleep を加えたんですけど、偶に2つのBモードプロセスが出る事があります。
そこで、パラメーターで起動モード決める機能を追加したいと思います。
開発環境は問題がないけど、ClickOnceになったら問題だらけ😭
開発環境では Environment.GetCommandLineArgs()
でパラメーターを読み込んだけど、全然問題がなくて走る事が出来ました。
try
{
args = Environment.GetCommandLineArgs();
mode = args[1]; // read first arg
}
catch
{
this.textBox2.AppendText(DateTime.Now + "timer2_Tick: argument not exitst");
this.textBox2.AppendText(Environment.NewLine);
}
すると
bin/ExampleApplication.exe status
正しく読み出しました。ここで多分問題がないと思って、ClickOnceにPublishして
PowerShellで起動してみるをやっている時…
読み出す事ができなくなりました!!!
ClickOnce になってもパラメーターを読み出して欲しい
この文章を参考して試したら、パラメーターがようやく読み出すになりました😭
ClickOnceアプリを引数付きで起動したい話 @ Qiita
この文章がもう詳しく説明しましたので、こちらが解決したバグだけを書いて行きます。
- ショートカットを作成
デプロイ環境はもともとショットカットが作成しましたが、拡張子は.lnk
です。
パラメーターを渡したいなら、拡張子は.appref-ms
にならないといけなさそうです。
ここで一旦.lnk
のショットカットを削除して、もう一度アプリケーションのを再インストールした後、.appref-ms
のショットカットが自動作成されました。
この.appref-ms
のショットカットでパラメーターを渡してみたら、ついにせいこうしました😭
以上です。もしWinFormアプリケーションにパラメーターを渡す事が必要があれば、この文章を参考になれば幸いです。
Discussion