デスクトップアプリケーションを Microsoft ストアで公開する Tips を書きました

調べてもあんまり情報がなかったのでとりあえず一番簡単な方法で Microsoft ストアに公開できる手順をまとめてみました。Desktop Bridge を使っていますが、2~3年ぐらい前に比べると簡単に行えるようになってるみたいです。

ただやってみた感想としては100%そのまま移行できるというわけではなく、いくつか修正が必要な場所が出てくるところがあります。特にプログラムの実行場所がユーザーフォルダでもなく Program Files でもなく UWP のインストール場所になるので、プログラムの配置場所に依存するコードを書いてたりするとそのまま動かなかったりします。インストールしてのデバッグ実行は可能なので公開前には動作確認を行った方がよさそうです。

------------------------

]]>

WiX の Tips を公開しました

Windows 向けアプリケーションのインストーラーを作成するのに使われることの多い WiX に関する Tips をいくつか作成しました。WiX を使用すると Visual Studio に標準で含まれているセットアッププロジェクトよりも、より自由な形でインストーラーを作成することができます。

ゲーム「リトルセイバー」の体験版を配布したときも WiX を使用してインストーラーを作成しており、せっかくなので覚えたことを Tips にしてみました。

Tips は以下のページにまとめております。

---------------------------------

  • プログラム配布用の Windows インストーラーを作成ための WiX をセットアップする
  • Wix を使用して Windows インストーラー「MSI」を作成する part1
  • Wix を使用して Windows インストーラー「MSI」を作成する part2
  • バージョンアップしたアプリケーションを配布するインストーラーを WiX で作成する
  • インストーラーファイルの付加情報を日本語で設定する
  • CAB ファイルを MSI ファイルの中に含める
  • 64bit アプリケーションをインストールするインストーラーを作成する
  • Ngen.exe を使用してインストールしたプログラムの起動を高速化

image

]]>

Windows 10 Mobile のアプリケーションは起動に20秒以上かかると起動せずに落ちる

Windows 10 Mobile のアプリケーションで起動時にファイル操作を「同期処理」であれこれやっていて結構時間がかかっているのですが、Visual Studio からデバッグ実行している限りでは問題なく動作し、W10M から単体でアプリケーションを起動すると、起動が完了する前に落ちてしまいます。

最初この現象の理由がわからずデバッグ実行での確認もできないので悩んでいました。例外をキャッチしてログを出すようにもしていたのですが、何でもないような処理のところでプログラムが落ち、例外もまったく発生しませんでした。

しかし、何回かやっているうちに気づいたのですが、ログの出力時間を確認したら最初のログの時間と落ちるタイミングの時間の差が20秒であることに気づきました。試しに Task.Delay.Wait で待機させるようにしたらもっと前の処理で落ちることを確認できました。

Windiws Phone 7 か 8 あたりでも、処理に時間がかかって UI? に処理を戻さないとアプリケーションが落ちるという話は聞いたことがあるのですが、このことをしばらく思い出せなくて盲点でした。デバッグ実行では落ちないし、例外も発生しないので気を付けなければいけませんね。

余談ですが、ファイルアクセス処理はファイルがあるかどうかのチェックだけでも1回あたり1秒ぐらいかかるので非同期処理のほうがいいですね。

]]>