@ledsun blog

無味の味は佳境に入らざればすなわち知れず

WiX

msiを使う利点

serverfault.com 2011年頃、10年前の古い文章ですが、大変長くて情熱的なので良いなーと思いました。 システム管理者にとっての利点という視点があるのが興味深いです。 なるほど、企業で使っているPCに一斉にアプリケーションをインストールするのにCLIで起…

Windowsインストーラーが「別のバージョンの製品が既にインストールされています。」と表示する条件

msiファイルをビルドしているとちょいちょい次のダイアログを見ます。 「別のバージョンの製品が既にインストールされています。」ダイアログ Product Idが同じ異なるmsiファイルを実行すると起きます。 何が「異なる」と表示されるのか特定出来ていませんで…

Windowsインストーラーでインストールボタンに盾アイコンが表示される場合とされない場合

Windows用のインストーラーのうち拡張子がmsiのインストーラーでは、次のようにインストールボタンに盾アイコンが表示されるインストーラーとされないインストーラーがあります。これは何が違うのでしょうか? 盾アイコンの表示されたインストールボタン 盾…

WiX Toolsetの組み込みダイアログのフォントを指定する

WiX チュートリアル 日本語訳 Lesson 2 ユーザー・インタフェイス / 1. 最初のステップにある、Sample-2-1-WixUI.zipはWixUI_InstallDirという組み込みのダイアログセットを使っています。 WixUI_InstallDirを使っているというのは、wxsファイル中に次の要素…

WSLポートフォワード設定するインストーラーのリポジトリを作った

github.com WiXでWSLポートフォワード設定するインストーラーを作る - @ledsun blog で作ったインストーラー、というかインストーラーでインストールするバッチファイルの修正をしたくなったのが2回目なので、リポジトリを作りました。 1度目は有効にするバ…

WiX Toolsetの組み込みダイアログの文言をかえる

多言語化の仕組みがあるのこれをつかいます。 wxl形式のXMLファイルを用意し、ビルド時にコマンドラインオプションで指定すれば変更できます。 文言の変更 例えばWiX チュートリアル 日本語訳 Lesson 2 ユーザー・インタフェイス / 1. 最初のステップにある…

WiX Toolsetで作られているインストーラーたち

msiファイルのプロパティの詳細を見るとプログラム名の欄にmsiファイルを作ったプログラム名が記載されていることに気がつきました。 ダウンロードディレクトリに残っていたmsiファイルを見てみると、結構いろいろなmsiファイルがWiX Toolsetで作られていま…

Microsoft Visual Studio Installer Projects

いまさらWiX Toolsetの競合の存在に気がつきました。 Visual Studio Installer Projects and .NET 6.0 | Microsoft Docs Microsoft Visual Studio Installer Projects - Visual Studio Marketplace 【.NET Core対応】Visual Studio 2019でインストーラを作成…

メジャー・アップグレードでのUpgrade要素の役割

WiX チュートリアル 日本語訳 Lesson 4 アップグレードとモジュラー化 / 1. 古いのを探す の Sample-4-1-Upgrade.zip に含まれる SampleMajorUpgrade.wxs を参考にして話を進めます。 メジャー・アップグレードでは次のように Upgrade要素 を定義します。 <Upgrade Id='YOURGUID-7349-453F-94F6-BCB5110BA4FD'> </upgrade>

メニューフォルダを削除するコンポーネントを節約する

WiX チュートリアル 日本語訳 Lesson 1 始めよう / 3. 使用に供する の SampleFirst.wxs を例にします。 <Component Id='MainExecutable' Guid='A3AAD3C9-C833-4D1B-939E-0D1C47A31D95'> <File Id='HogeEXE' Name='HogeAppl10.exe' DiskId='1' Source='HogeAppl10.exe' KeyPath='yes'> </file></component>

WiXのメジャーアップグレードは、アプリケーションが ユーザーごとにインストールされていれば ユーザーごと、マシンごとでインストールされていればマシンごと、でしか適用できない

