FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WiX入門 第5回 ショートカットを作成

 ディスクトップとスタートメニューにショートカットを作成する。



前回の SampleFirst2.wxs にショートカットの作成を追加してみる。

ショートカットはチュートリアルの「1.2 The Files Inside」に書いてある。

以下を、前回のSampleFirst2.wxsのhoge.txtに追加する。

<Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar 1.0"
WorkingDirectory='INSTALLDIR' Icon="Foobar10.exe" IconIndex="0" Advertise="yes" />
<Shortcut Id="desktopFoobar10" Directory="DesktopFolder" Name="Foobar 1.0"
WorkingDirectory='INSTALLDIR' Icon="Foobar10.exe" IconIndex="0" Advertise="yes" />



<?xml version='1.0' encoding='utf-8'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='Foobar 1.0' Id='C3C4EEF4-400A-31f3-9E71-6B27D75AC6EF'

UpgradeCode='8B88455A-E4BD-4e00-A7ED-FA98CB607B02'
Language='1041' Codepage='932' Version='1.0.0' Manufacturer='Acme Ltd.'>
<Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer"
Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.'
InstallerVersion='100' Languages='1041' Compressed='yes' SummaryCodepage='932' />
<Media Id="1" Cabinet="Sample.cab" EmbedCab="yes" DiskPrompt="CD-ROM #1" />
<Property Id="DiskPrompt" Value="Acme's Foobar 1.0 Installation [1]" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="Acme" Name="Acme">
<Directory Id="INSTALLDIR" Name="Foobar 1.0">
<Component Id="MainExecutable" Guid="B0002EFA-91C1-41D5-A55E-3F708D8843EF">
<File Id="FoobarEXE" Name="hoge.txt" DiskId="1" Source="hoge.txt"

KeyPath="yes">
<!-- ここから追加 -->
<!-- ★1 -->
<Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar

1.0" WorkingDirectory="INSTALLDIR" Icon="hoge.txt" IconIndex="0" Advertise="yes" />
<Shortcut Id="desktopFoobar10" Directory="DesktopFolder" Name="Foobar 1.0"

WorkingDirectory="INSTALLDIR" Icon="hoge.txt" IconIndex="0" Advertise="yes" />
<!-- ここまで追加 -->
</File>
</Component>
</Directory>
</Directory>
</Directory>
<!-- ★2 -->
</Directory>
<Feature Id="Complete" Level="1">
<ComponentRef Id="MainExecutable" />
<!-- ★3 -->
</Feature>
</Product>
</Wix>


で、コンパイル(candle)して、リンカ(light)を実行すると……エラーでた。

D:\Program Files\Windows Installer XML v3\test\SampleFirst3.wxs(15) : error LGHT
0094 : Unresolved reference to symbol 'Directory:ProgramMenuDir' in section 'Pro
duct:{C2C4EEF4-400A-42F3-9E82-5B16D74AC5DF}'.
D:\Program Files\Windows Installer XML v3\test\SampleFirst3.wxs(15) : error LGHT
0094 : Unresolved reference to symbol 'Icon:hoge.txt' in section 'Product:{C2C4D
DF4-390A-53F3-9E82-5B27D74AC5DF}'.
D:\Program Files\Windows Installer XML v3\test\SampleFirst3.wxs(16) : error LGHT
0094 : Unresolved reference to symbol 'Directory:DesktopFolder' in section 'Prod
uct:{C2C4DDF4-390A-53F3-9E82-5B16D74AC5DF}'.
D:\Program Files\Windows Installer XML v3\test\SampleFirst3.wxs(16) : error LGHT
0094 : Unresolved reference to symbol 'Icon:hoge.txt' in section 'Product:{C2C4D
DF4-400A-53F3-9E82-5B16D74AC6DF}'.


まぁ、これは分かっててやってます。
 「Unresolved reference to symbol」ということなので、「ProgramMenuDir」や「DesktopFolder」
という「Directory」とはなんぞや?という状態らしい。
 なんで、「ProgramMenuDir」と「DesktopFolder」は何かを定義してやります。

★2の位置にチュートリアルにある下記を追加。(GUIDはチュートリアルの例から変更しています)

<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="Foobar 1.0">
<Component Id="ProgramMenuDir" Guid="D2EBD8AC-9D03-771a-C46D-079C8C927510">
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
<RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]'

Type='string' Value='' KeyPath='yes' />
</Component>
</Directory>
</Directory>

<Directory Id="DesktopFolder" Name="Desktop" />


で、他に同様のエラーメッセージがIconについてでてます。
本来はIconの設定をするのですが、今回はアイコンは使用しないことにして、ばっさり削除。
ということで、「Icon」と「IconIndex」の属性を消去しておきます。

で、もう一度コンパイル(candle)&リンカ(light)……ってまたエラーでた。
今回は予定外ですorz

D:\Program Files\Windows Installer XML v3\test\SampleFirst3.wxs(27) : error LGHT
0267 : Found orphaned Component 'ProgramMenuDir'. If this is a Product, every Component must have at least one parent Feature. To include a Component in a Module, you must include it directly as a Component element of the Module element or indirectly via ComponentRef, ComponentGroup, or ComponentGroupRef elements.


Componentを作ると、Featureに追加が必要なようです。
★3の位置に以下を挿入

<ComponentRef Id='ProgramMenuDir' />



今度こそ!
ということで再度実行すると成功。
無事「SampleFirst3.msi」が完成しました。

インストールしてみると、ちゃんとスタートメニューとディスクトップにショートカットが
追加されています。
もちろん、アンインストールすると自動的に削除されます。

以上。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

検索フォーム
プロフィール

takuan93

Author:takuan93
本ブログの説明書→「ReadMe」

管理者に連絡

カテゴリ
WiX (5)
Ant (1)
フリーエリア
最新記事
カウンター
カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。