2個のファイルをインストールするインストーラーの作成(Wix3) フォルダ作成

icon 項目のみ表示/展開表示の切り替え

概要

32bitのプログラムであるtest3.exeをProgram Filesフォルダー{64bit版のWindowsの場合Program Files(x86)}に更にhtmlフォルダを作成しその中にLICENSE.rtfをインストールするサンプルです。インストール先は任意に変更できます。コントロールパネルでアンインストールができます。あらかじめWix3(wix3.0)をインストールしておく必要があります。ファイル1個の場合との違いは名称以外では、<Directory Id=でhtmlフォルダの定義を行っていること、<DirectoryRef ID=及び<Componentでhtmlフォルダをコンポネント扱いとし<File IDでコピーを指定していること、<ComponentRefでインストールする対象としてhtmlを指定していることですwxsソース上の841F8AF7-7A9A-470e-8008-E2223621EAD6等については世界で任意の値でなければならないのでこのインストーラをもとに配布プログラムを作る場合はguidgen.exe等で再度任意のGUID値を得なければなりません。。

仕様

標準インストール先

C:\Program Files\test3
│  list.txt
│  test3.exe
│  
└─html
        LICENSE.rtf

ショートカット スタートメニューのテストメニュー内に作成

インストーラーのソース等のダウンロード

スクリーンショット

インストーラー






メニューの登録状況


サンプルプログラムの実行画面


コントロールパネルでの登録状況


アンインストール


インストーラーのもととなるデータフォルダの内容(ダウンロードしたファイルを解凍した場合)

LICENSE.rtf ←ライセンスの内容を表すリッチテキストファイル
test3.exe ←インストールされる実行ファイル
test3.wxs ←インストール手順等が書かれたwix用のソースファイル
test3.msi ←作成されたインストーラー このファイルのみ配布すれば良い
w.bat ← msiファイル作成用のバッチファイル

test2.wxs



<?xml version="1.0" encoding="UTF-8"?>

<!--  インストーラー (Visual C++ 2008
      インストールフォルダーの変更・ショートカットの登録・アンインストール情報の設定
-->

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
 
  <!--  UpgradeCode:アップグレー時に必要なcode(guidegen.exe等で作成)
        Version:インストールするアプリケーションのバージョン
        Language:1041   日本語
        CodePage:932    日本  
        Name:*.msiファイルの表題やコントロールパネルのアプリケーションの削除等に表示される名前
        Manufacturer:*.msiファイルの作成者に表示される名前
        EmbedCab:yseにすると*.msiファイルにインストールすべき全ファイルが結合される
                 noにすると*.msiファイルとCabinetで指定されるcabファイルが作成される
  -->
  
    <Product Id="*" UpgradeCode="FAF2DE44-80D8-48f0-847B-7FDF1EB44BA3" Version="1.0.0.0"
             Language="1041" Codepage="932 " Name="テスト3" Manufacturer="作成者">
        <Package InstallerVersion="300" Languages="1041" SummaryCodepage="932" Compressed="yes"/>
        <Media Id="1" Cabinet="myapplication.cab" EmbedCab="yes" />
        <Property Id="ALLUSERS" Value="1" />
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
<!--    Name:program filesの下のフォルダー名を指定 -->
                <Directory Id="APPLICATIONROOTDIRECTORY" Name="test3">
                  <Directory Id="html_dir" Name="html" />
                </Directory>
              </Directory>
<!--    Name:スタートメニュー プログラム下のフォルダー名を指定-->
            <Directory Id="ProgramMenuFolder">
                <Directory Id="ApplicationProgramsFolder" Name="テストメニュー"/>
            </Directory>

<!--    マージモジュール  実行に必要なランタイムファイルを指定 -->

        </Directory>

      <DirectoryRef Id="APPLICATIONROOTDIRECTORY">
<!--    Guid:アンインストール用時に使われるGUID値(guidgen.exe等で作成)  -->
          <Component Id="mysoft.exe" Guid="12784251-52F9-482c-B143-6A4CA64BF502">
<!--    Source:コピー元のファイル名 ほかに必要なファイルがあれば<File Id=  />を繰り返す  -->

            <File Id="test3.exe" Source="test3.exe" KeyPath="yes" Checksum="yes"/>

        </Component>
      </DirectoryRef>


      <DirectoryRef Id="html_dir">
        <!--    Guid:アンインストール用時に使われるGUID値(guidgen.exe等で作成)  -->
        <Component Id="html" Guid="12784251-52F9-482c-B143-6A4CA64BF503">
          <!--    Source:コピー元のファイル名 ほかに必要なファイルがあれば<File Id=  />を繰り返す  -->
 
              <File Id="LICENSE" Name="LICENSE.rtf" Source="LICENSE.rtf" Checksum="yes"/>

 
        </Component>
      </DirectoryRef>

      <DirectoryRef Id="ApplicationProgramsFolder">
<!--    Guid:アンインストール用時に使われるGUID値(guidgen.exe等で作成)  -->
<!--    Name:ショートカット名  Description:ショートカットのコメント -->
          <!--    Target:ショートカットにする元のファイル名 -->
          <Component Id="ApplicationShortcut" Guid="2C621873-FEDC-4e56-91C1-7D5C6A1365AC">
                <Shortcut Id="ApplicationStartMenuShortcut"
                Name="テスト3"
                Description="テスト"
                Target="[APPLICATIONROOTDIRECTORY]test3.exe"
                WorkingDirectory="APPLICATIONROOTDIRECTORY"/>
                <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
<!--    アンインストールに必要なレジストリ登録 makerに作者名 softnameにソフト名 -->
                 <RegistryValue Root="HKCU" Key="Software\maker\softname" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
           </Component>
        </DirectoryRef>

        <Feature Id="MainApplication" Title="Main Application" Level="1">
          <ComponentRef Id="mysoft.exe" />
          <ComponentRef Id="html" />

          <ComponentRef Id="ApplicationShortcut" />

        </Feature>
      <!-- 変更:InstallDir UI-->
<!--   インストールフォルダーを変更できるようにする 上記のDirectory IdとValueと同じ名前でなければならない-->
      <UIRef Id="WixUI_InstallDir" />
      <Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONROOTDIRECTORY" />
<!--    ライセンス条項の内容を定義  -->
      <WixVariable Id="WixUILicenseRtf" Value="LICENSE.rtf"/>
      <!-- 変更:InstallDir UI-->
    </Product>
</Wix>

w.bat

w.batを実行するとmsiファイルが作成される。


echo 32bit版
pause
set src=test3

if defined ProgramFiles(x86) goto WOW64
set pro=%ProgramFiles%
echo Windowsは32bit版です
goto end_path
:WOW64
set pro=%ProgramFiles(x86)%
echo Windowsは64bit版です
:end_path
"%pro%\Windows Installer XML v3\bin\candle" %src%.wxs
if errorlevel 1 goto end
"%pro%\Windows Installer XML v3\bin\light" -ext WixUIExtension -loc "%pro%\Windows Installer XML v3\bin\WixUI_ja-jp.wxl" %src%.wixobj
:end
set pro=
set src=
pause

前のページに戻る