WIX


Windows Installer

Preparation

Env設定

1ststep


Tools

 


Ocra



Windows Installer XML(WiX) toolset

 


Reference


makefile



TARGET=readme_txt
RESOURCE_DIR=resource
TARGET_DIR=/cygdrive/c/Program\ Files/smnb

.PHONY: all test mmm clean uninstall install
.SUFFIXES: .msi .wixobj .wxs

all:$(TARGET).msi

$(TARGET).msi: $(TARGET).wixobj $(RESOURCE_DIR)/*
$(TARGET).wixobj: $(TARGET).wxs 

.wixobj.msi:
	light $<

.wxs.wixobj:
	candle $<
	@echo 
	
test:
	cygstart ./$(TARGET).msi
	ls -al $(TARGET_DIR)/ReadMe

install: test

uninstall:
	control appwiz.cpl

clean:
	@-rm $(TARGET).msi 1>/dev/null 2>&1
	@-rm $(TARGET).wixobj 1>/dev/null 2>&1
	@-rm *~ 1>/dev/null 2>&1

mmm:
	cat makefile
	cat $(TARGET).wxs
	pwd
	make clean
	ls -al resource


ProductCode Property

GUIDを生成するツールとして、Microsoft Windows SDKに付属するGuidGenなどがある。

Microsoft,GuidGenのダウンロードサイト

 


cat makefile
.PHONY: test clean mmm
TARGET=guid_gen 
test:
	cscript $(TARGET).js

clean:
	-rm*~ 1>/dev/null 2>&1

mmm:
	cat makefile
	cat $(TARGET).js

	
cat guid_gen.js
// Generate GUID
//var TypeLib = CreateObject("Scriptlet.TypeLib");
var TypeLib = new ActiveXObject("Scriptlet.Typelib");
WScript.Echo(TypeLib.Guid);


{B693E257-C4FB-4FED-831C-85A2E1473642}

readme.txt sample


<?xml version="1.0" encoding="UTF-8"?>
<!-- readme_txt.wxs -->
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
  <Product 
        Id="12345678-1234-1234-1234-123456789012" Name="ReadMe_txt"
           Version="1.00.0000" Manufacturer="smnb"
           Language="1041" Codepage="932">
  <Package Id="????????-????-????-????-????????????"
           Description="SampleReadMe_txt"
           Comments="Database for ReadMe_txt" InstallerVersion="200"
           Platforms="Intel" Manufacturer="smnb"
           Keywords="Installer,MSI,Database" Languages="1041"
           SummaryCodepage="932"/>
		<Media Id="1" Cabinet="Product.cab" EmbedCab="yes" />

		<Directory Id="TARGETDIR" Name="SourceDir">
		  <Directory Id="ProgramFilesFolder">
			<Directory Id="smnb" Name="smnb">
			  <Directory Id="INSTALLLOCATION" Name="ReadMe">
				<Component Id="Component1"
						   Guid="960E5941-FE2A-4384-A96F-8AED231DB301">
				  <File Id="File1" Name="Readme.txt" KeyPath="yes"
					Compressed="yes" DiskId="1" Source="resource\Readme.txt"/>
				</Component>
			  </Directory>
			</Directory>
		  </Directory>
		</Directory>

		<Feature Id="Feature1" Level="1">
		  <ComponentRef Id="Component1" />
		</Feature>
  </Product>
</Wix>


Wix Schema

 

Product Attributes

AttributesMeaning Mandatory Property Memo
Id ProductCode   GUID Yes ProductCode B693E257-C4FB-4FED-831C-85A2E1473642
Codepage インストーラ内部データのコードページ 日本語:932
Language インストーラ対応言語 Yes ProductLanguage 日本語:1041
Manufacturer 開発元 Yes Manufacturer
Name 製品表示名 Yes ProductName 63 characters in length
UpgradeCode 製品群識別GUID Recommended UpgradeCode
Version 製品バージョン Yes ProductVersion major.minor.build (255.255.65535)

Package attributes

AttributesMeaning Mandatory Property Memo
Id ファイルの識別子となるGUIDを指定 Yes PackageCode 自動生成???
Comments コメント Recommended
Compressed デフォルトで圧縮を指定 ファイル単位優先 省略した場合はno
Description ファイルの説明
InstallerVersion インストーラの実行に必要となるランタイムバージョンを指定 200 で 9x系以降
InstallPrivileges UAC設定 省略は、elevated
Keywords 検索キーワード Installer,MSI,Database
Languages サマリーの言語を指定 1041
Manufacturer 開発元
Platforms 対象のプラットフォーム 32bitアプリケーションの場合は、Intelを指定
ShortNames ファイルのパスをショートパスで扱う 通常省略 use long name
SummaryCodepage コードページ 932

Platforms

CPU 32/64Value
x86 32 Intel
Alpha 32 Alpha
AMD64/EM64T 64 x64
IA-64 64 Intel64
        

Media Element

AttributesMeaning Mandatory Property Memo
Id メディアテーブルのDiskIdに相当するプライマリフィールド Yes 値は1以上の数値
Cabinet 圧縮ファイル名 圧縮する場合 Cabinet形式
CompressionLevel 圧縮レベル 圧縮する場合 省略は、デフォルト設定の"mszip"
EmbedCab 圧縮ファイルをmsiに埋め込む
DiskPrompt CD/DVDで配布を行なう場合の、ディスクメディアの表示名 DiskPrompt "[1]"を指定した場合、この内容をそのまま
VolumeLabel CD/DVDで配布を行なう場合の、ディスクメディアのボリュームラベル Windows Installer自身が参照

Directory attributes

AttributesMeaning Mandatory Property Memo
Id ディレクトリエントリーの識別子 Yes
Name インストール先のフォルダ名 Yes ショートネームで収まらない場合は、この値がショートネーム名となります。
LongName インストール先フォルダの長い名前 Package要素のShortNamesがyesの場合利用されない。
SourceName ソースメディア上のフォルダ名(圧縮しない場合) ショートネームで収まらない場合は、この値がショートネーム名となります。
LongSource ソースメディア上の長い名前 Package要素のShortNamesがyesの場合利用されません。

Component Element

AttributesMeaning Mandatory Property Memo
Id コンポーネントの識別子 Yes プライマリキー/内部識別子
Guid コンポーネントの外部識別子 Yes コンポーネントごとにユニークな値設定。自動生成不可。
KeyPath コンポーネントのキーパス 通常は省略 コンポーネントのキーパスをインストール先フォルダにする場合に指定
SharedDllRefCount 共有ファイルとしてインストール

File Element

AttributesMeaning Mandatory Property Memo
Id ファイルの内部識別子 Yes
Name ファイル名 Yes
LongName 長いファイル名
DiskId Mediaのディスク番号
KeyPath コンポーネントのキーパス コンポーネント内で一つだけyesとすることができる。省略はnoと同じ
Compressed 圧縮指定 省略で、Package要素の指定に準ずる
Source インストール対象ファイルのパスを指定 ビルド時に参照する

Feature Element

AttributesMeaning Mandatory Property Memo
Id Featureの内部識別子 Yes
Level デフォルトのインストールレベル Yes 必ずインストールする場合は1を指定。0を指定するとインストール対象から除外
Display Featureの表示方法指定 collapse(展開せずに表示)/expand(展開して表示)/hidden(非表示)
Title カスタムインストールのツリーで表示する名称 非表示またはカスタムインストールを行なわない場合は省略
Description 詳細説明文 非表示またはカスタムインストールを行なわない場合は省略
ConfigurableDirectory インストール先のカスタマイズを行なう際のターゲットとなるインストール先のディレクトリエントリを指定
AllowAdvertize アドバタイズインストールを行なえるかを指定
InstallDefault デフォルトのインストール条件を指定

ComponentRef Element

AttributesMeaning Mandatory Property Memo
Id ComponentIdを指定 Yes
Primary 複数のFeatureに所属する場合のプライマリかどうかを指定。 所属が一つの場合は、所属するFeatuereがプライマリになるため省略可能