インストーラを作る前に とっちゃん(高萩 俊行) Microsoft MVP Developer Tools – Visual C++ 2005/10~ http://blogs.wankuma.com/tocchann/ わんくま同盟 東京勉強会 #68 アジェンダ • インストーラ開発における指針や注意点 • MISAOがインストーラに与える特徴 • 午後のお知らせ わんくま同盟 東京勉強会 #68 インストーラ開発における 指針や注意点 わんくま同盟 東京勉強会 #68 指針と注意点 • インストーラとは? – アプリを起動できるようにするツールの総称 – 不要になったら簡単に削除できる手段を提供 – 容易な手段で更新できる手段を提供 わんくま同盟 東京勉強会 #68 指針や注意点 • Per Users か Per Machine か – 兼用インストーラにはしない • Vista までと Win7 以降の両対応ができない • 出来るかどうかとやるかどうかは別 – 製品の特長、用途、対象ユーザー層 • 一意に確定させる • 明確にする • アップデータの提供形態 – .msp によるパッチ提供を行うか わんくま同盟 東京勉強会 #68 指針や注意点 • インストーラ利用者の想定 – 誰がインストールするか? – 製品利用者と一致するか? • 利用環境の想定 – 会社のマシンか? – 自宅のマシンか? – 個人所有か? – 共用利用か? わんくま同盟 東京勉強会 #68 指針と注意点 • バージョン管理は厳密に行う – ファイルバージョン管理に規約を設ける • dllとexe のそれぞれに明確な規約を設ける • 開発環境外に公開する時点でバージョンは固定 – そこからの変更は次バージョンを原則とする – アセンブリバージョンとは分けて管理 • AssemblyVersion – .NET アプリの厳密名用ローカルルール • AssemblyFileVersion – ファイルの新旧確認に使う基本情報 – 管理情報で最も厳格に扱われる わんくま同盟 東京勉強会 #68 指針や注意点 • 32bit と 64bit(アプリ) – IA64対応の有無 • 対応することは少ないがないとは言えない – .exe は Any CPU にしない – .dll は可能な限り Any CPU にする • COM サーバーの場合は、Any CPU にしない – COM(DLL)を参照するかを確認する • 使う場合は、Any CPU にしない わんくま同盟 東京勉強会 #68 指針と注意点 • AnyCPU な .exe で問題がない場合 – インストーラは 32bit モードで作成 – インストールチェックする場合はAPIを利用 – レジストリを参照しない • HKLM\SOFTWARE\Wow6432Node わんくま同盟 東京勉強会 #68 指針と注意点 • 32bit と 64bit(インストーラ) – パッケージ形式の確定 • 32/64 統合パッケージ • 32/64 専用パッケージ – 統合パッケージ • 環境を見て適切なコンポーネントを導入 – VersionNT64 プロパティなどで確認 – 専用パッケージ • 環境ごとにそれぞれ別のものとして用意 – .msi の定義情報はすべて32bit基準 • 64bitは専用の情報を参照 わんくま同盟 東京勉強会 #68 指針と注意点 • UNICODE文字 – WiXのExtensionはUNICODE 非対応 – Windows Installer 自身は対応 – Product@Codepage • OS的に UNICODE Ready – Package@SummaryCodepage • OS的に ANSI Only – .msi ファイルフォーマットの仕様 わんくま同盟 東京勉強会 #68 指針と注意点 • SystemFolder, WindowsFolder にインス トールしない – MS製モジュール以外はインストールしない – FontsFolder を除く • 常に Isolated Install を検討 – すべてのモジュールをローカルインストール • COM も Isolated Install モードを検討 • 関連付けなどのシステム設定は除く わんくま同盟 東京勉強会 #68 指針と注意点 • Feature(機能) – 論理的集合としてのグルーピングの仕組み • 階層はそのまま機能(Function)の細分化 • 依存性がある場合はサブ機能 • 依存性がない場合は同列機能 – カスタムインストールの単位 – Featureの増減はProductCodeを変更 • .msp での提供はできない わんくま同盟 東京勉強会 #68 指針と注意点 • Component(コンポーネント) – コンポーネントのルールに従う • 同一パスは同一コンポーネント – ComponentId を一致させる – 製品間でも一致させる • ComponentIdが違う場合はKeyPathを変える • 同一コンポーネントはバージョン互換にする – CompnentId が同じ複数の製品の場合 » 同じ情報を保持する(増減がない) » MSI 4.5 の共有コンポーネントは利用しない • ショートカットごとにコンポーネントは1つ – 同名ショートカットで複数存在させない わんくま同盟 東京勉強会 #68 指針と注意点 • Componentのベストプラクティス – 実行可能ファイル(exe/dll)は1つだけ – キーパスを必ず設定 • 原則としてバージョンを持つファイルを対象 – ヘルプファイルも単一コンポーネント • インデックスファイルは同じコンポーネント – レジストリだけの場合は検討しなおす • キーパスはキー名および値名を固定させる わんくま同盟 東京勉強会 #68 指針と注意点 • Component のベストプラクティス – CommonFilesFolder • 共有ファイルとする • システムグローバルに登録するCOM • App Paths を使えるNativeモジュール – システムフォルダ • 共有ファイルとする • 永続とはしない(ICE違反だがやらないこと) わんくま同盟 東京勉強会 #68 指針と注意点 • 極力自前コードを実行しない – 自己登録は事前抽出 • 可変情報はプロパティを使う – 標準の仕組み以外のみ • シリアル番号チェック • 特殊なアプリ呼び出し – 作成ツールの拡張機能を積極利用 • WiXExtension – IIS/SQL Server/VSなどなど • ISにも同様の機能がある わんくま同盟 東京勉強会 #68 指針と注意点 • WiX の2パスコンパイルを積極利用 – 場合分けをうまく活用する – .wixproj をカスタマイズする • 条件ビルドやブートストラッパー対応など – 製品固有情報、共有可能情報の分離 • Component ごとに1ファイルくらいの気持ち • Feature は製品固有 わんくま同盟 東京勉強会 #68 指針と注意点 • プレースフォルダの積極利用 – Component 情報から固有値を除外 • <Directory Id="TARGETDIR"> <Directory Id="ProgramFilesFolder" Source="Programs"> <Directory Id=“App" Name=“App"> <Directory Id="INSTALLFOLDER"/> </Directory> </Directory> </Directory> • とすることで、製品固有値を消す わんくま同盟 東京勉強会 #68 指針と注意点 • WiXのソースはDLしておく – Extensionを利用する場合はほぼ必須 • カスタマイズ • 参考資料 – Src\ext フォルダは必ず展開しておく わんくま同盟 東京勉強会 #68 MISAOがインストーラに 与える特徴 わんくま同盟 東京勉強会 #68 インストーラに与える特徴 • Addin 機構を使った拡張機能 – カスタムインストール – アドインインストーラ • 設定ファイルをEXEと同じ場所に書く – フォルダごとコピーで複数設定を用意可能 – Per Users インストーラしか作れない • VB10(.NET 4)で作成 – Client Profile では動かない(Twitter) • Windows 7 のみ対応 わんくま同盟 東京勉強会 #68 午後のおしらせ わんくま同盟 東京勉強会 #68 午後のお知らせ • • • • MISAO 以外のインストーラ作成もあり 自分で作ることを重視 差分利用可能な作り方 変更に対する柔軟性を維持した作り方 わんくま同盟 東京勉強会 #68
© Copyright 2024 ExpyDoc