http://cml.s10.xrea.com/ej/WiX/wi_etc.htm メジャーアップグレードは、アプリケーションが ユーザーごとにインストールされていれば ユーザーごと、マシンごとでインストールされていればマシンごと、でしか適用できない。 これはなぜでしょうか? Windows…

Wix Toolsetでアップデートするインストーラーにメジャー・アップグレードを採用する

最初は差分が小さいはずだし、マイナー・アップグレードを選ぼうと思っていました。 次の記述を発見しメジャー・アップグレードを選ぶことにしました。 どういう理由かは知りませんが、スモール・アップデートとマイナー・アップグレードは、 .msi ファイル…

WiXでショートカットをつくるときにレジストリ値が要らない方法

WiXではショートカットを作る方法が2つあります。 WiX チュートリアル 日本語訳 Lesson 1 始めよう / 2. 中に入るファイル では、次のような方法を紹介しています。 <Component Id='MainExecutable' Guid='YOURGUID-83F1-4F22-985B-FDB3C8ABD471'> <File Id='HogeEXE' Name='HogeAppl10.exe' DiskId='1' Source='HogeAppl10.exe' KeyPath='yes' /> </file></component>

WiXの値の共通化方法がわからない

ComponentGroupを使う時につぎのようにSource属性に同じ値を何度か書きました。 <ComponentGroup Id='Processors' Directory="Processors" Source="..\Project\bin\Release"> <Component Id="CMP__main.exe" Guid="{xxxx}"> <File Id="File__main.exe" Name="main.exe" /> </Component> </ComponentGroup>

WiXのComponentGroupを使う

ComponentGroupの効果 WiXでは次のようにDirectory要素の下に、インストールするコンポーネントを列挙します。 GUIDは、適当に省略してあります。 <Directory Id='TARGETDIR' Name='SourceDir'> <Directory Id='ProgramFilesFolder' Name='_'> <Directory Id='Hoge' Name='Hoge' FileSource="src\"> <Component Id="CMP__main.exe" Guid="{xxx}"> </component></directory></directory></directory>

WiXにはMediaTemplate要素がある

wix-tutorial-ja.github.io <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt='CD-ROM 1枚目' /> では、Media要素を使う例が紹介されています。 WiX 3.6: A Developer's Guide to Windows Installer XML作者:Ramirez, NickPackt PublishingAmazon では、MediaTemplate要素が紹介されていました。 次のように、Id属性とCabinet</media>…

WiXでWSLポートフォワード設定するインストーラーを作る

WSL向けのWindowsポートフォワード設定をスクリプト化する - @ledsun blog にて、WSLポートフォワード設定をするバッチファイルが出来ました。 WiXの練習用にこのバッチファイルのインストーラーを作ってみました。 ソースコードです。 gist.github.com 書い…

WiXチュートリアルのユーザーインターフェースのサンプルをコンパイルする方法

WiX チュートリアル 日本語訳 Lesson 2 ユーザー・インタフェイス / 1. 最初のステップ candle.exe SampleWixUI.wxs light.exe -ext WixUIExtension SampleWixUI.wixobj とありますが、次のようなエラーが出ます。 PS C:\Users\led_l\wix-play-ground\Sample…

WiXを使ってWindowsインストーラーを作っているとBurnin' X'masする

WiXでインストーラーをコンパイルするコマンドがこんな感じなんです。 candle.exe' .\SampleFirst.wxs コマンドを打つ度に、頭の中で「キャンドルも 十字架も...」するんですよ。 作った人はそんなこと1ミリも考えてないと思うんですけど、罪なコマンド名で…

キー配置をDvorakにするインストーラーを作る

WiXというツールをつかってWindows用のインストーラーを作る勉強をしています。 練習用に、その中でレジストリに値を書き込む機能があったので、WindowsでDvorakキー配置 - @ledsun blog で設定したリポジトリキーを書き込むインストーラーを作成してみまし…

ウィンドウズ向けのインストーラーの作り方を勉強している

Wixというツールがあります。 この使い方が分かればよいはずです。 ということで、 WiX チュートリアル 日本語訳 を参考に、 チュートリアルを流し読みする サンプルソースからインストーラーを作成する チュートリアルを読み直す という手順を繰り返して、W…