山本ワールド
Windowsプログラミング
アルゴリズム Vitual C++ 2008/2013によるWin32/Win64 APIレベルのプログラム 基礎 Vitual C++ 2008/2013によるAPIレベルのプログラム(32/64bit) Wix3でインストーラーを作る Visual C++ 2008 Standard Editonによるフォームアプリケーションのプログラム(32/64bit) Vitual C++ 2008 Standard EditonによるAPIレベルのプログラム(32/64bit) Windows 7対応 Visual C++ 2008 ExpressによるAPIレベルのプログラム Visual C++ 2005 ExpressによるAPIレベルのプログラム Visual C++ Versiosn 5 BORLAND C++ Windowsプログラム全般 Excel VBA その他1個のファイルをインストールするインストーラーの作成(Wix3)
概要
32bitのプログラムであるtest1.exeをProgram Filesフォルダー{64bit版のWindowsの場合Program Files(x86)}にインストールするサンプルです。インストール先は任意に変更できます。コントロールパネルでアンインストールができます。あらかじめWix3(wix3.0)をインストールしておく必要があります。wxsソース上の841F8AF7-7A9A-470e-8008-E2223621EAD6等については世界で任意の値でなければならないのでこのインストーラをもとに配布プログラムを作る場合はguidgen.exe等で再度任意のGUID値を得なければなりません。
仕様
標準インストール先
 
          ショートカット スタートメニューのテストメニュー内に作成
インストーラーのソース等のダウンロード
スクリーンショット
インストーラー





メニューの登録状況

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

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

アンインストール

インストーラーのもととなるデータフォルダの内容(ダウンロードしたファイルを解凍した場合)
LICENSE.rtf ←ライセンスの内容を表すリッチテキストファイル
          test1.exe ←インストールされる実行ファイル
          test1.wxs ←インストール手順等が書かれたwix用のソースファイル
          test1.msi ←作成されたインストーラー このファイルのみ配布すれば良い
          w.bat ← msiファイル作成用のバッチファイル
test1.wxs
<?xml version="1.0" encoding="UTF-8"?>
<!--  インストーラー (test1.exeをインストールする)
      インストールフォルダーの変更・ショートカットの登録・アンインストール情報の設定
-->
<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="841F8AF7-7A9A-470e-8008-E2223621EAD6" Version="1.0.0.0"
             Language="1041" Codepage="932 " Name="テスト1" 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="test1">
                </Directory>
              </Directory>
<!--    Name:スタートメニュー プログラム下のフォルダー名を指定-->
            <Directory Id="ProgramMenuFolder">
                <Directory Id="ApplicationProgramsFolder" Name="テストメニュー"/>
            </Directory>
<!--    マージモジュール  実行に必要なランタイムファイルを指定 -->
        </Directory>
      <DirectoryRef Id="APPLICATIONROOTDIRECTORY">
<!--    Guid:アンインストール用時に使われるGUID値(guidgen.exe等で作成)  -->
          <Component Id="mysoft.exe" Guid="9E9A7364-4AA6-484b-8532-01971A9E074D">
<!--    Source:コピー元のファイル名 ほかに必要なファイルがあれば<File Id=  />を繰り返す  -->
            <File Id="test1.exe" Source="test1.exe" KeyPath="yes" Checksum="yes"/>
          </Component>
      </DirectoryRef>
      <DirectoryRef Id="ApplicationProgramsFolder">
<!--    Guid:アンインストール用時に使われるGUID値(guidgen.exe等で作成)  -->
<!--    Name:ショートカット名  Description:ショートカットのコメント -->
          <!--    Target:ショートカットにする元のファイル名 -->
          <Component Id="ApplicationShortcut" Guid="B318D932-8AF7-4c51-90CE-97B784B9B054">
                <Shortcut Id="ApplicationStartMenuShortcut"
                Name="テスト1"
                Description="テスト"
                Target="[APPLICATIONROOTDIRECTORY]test1.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="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=test1
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
      Copyright (C) 2012 山本ワールド All Rights Reserved.
    
    
  