メモ

作業メモです。

WiXでのドライバインストーラーの作り方

WiXはXMLからWindows Installer(MSI)パッケージを作成するためのオープンソースソフトウェアで、リリース元はMicrosoftです。
最近ではWiXでインストーラーを作っているソフトウェアもちらほら見るようになりましたね。

インストーラーの作り方はWiX チュートリアルを見ればだいたいわかります。
そのWiXでデバイスのドライバをインストールするパッケージの作り方をメモしておきます。

まず、WiXをインストールしたディレクトリの中の「difxapp_[x86|x64|ia64].wixlib」と「WixDifxAppExtension.dll」が必要です。
wixlibの方はターゲットのアーキテクチャに合わせてください。
上の2つのファイルをVisual Studioでは参照設定に追加し、CUIで使う場合はLight.exeで適切にリンクします。

そしてドライバーファイル(inf)が含まれているコンポーネントの子要素としてを追加します。

基本的にはこれだけでドライバをインストールしてくれます。
指定できる要素はDriver Element (Difxapp Extension)を見てください。

これで簡単にドライバインストーラーが作れます。

Bing DynamicとCCleaner

Windows7限定の話ですが、壁紙を自動更新してくれるテーマである「Bing Dynamic」を使用してCCleanerを動作させると不具合が生じます。その解決策のメモです。

ソース元:Bing Dynamic vs. CCleaner – Piriform Community Forums

要は「C:\Users\[your username]\AppData\Local\Microsoft\Windows\Temporary Internet Files\Enclosure\{8EEA3A94-C94E-4379-9B54-FA51A0C655BC}\*.jpg」をCCleanerの除外対象にすればいいというわけです。
オプション->除外リスト->追加で適当なディレクトリを追加して、右クリック->手動編集で上の文字列を打ち込むのが簡単かと思います。もちろん[your username]は変更してください。

Bing Dynamicを再インストールしたいときはIEのお気に入りから「http://themeserver.microsoft.com/default.aspx?p=Bing&c=Desktop&m=en-US」を削除してからやってみてください。

Dell Inspiron Mini 9 or 12 Ubuntu版で役にたちそうなこと

知人が Ubuntu モデルの Dell Inspiron Mini 12 を買って、ちょっと使わせてもらったときに気づいたことをメモ。

動画の音が出ない

参考:デジタルギア-奮戦記: Ubuntu音声問題の発生

「/etc/modprobe.d/alsa-base」の「options snd-usb-caiaq index=-2」の下に「options snd-hda-intel model=dell」を追加。

無線LANが認識されなくなった

参考:[ubuntu] Broadcom Corporation BCM4312 802.11b/g funny problem – Ubuntu Forums

echo wl | sudo tee -a /etc/modules

無線LANに接続するとフリーズ(5/5 追加)

参考:Ubuntu日本語フォーラム / 無線LANフリーズします

無線LANの共有キーが長すぎるとドライバのバグでシステムがフリーズしてしまう。キーを短くするとOK。

その他

Inspiron Mini は光学ドライブがないのでOS再インストール時に外付け光学ドライブを持ってないと厄介なわけだが、実はOS再インストール用のDVDのなかにUSBメモリ用のイメージも入っている。
DVDルートにある「belmont-ym-stable-install-usb-20081121-0.img」がそれ。
これを使えばUSBメモリで再インストールできる。

FirefoxでJavaがフリーズする問題の解消法

実は Firefox3 にアップグレードしてから Java が含まれているページを開くと、フリーズしたりタブが閉じられなくなったりといった問題が起きていたんですが、FirefoxがJAVA実行できない – 覚え書きに解決法がありました。

about:config を開いてplugin.scan.SunJRE という名前で文字列形の設定を作り、値を 1.3 にします。後は再起動。

コメント欄を見ると結構同じような問題に出くわしている人多いのかも。

WordPress.orgへプラグインの公開の仕方

自分用もあって忘れないために WordPress.org へプラグインの公開の仕方をメモ。プラグインの作り方ではなく公開の仕方限定。

必要な知識

  • PHP – WordPress 自体が PHP なのでこれは必須
  • WordPress – WordPress のプラグインを書くためには WordPress の内部構造などを知っていないと難しい
  • Subversion – WordPress.org は各種プラグインを SVN で管理している

プラグイン作った。次は?

  1. WordPress.org のアカウントを持っていなければ取得
  2. WordPress › Requests にて、プラグインの名前と説明と任意でプラグインのアドレスを書いてリクエスト送信
  3. リクエストが承認されると Subversion のアドレスが送られてくるので、そのリポジトリにプラグインをインポート
  4. 適切な readme.txt を作り、プラグインの本体ファイルに適切なコメントをつける(後述)
  5. リリースバーションごとに readme.txt などを編集し、SVN のタグ付けをする(後述)
  6. WordPress.org が15分毎に巡回してくれて、正しくコメントが付けられていればプラグインディレクトリーに掲載される

