>

2012年2月27日月曜日

Windowsインストーラでインストールしたアプリを起動するたびに"インストールの準備中..."が出てしまう件

VisualStudio2008のセットアッププロジェクトで自分のアプリのインストーラ(msi)を作ったときに二、三分かったことがあるのでメモ。

  • アプリのアンインストール時には使用したレジストリも削除するようにしたい。
    セットアッププロジェクトの項目を右クリックしてコンテキストメニューから表示->レジストリを選択。表示されるウィンドウでアプリケーションで使いたいレジストリのキー(ファイルシステムで言うフォルダに該当するもの。)を作成する。その項目のプロパティでDeleteAtUninstallをTrueに設定する。
    この設定をした場合は同時にAlwaysCreateもTrueに設定したほうがよい。理由は次項で書く。

  • なんだかよく分からないが作成したインストーラを使ってインストールすると、アプリを起動するたびにインストーラのダイアログが一瞬ちらりと現れ「インストールの準備中」みたいなメッセージが表示される。
    僕が経験した範囲では、アプリをショートカット(厳密にはアドバタイズショートカット)から起動したときに所定のレジストリキーがないとWindowsがそれを検知してインストーラを起動してしまうようだ。一応修復作業という位置づけらしい。
    所定のレジストリキーというのはインストーラを作成するセットアッププロジェクトにて作成したレジストリ項目のことである。この問題は特にインストール時に作成しない(セットアッププロジェクトでのレジストリキーのプロパティAlwaysCreateがFalseになっている)もののアンインストール時には削除する (セットアッププロジェクトでのレジストリキーのプロパティDeleteAtUninstallがFalseになっている)設定になっているとなんだか問題だと思うらしくて上のような事態になる。
    なので解決策は前項の最後に述べたようにセットアッププロジェクトでDeleteAtUninstallをTrueにした場合は一緒にAlwaysCreateもTrueにしてやることで解決する。

  • アプリのアンインストール時には記録したデータファイルも削除したい。
    セットアッププロジェクトの項目を右クリックしてコンテキストメニューから表示->ファイルシステムを選択。表示されるダイアログで記録するデータファイルと同名のファイル(空ファイルでもデータ数が0のファイルでもよい。)を作り、さらにそのプロパティでPermanentをFalse(デフォルトのまま)に設定しておけばアンインストール時に削除してくれる。

  • アプリのデータを適切な場所に保存したい。
    普通にアプリのデータを保存したいときは多分C:\Users\USER_NAME\AppData\Localに保存したくなるもんだと思っている。詳細はMicrosoftのページをググって調べてみてください。で、この前項のようなことをやる場合にはこのフォルダに空のファイルを作成しておきたいのだが次の手順で設定できる。
    1. セットアッププロジェクトの項目を右クリックしてコンテキストメニューから表示->ファイルシステムを選択。
    2. 表示されるダイアログで右クリックして「特別なフォルダの追加->カスタムフォルダ」を選択。作ったフォルダのプロパティに
      [LocalAppDataFolder]\[Manufacturer]\[ProductName]
      と書く。 LocalAppDataFolderとManufacturerあたりがミソ。
といった具合だが、とりあえずいろいろいじって発見したことのメモであり、アプリ更新時にどうなるかなど細かいテストをしたわけではないので上記をヒントに後は各自で調べて分かったことがあればコメントをいただけますと幸いです。

2012年2月10日金曜日

自作ソフトウェアの登録先

自分で開発したソフトウェアをどこに登録するとお客さんに使ってもらえるのか調べてみた。
フリーウェア、シェアウェア問わず自作プログラムを無料で登録してもらえるところとして次のサイトがある。たくさん使ってもらいたいなら全部やるといいと思う。ただしここまで書いておいて言うのもなんですが今アプリを作るのならiOSかAndroidが賢明でしょう。

  • Vector
    ライブラリ作者としてこのページから登録できる。
    シェアウェアを開発した人はシェアレジ登録とライブラリ登録をする。フリーウェアを開発した人はライブラリ登録のみをする。(なお、この説明は個人プログラマの話で法人の場合プロレジというのに登録するらしい。)
  • 窓の杜
    このページの説明にあるように担当者の方にemailで自分のソフトのことを紹介する。メールする前に先にVectorに登録完了してからのほうが何かとことがスムーズに進むように思われる。担当者の方が認めてくれると記事としてソフトのことを紹介してくれる。さらに定期的にアップデートを重ねて品質を上げていくとライブラリという厳選されたリストに登録してくれるらしい。ここまで行くとかなりの露出度が期待できる。
  • CNet
    調べた感じでは世界的にユーザーが多い、ソフトウェアダウンロードサイトがここ。このトップページの一番下にあるAdd Your Softwareというメニューをクリックするとまず自分の組織を登録した上で、自分のソフトウェアを登録することができる。ただしホームページを持っていないと組織として登録できないのでレンタルサーバーか何かで自分のソフトのホームページを作る必要がある。審査は結構普通に通ったがソフトの登録では一週間くらい待たされる。
  • PayPal
    ちょっと話題がそれるがシェアウェアで決済をしたいのなら多分PayPalが一番手軽で手数料も安い。レンタルサーバーとかを借りてPerlスクリプトなどが置ける環境があるのであればPayPalの即時支払い通知(IPN)という機能を利用して、お客さんから支払いが済んだ直後にライセンスキーなどを書いたメールを送信することもできる。その際ちゃんとテストができるSandbox(テストサイト)も用意されている。正直決済システムとしてはかなりよく作りこまれている。なお、決済サービスとしてはAmazonやGoogleのサービスも調べたのだが2012年1月現在では日本ではまだ利用することはできない。
ちなみによくあるフリーウェア紹介サイトは勝手にVectorとか窓の杜の情報をコピーしてライブラリっぽくしてアクセスを稼ぐ目的で運営されているようなので、有名どころで紹介されると勝手に別のサイトでも紹介されたりもするようです。

余談の宣伝ですが、僕の作ったWindows用ソフトウェアはこれです。一応シェアウェアですがフリーでもメインの機能は使えるので試してみて頂けたら幸いです。