事前条件チェック
前提条件は、
- Visual Studio 2008 IDE のインストール。
- Dotnet Framework 2.0 ランタイム
- GAXのインストール。
これらを確認するには、次の 2 つの DLL を参照します。
- WixNetFxExtension (主に C:\Program Files\Windows Installer XML v3\bin\WixNetFxExtension.dll から)
- WixUIExtension (主に C:\Program Files\Windows Installer XML v3\bin\WixUIExtension.dll から)
次に示すように、前提条件を .wxs ファイルに追加します。
<!-- Dotnet 2.0 framework installation check - START -->
<PropertyRef Id="NETFRAMEWORK20" />
<Condition Message="Framework 2.0 is required for the setup to continue."><![CDATA[INSTALLED or NETFRAMEWORK20]]></Condition>
<!-- Dotnet 2.0 framework installation check - END -->
<!-- VS.NET and VS.C# installation check - START -->
<Property Id="VCSHARP">
<RegistrySearch Id="VCShaprp" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\InstalledProducts\Microsoft Visual C#" Name="Package" Type="raw" />
</Property>
<Condition Message="Please install Visual C# with Visual Studio 2008 to continue. Setup will now abort."><![CDATA[INSTALLED or VCSHARP]]></Condition>
<!-- VS.NET and VS.C# installation check - END -->
<!-- GAX for VS.2008 installation check - START -->
<Property Id="GAX">
<RegistrySearch Id="gax" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\InstalledProducts\RecipeManagerPackage" Name="Package" Type="raw" />
</Property>
<Condition Message="Please install Guidance Automation Extension on Visual Studio 2008 to continue. Setup will now abort."><![CDATA[INSTALLED OR GAX]]></Condition>
<!-- GAX for VS.2008 installation check - END -->
<!-- Pre-requisite check - END -->
インストールフォルダ
ランタイム インストール フォルダーのセットアップを定義します。このリンクは、すべての「ハウツー」に答えるのに役立ちます。
インストーラーの実行
以下に示すように、InstallerClass を変更する必要があります。
[System.ComponentModel.ToolboxItem(false)]
[RunInstaller(true)]
public class InstallerClass : ManifestInstaller
{
public InstallerClass()
: base()
{ }
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
}
public override void Commit(System.Collections.IDictionary savedState)
{
base.Commit(savedState);
}
public override void Rollback(System.Collections.IDictionary savedState)
{
base.Rollback(savedState);
}
}
この WIX インストーラーがないと、"RunInstaller" としてマークされているクラスがないという例外がスローされます。
この後、以下の WIX 要素を使用して installutil.exe を実行し、インストーラー クラスを実行できます。
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="ManagedInstall" After="InstallFinalize" >NOT Installed</Custom>
<Custom Action="ManagedUnInstall" After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>
<CustomAction Id="ManagedInstall"
Directory='INSTALLLOCATION'
ExeCommand='"[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\installUtil.exe" /LogToConsole=false /DesignMode /hive=9.0 /Configuration="[INSTALLLOCATION]Guidance.xml" "[INSTALLLOCATION]PackageInstaller2008.dll"'
Return='check' >
</CustomAction>
<CustomAction Id="ManagedUnInstall"
Directory='INSTALLLOCATION'
ExeCommand='"[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\installUtil.exe" /u /LogToConsole=false /DesignMode /hive=9.0 /Configuration="[INSTALLLOCATION]Guidance.xml" "[INSTALLLOCATION]PackageInstaller2008.dll"'
Return='check' >
</CustomAction>
お役に立てれば。