6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Visual Studio 2019 × WiXToolSet を用いてインストーラを作成する

Last updated at Posted at 2024-11-26

はじめに

サービスプログラムをインストーラーとして配布する必要があり、
インストーラの作成にあたり、WiXToolSetを用いて作成を行いましたので備忘録として記載を行います。
(拙い文章・説明となりますがおおらかな目で見ていただけると幸いです)

準備

Visual Studio 2019 の拡張機能のインストール

Visual Studio 2019のツールバーから[拡張機能]→[拡張機能の管理]を選択

検索機能から[WiX]と入力すると[WiX3 v3 - Visual Studio 2019 Wxtension]という項目がありますので、こちらをダウンロードします。
Windows_10_x64_new.png
(こちらではもう既にダウンロードしてますのでダウンロードの項目がありませんが、未ダウンロードの場合は緑のチェックマークの左にダウンロードボタンが表示されます)

WiX Editのダウンロード

インストーラを作成するにあたり、
WiX EditというXMLの記述をサポートするソフトをダウンロードしておきます。

ダウンロード先は下記となります。

Visual Studioにてプロジェクトの作業

セットアッププロジェクトの作成

ソリューションから新しいプロジェクトの作成を行うと、検索欄に[WiX]の欄が追加されているので選択
Windows_10_x64_new.png

[Setup Project for WiX v3]を選択し、新しいプロジェクトを作成する
Windows_10_x64_new.png

インストーラ作成用のプロジェクトが作成されます
Windows_10_x64_new.png

WiX Editを用いてインストーラの項目を入力する

WiXEditの実行

WiX Editを開き[File]→[Open]にて上記で作成したプロジェクトの[Product.wxs]を選択する
Windows_10_x64_new.png

Product欄の入力

各種項目の設定を行う
Windows_10_x64_new.png

各項目の説明は以下となります

  • Id: インストーラのGUIDを入力(アップデートを行う際はここを変更する)
  • Language: 1041 (日本語)
  • Manufacturer: (作者名)
  • Name: (製品名)
  • UpgradeCode: アップデートの識別を行うGUID(基本的に変更しない)
  • Version: バージョンの記載 (メジャーVer).(マイナーVer).(任意の数字)

MediaTemplate欄の入力

右側の空欄で右クリック→[New]を選択
Windows_10_x64_new.png
[EmbedCab]を選択[OK]
Windows_10_x64_new.png
yesと入力する
Windows_10_x64_new.png
※インストーラに.cabファイルを含めるかの設定をしています

SetDirectoryの作成

[Product]右で右クリック→[New]→[SetDirectory]を選択
Windows_10_x64_new.png

[Id]と[Value]を選択する
Windows_10_x64_new.png

各種項目の設定を行う
Windows_10_x64_new.png

  • ID: 命名規則は自由ですが後ほど使います
  • Value: インストールフォルダの指定を行います

インストールフォルダの設定

左側のタブから[Files]を選択、[Fragment]を右クリック→[Import Folder]を選択
Windows_10_x64_new.png

※ここではインストールしたいプログラムをまとめてフォルダ化しているのでフォルダの選択を行なっています

Windows_10_x64_new.png

  • ID: SetDirectoryの作成で命名した名称を入力します
  • Value: 特に指定はありません

サービスを作成するためのの設定を行う

サービスを登録したい[.exe]ファイルを右クリック→[ServiceControl]を選択
Windows_10_x64_new.png

Windows_10_x64_new.png

右側の空欄で右クリック→[New]を選択
[Remove]・[Start]・[Stop]・[Wait]を選択し、[OK]
Windows_10_x64_new.png

各種項目の設定を行います
Windows_10_x64_new.png

  • Id:識別子
  • Name:インストールするサービス名
  • Remove:サービスがインストーラの、インストール・アンインストール時に削除するか選択できます
    インストーラのアンインストールをした際にサービスの削除も行いたいので[uninstall]を選択
  • Start:サービスがインストーラの、インストール・アンインストール時に開始するか選択できます
    インストーラのインストールをした際にサービスの開始も行いたいので[install]を選択
  • Stop:サービスがインストーラの、インストール・アンインストール時に停止するか選択できます
    インストーラのインストール・アンインストールをした際にサービスの停止も行いたいので[both]を選択
  • Wait:サービスの登録が完了するまで待つので[yes]選択

サービスを登録したい[.exe]ファイルを右クリック→[Serviceinstall]を選択
Windows_10_x64_new.png

右側の空欄で右クリック→[New]を選択
[Account]・[DisplayName]・[Id]を選択し、[OK]
Windows_10_x64_new.png

各種項目の設定を行います
Windows_10_x64_new.png

  • Account:サービスを開始するアカウント
  • DisplayName:サービスで表示される説明欄に表示される文字列
  • ErrorControl:エラーにおいて、どのアクションを決定する項目
  • Id:識別子
  • Name:インストールするサービス名
  • Start:サービスの開始について
  • Type:サービスの登録タイプについて

Feature設定

Featuresタブ選択、[Product Feature]を右クリック→[Select Components to add]を選択
Windows_10_x64_new.png

インストールしたいファイルを選択し[OK]
Windows_10_x64_new.png

作業が終わりましたら[CTRL + S]で保存

VisualStudio側で[Product.wxs]を確認すると以下のようになっております

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA" Name="SAMPLETOOL" Language="1041" Version="1.0.0" Manufacturer="TEMP" UpgradeCode="AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate EmbedCab="yes" />
        <Feature Id="ProductFeature" Title="QTestApp" Level="1">
            <ComponentRef Id="QTESTTOOL.EXE" />
            <ComponentRef Id="QTESTTOOL.EXE.CONFIG" />
        </Feature>
        <UI />
        <SetDirectory Id="INSTALLFOLDER" Value="D:\Sample" />
    </Product>
    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="INSTALLFOLDER" Name="QTestApp">
                <Component Id="QTESTTOOL.EXE" DiskId="1" Guid="B77E75E0-94B0-4FF0-BACF-B331AA97B125">
                    <File Id="QTESTTOOL.EXE" Name="QTestTool.exe" Source="..\QTestTool\bin\Debug\QTestTool.exe" />
                    <ServiceControl Id="StartService" Name="QToolService" Remove="uninstall" Start="install" Stop="both" Wait="yes" />
                    <ServiceInstall Name="QToolService" Type="ownProcess" Start="auto" ErrorControl="normal" Account="LocalSystem" Id="ServiceInstaller" DisplayName="QToolService" />
                </Component>
                <Component Id="QTESTTOOL.EXE.CONFIG" DiskId="1" Guid="D3AC4038-1F31-4E39-AF55-A4C6F3A14927">
                    <File Id="QTESTTOOL.EXE.CONFIG" Name="QTestTool.exe.config" Source="..\QTestTool\bin\Debug\QTestTool.exe.config" />
                </Component>
            </Directory>
        </Directory>
    </Fragment>
</Wix>

Visual Studio 側でビルドをする

Visual Studio側で作成した、プロジェクトでビルドを行う
Windows_10_x64_new.png

ビルドが完了すると.msiファイルが作成されます

Windows_10_x64_new.png

インストールをすると指定したフォルダにファイルが配置、サービスが開始していることが確認できました!

Windows_10_x64_new.png

Windows_10_x64_new.png

さいごに

Visual Studio 2019 × WiXToolSetを用いて最低限のサービスプログラムのインストーラを作成しました。
WiXToolSetは様々なインストール機能の作成が出来るみたいなので時間がある際に触ってみたいと思います。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?