readme.txt とコメントとは?

WordPress.org はプラグインの更新のチェックに trunk/readme.txt と本体ファイルのコメントを使用する。
readme.txt は書式が決まっていて、readme.txt の例を参照。WordPress/BBPress Plugin readme.txt Validator を使用すればバリデートできる。
本体ファイルのコメントは、PHPファイルの先頭に次のようなコメントを書く。

/*
Plugin Name: Example Plugin
Plugin URI: http://example.com/foo
Description: This plugin is an example.
Version: 1.0
Author: Bar
Author URI: http://example.com
*/

他のプラグインを参考にすれば大体OK。

プラグインをリリースしたい

プラグインのリリースは SVN のタグ付けを使う。
readme.txt と 本体ファイルのコメントのそれぞれ Stable tag と Version の項目をリリースするバージョンにあわせる。
必要なファイルを編集したら SVN でタグ付け。タグ名は数字とピリオドのみを使ったほうが良いと公式のドキュメントには書いてある(1.2.3はOK、ver1.2RC1などはNG← 実際は可能)。
あとは巡回で更新が認識されればプラグインディレクトリーに載る。

参考になるドキュメント

trac-post-commit-hookをDreamHostで使う

SVNのログでチケットの操作ができるとっても便利なtrac-post-commit-hookですが、DreamHostで使うには難がありました。
最大の難点は post-commit が dhapacheというユーザーで実行されるということで、これが数々の問題を引き起こします。
色々と実験して解決策を見つけたのでポストします。
なお、解決策は SQLite を使っている場合と MySQL を使っている場合で異なります。

SQLite と MySQL の共通 post-commit

コミット後にスクリプトを実行するため、/home/***/svn/projectid/hooks に post-commit という名前のファイルを作成します。
このファイルがコミット後に実行されるわけですが、dhapache によって実行されるため環境変数の再設定が必要になります。
それなので、.bash_profile などから必要な変数をコピーします。
そして、trac のソースの contrib ディレクトリから trac-post-commit-hook を post-commit と同じディレクトリにコピーします。
さらにsvn_commit_jp.mdから svnlog2utf8 を取得してパスの通るところに置いて実行権を与えます。

post-commitの例(パスなどは適宜変えてください):

#!/bin/sh

HOME=‘/home/***’
export PYTHONPATH="$HOME/local/lib/python: $HOME/local/lib/python/site-packages"
export LD_LIBRARY_PATH="$HOME/local/lib"
export PYTHON_EGG_CACHE="$HOME/tmp"
export PATH="$HOME/local/bin:$PATH"

REPOS="$1"
REV="$2"

LOG=`svnlook log -r $REV $REPOS | svnlog2utf8`
AUTHOR=`svnlook author -r $REV $REPOS | svnlog2utf8`
TRAC_ENV="$HOME/trac_sites/projectid/"
TRAC_URL="http://trac.example.com/projectid/"

python $REPOS/hooks/trac-post-commit-hook \
  -p "$TRAC_ENV"  \
  -r "$REV"       \
  -u "$AUTHOR"    \
  -m "$LOG"       \
  -s "$TRAC_URL"

SQLiteの場合

SQLiteの場合は dhapache が trac のディレクトリの /db/trac.db(デフォルト) へアクセスする権限を持っていないため、エラーになります。
この場合は trac.db に「chmod o+rw」するしか方法がないと思います。書き込み権限を与えるのはやだなと思うときはMySQLの移行も考えてください(MySQLへのパスワードも dhapache が読み取れる必要があるので同じっていえば同じですが)。

MySQLの場合

MySQLの場合は、上で設定した「PYTHON_EGG_CACHE」の値が dhapache が書き込みできるディレクトリを指定していて、trac.ini を読み込めればOKです。

SQLite から MySQLへの移行

SQLite から MySQLへの移行は SqliteToPgScript を使うと便利です。
SqliteToPgScript でMySQLインポートしたら、trac.ini の database の指定を「mysql://user:password@host/database」のようにすればOKです。

ffdshowでデインターレース

普段動画の再生にはffdshow+MediaPlayerClassicを利用しているのですが、新しいPCでDVDを見たらインターレースかかりまくりで酷かったのでデインターレースしようと思ったのですが、予想外に苦戦したのでメモしておきます。

まずはビデオデコーダーの設定画面を出します。そしてCodecsのmpeg2の項目のコーデックをlibmpeg2へ変更。追記:下のDVD decodingにチェックを入れないとDVDを処理してくれないみたいです。

そしてDeinterlacingの設定画面に移動してDeinterlacingにチェックを入れます。ここで手こずったのですが、Methodを「ffmpeg deinterlacer」にしておきます。コレにしたらうまくいきました。ffdshow option window

前のPCじゃ特別いじってないのにデインターレースされていたのは何でだろう?

1 / 212
Go to Top