インストーラでデバイスドライバをインストールする
環境:Visual Studio 2012 Professional、Wix Toolset 3.6
Driver Element (Difxapp Extension)
を使って以下のように書きます。
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:difx='http://schemas.microsoft.com/wix/DifxAppExtension'> <DirectoryRef Id="DriversFolder" FileSource="..\Includes\"> <Component Id="MyDriver" Guid="[PUT GUID]"> <difx:Driver Legacy='yes' /> <File Id="cyusb.inf" Vital="yes" /> <File Id="cyusb.sys" Vital="yes" /> </Component> </DirectoryRef>
参考:How do I use WiX to deploy an INF-based USB driver - Stack Overflow
Driver要素を使うときには、リファレンスによると
To use this element, you need to reference the WixDifxAppExtension extension and add the .wixlib appropriate for the target platform (difxapp_x86.wixlib or difxapp_x64.wixlib) to your project.
ということで、WixDifxAppExtensionとdifxapp_*.wixlibを参照に追加しろ、と書いてあるわけですが、Visual Studioで作っているので具体的にどうするのか。
WixDifxAppExtensionの追加
Wixプロジェクトのプロパティを開いて、Tool SettingsのAdditional Parametersに-ext WixDifxAppExtensionを追加。それから前回の記事の通り私はlightをビルドイベントで実行しているので、lightのパラメータにも同じように追加する。
%light% -ext WixFirewallExtension -ext WixDifxAppExtension -sice:ICE09 -sice:ICE80 -out %MsiName% %SampleLib% …
difxapp_*.wixlibの追加
直接msiを生成するWixセットアッププロジェクトの場合は単にふっつーに参照に追加しておけばOKです。
しかし、lightでリンクしている場合、lightのパラメータとして指定する必要があります。
set DifxAppLib="$(ProgramFiles)\Wix Toolset v3.6\bin\difxapp_x86.wixlib"
%light% -ext WixFirewallExtension -ext WixDifxAppExtension -sice:ICE09 -sice:ICE80 -out %MsiName% %DifxAppLib% %SampleLib% …