>

2012年12月15日土曜日

VMWare Fusion5の「PCから移行」でエラーが出る件

初めてMacを買ってみた。VMWare FusionでWindows環境を同時実行させると便利みたいなので早速やってみた。

MacでFusion5を起動し、「PCから移行」を選択してパスコードとかログイン情報を入力していざ移行が始まるところで残り時間を計算中と表示された直後に次のようなエラーが出た。

A file I/O error occurred while accessing "\\192.168.0.2\vmwareMigration145\windows 7 x64\windows 7 x64.vmdk".

次の対応で回避できる事が分かった。

  • windows側で実行していたウィルスバスターを終了(画面右下のタスクトレイ内にあるウィするバスターアイコンを右クリックして終了を押す。)
  • windows側で実行していたwindowsファイアウォールを無効にする。コントロールパネルから検索で"ファイアウォール"とすると出てくるwindows ファイアウォールの設定で無効を選択する
  • Mac側のシステム環境設定->共有でファイル共有をオフ
どれが実際に効いてうまくいくようになったのかは不明。最後の項目であるMacの設定はMigration Agentで移行を開始すると自動的に共有はオンになるので実行前はオフにしておいた。なぜなら上記のエラーが出る前に別のエラーが出た事があってその時のエラーメッセージでオフにしてから実行するようにという指示があったので。

余談だが、上記の対応でエラーは解消されて移行プロセスは動く様になったが結局最後に失敗した。理由は移行元のWindowsがDellのPCにプリインストールされていたOEM版だからということらしい。結局新規インストールをする羽目になった。

2012年7月14日土曜日

SoftBank HTC Desire X06HTのROM焼きで困っていた件

ソフトバンク HTC Desire X06HT でroot化してアプリをいろいろSDカードに移して悦に入っていたらそのうち、日本語入力ができなくなって、デフォルトインストールドライブをPhoneに戻したりしてもどうにもならなくなってしまい最終的にはsoftbankロゴでフリーズして起動できなくなったのでソフトバンク純正のromに焼きなおすことにした。


でもいろいろトラぶったのでメモ。


基本的な手順は
http://www37.atwiki.jp/x06ht/pages/39.html
を参考にした。
でもE: can't open update.zip (bad)とかno image or wrong imageやらいろいろと出てうまく行かない。
結局のところSDカードのフォーマットが電話を買ったときについてきたSDカードのデフォルトや電話で初期化したりした場合、さらにはClockworkModでフォーマットしたときもFAT16で初期化される。
しかし、HBOOTでROM焼きするにはSDカードはFAT32でフォーマットされてなければならずこれが原因であった。


FAT32への初期化方法だが
http://www.taosoftware.co.jp/blog/2009/05/android_sdcard_fat32.html
によると電話に入っている/system/binにあるプログラムmkdosfsでできることもあるみたいだけど、desireにはこのプログラムは見当たらなかったので普通にmicroSDをアダプタに挿してwindows 7のノートPCに入れ、Windows7でFAT32に初期化して、そのSDカードにPB99IMG.zipを保存してHBOOTを起動したら無事ROM焼きに成功した。

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用ソフトウェアはこれです。一応シェアウェアですがフリーでもメインの機能は使えるので試してみて頂けたら幸いです。