WixでVSPackageのインストールパッケージを作成する
34188 ワード
VSPackageを作成したら、どのようにパッケージしてリリースしますか?実はいろいろなパッケージがありますが、ここではVS 2008でWixでVPackageを作るインストーラだけを紹介します.まず、Wix toolset(http://wix.codeplex.com/)をダウンロードしてインストールします.
テスト用のVSPackageの作成
テスト用にVSPackageプロジェクトを新規作成します.インストール後の効果を示すために、ウィザードにMenu Commandを追加することを忘れないでください.
Wixプロジェクトの作成
次の図に示すように、プロジェクトタイプ選択Wix-』Wixプロジェクトを新規作成します.
完了したソリューションの表示は次のとおりです.
VSPackageを登録するためのwxsファイルを生成
VSPackageを使用するには、レジストリに情報を追加する必要があります.regpkgというコマンドを使用して、これらの情報をwxsファイルに生成するのに役立ちます.
まずPackageプロジェクトをコンパイルし、VS 2008 SDKのコマンドラインでPackageのbindebugディレクトリに移動し、次の文を実行します.
ここで、は、E:VSPackageInstallerVSPackage 1bindebugなどのPackageプログラムセットが存在するディレクトリの全パスを表します.
このコマンドが正常に実行されると、同じディレクトリの下にVSPackage 1が生成されます.wxsのファイルは、VSPackageInstallerプロジェクトの下に追加する必要があります.なお、追加後、このファイルのBuild Actionのデフォルトはコンパイル(Compile)であり、このVSPackage 1のため、コンテンツ(Content)に変更する必要があります.wsxファイルはメインProductに含める必要がある.wsxでは、Productをコンパイルする.wsxの時にコンパイルします.次の図を示します.
インストールロジックの追加
まずVSPackageInstallerプロジェクトにWixUIExtensionを追加します.dllの参照は、次の図のようになります.
その後、VSPackageInstallerプロジェクトの下のProductを変更します.wxsは:
修正前に比べて、私たちは主にProductにいます.wxsには次のような内容が追加されています.レジストリを検索し、vs 2008のdevenvを取り出す.Exceプログラムのパス VSPackage.dllターゲットディレクトリ にコピーレジストリ情報(VSPackage 1.wxs)を に含める devenvを実行します.exe/setup/nosetupvstemplates(我々のテストPackageにはVSTomplateがないため、/nosetupvstemplatesパラメータを加えて速度を向上させた) Productを修正します.wxsの後、VSPackage 1を修正する必要があります.wxsファイルの次の行:
次のように変更します.
つまりCodeBaseのValueを
に表示されます.
インストールパッケージのテスト
ここまで、私たちのインストールパッケージはもう使えます.VSPackageInstallerプロジェクトをコンパイルし、VSPackageInstallerを実行します.msi、インストールインタフェースが出ているのが見えます.
インストールに成功したら、VSを再起動し、ツールメニューをクリックすると、Packageがインストールされていることがわかります.
このインストーラを再実行すると、Packageをアンインストールできます.
インストールパッケージの改良
インストールパッケージは使用できますが、いくつかの問題があります.英語の ですユーザーがVS 2008をインストールしていない場合、インストーラは とエラーを報告します.インストール時、licenseダイアログ が表示されたくない devenvを実行する.exe/setup/nosetupvstemplatesでは時間がかかりますが、インストーラには のプロンプトはありません.
中国語にするには、中国語のwxlファイルをダウンロードし、埋め込まれたリソースとしてVSPackageInstallerプロジェクトに追加する必要があります.その後、Productを変更します.wxsファイルは、ProductノードのLanguageを1033から2052に変更し、CodePage="936"のプロパティを追加します.その後、VSPackageInstallerのプロジェクト属性を変更し、Buildページチェックで「Cultures to build」をzh-cnに変更します.以下の図です.
VSPackageInstallerプロジェクトを再コンパイルすると、bindebugzh-cnディレクトリの下に新しくコンパイルされたmsiが見つかります.
インストール時のlicenseダイアログボックスを削除するには、Product.wsxのUIノードの下に次の内容を追加します.
devenvを実行したい場合は.exe/setup/nosetupvstemplatesの場合、インストーラはUIノードの下でProgressTextを指定する必要があるプロンプトを表示します.
インストール時にクライアントにVS 2008がインストールされているかどうかを判断するには、次のようなConditionを指定する必要があります.
ここのDEVENV_EXE_PATHは私たちが検索したdevenvです.exeのパスは、ここでは、このパスが空であるか否かを判断することによってVS 2008がインストールされているか否かを決定する.
最終的なプロジェクトwsxの内容は以下の通りです.
最終的な効果は次のとおりです.
ソースダウンロード:VSPackageInstaller.rar 中国語のwxlファイル
テスト用のVSPackageの作成
テスト用にVSPackageプロジェクトを新規作成します.インストール後の効果を示すために、ウィザードにMenu Commandを追加することを忘れないでください.
Wixプロジェクトの作成
次の図に示すように、プロジェクトタイプ選択Wix-』Wixプロジェクトを新規作成します.
完了したソリューションの表示は次のとおりです.
VSPackageを登録するためのwxsファイルを生成
VSPackageを使用するには、レジストリに情報を追加する必要があります.regpkgというコマンドを使用して、これらの情報をwxsファイルに生成するのに役立ちます.
まずPackageプロジェクトをコンパイルし、VS 2008 SDKのコマンドラインでPackageのbindebugディレクトリに移動し、次の文を実行します.
regpkg /wixfile:VSPackage1.wxs /codebase "<full-path>\VSPackage1.dll"
ここで、
このコマンドが正常に実行されると、同じディレクトリの下にVSPackage 1が生成されます.wxsのファイルは、VSPackageInstallerプロジェクトの下に追加する必要があります.なお、追加後、このファイルのBuild Actionのデフォルトはコンパイル(Compile)であり、このVSPackage 1のため、コンテンツ(Content)に変更する必要があります.wsxファイルはメインProductに含める必要がある.wsxでは、Productをコンパイルする.wsxの時にコンパイルします.次の図を示します.
インストールロジックの追加
まずVSPackageInstallerプロジェクトにWixUIExtensionを追加します.dllの参照は、次の図のようになります.
その後、VSPackageInstallerプロジェクトの下のProductを変更します.wxsは:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="4981e388-4c5f-4d7d-bc29-11fedb49ebea" Name="VSPackageInstaller" Language="1033" Version="1.0.0.0" Manufacturer="VSPackageInstaller" UpgradeCode="0b0867f6-f86e-4c0a-aa57-ddb1fe4165df">
<Package InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<!-- VS2008 devenv.exe -->
<Property Id="DEVENV_EXE_PATH">
<RegistrySearch Id="RegSearch_DevenvExe_Path" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
</Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLLOCATION" Name="VSPackageInstaller">
<Component Id="ProductComponent" Guid="42a95449-0cc2-4045-a9e1-b2f4296a376a">
<!-- -->
<File Id="VSPackage1"
Source="$(var.SolutionDir)\VSPackage1\bin\debug\VSPackage1.dll" />
<!-- -->
<?include VSPackage1.wxs ?>
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="ProductFeature" Title="VSPackageInstaller" Level="1">
<ComponentRef Id="ProductComponent" />
</Feature>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
<UI>
<UIRef Id="WixUI_InstallDir" />
</UI>
<InstallExecuteSequence>
<Custom Action="CA_DeployPackage" Before="InstallFinalize" />
</InstallExecuteSequence>
<!-- devenv /setup /nosetupvstemplates, Package vs2008 -->
<CustomAction Id="CA_DeployPackage" Property="DEVENV_EXE_PATH" ExeCommand="/setup /nosetupvstemplates" Impersonate="no" Execute="deferred" />
</Product>
</Wix>
修正前に比べて、私たちは主にProductにいます.wxsには次のような内容が追加されています.
<Registry Name="CodeBase" Value="[#File_VSPackage1.dll]" Type="string" />
次のように変更します.
<Registry Name="CodeBase" Value="[#VSPackage1]" Type="string" />
つまりCodeBaseのValueを
<File Id="VSPackage1" Source="$(var.SolutionDir)\VSPackage1\bin\debug\VSPackage1.dll" />
に表示されます.
インストールパッケージのテスト
ここまで、私たちのインストールパッケージはもう使えます.VSPackageInstallerプロジェクトをコンパイルし、VSPackageInstallerを実行します.msi、インストールインタフェースが出ているのが見えます.
インストールに成功したら、VSを再起動し、ツールメニューをクリックすると、Packageがインストールされていることがわかります.
このインストーラを再実行すると、Packageをアンインストールできます.
インストールパッケージの改良
インストールパッケージは使用できますが、いくつかの問題があります.
中国語にするには、中国語のwxlファイルをダウンロードし、埋め込まれたリソースとしてVSPackageInstallerプロジェクトに追加する必要があります.その後、Productを変更します.wxsファイルは、ProductノードのLanguageを1033から2052に変更し、CodePage="936"のプロパティを追加します.その後、VSPackageInstallerのプロジェクト属性を変更し、Buildページチェックで「Cultures to build」をzh-cnに変更します.以下の図です.
VSPackageInstallerプロジェクトを再コンパイルすると、bindebugzh-cnディレクトリの下に新しくコンパイルされたmsiが見つかります.
インストール時のlicenseダイアログボックスを削除するには、Product.wsxのUIノードの下に次の内容を追加します.
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Order="2">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">1</Publish>
devenvを実行したい場合は.exe/setup/nosetupvstemplatesの場合、インストーラはUIノードの下でProgressTextを指定する必要があるプロンプトを表示します.
<ProgressText Action="CA_DeployPackage">
Visual Studio 2008...( )
</ProgressText>
インストール時にクライアントにVS 2008がインストールされているかどうかを判断するには、次のようなConditionを指定する必要があります.
<Condition Message="[ProductName] Visual Studio 2008 , Visual Studio 2008。">DEVENV_EXE_PATH</Condition>
ここのDEVENV_EXE_PATHは私たちが検索したdevenvです.exeのパスは、ここでは、このパスが空であるか否かを判断することによってVS 2008がインストールされているか否かを決定する.
最終的なプロジェクトwsxの内容は以下の通りです.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="4981e388-4c5f-4d7d-bc29-11fedb49ebea" Name="VSPackage1" Language="2052" Codepage="936" Version="1.0.0.0" Manufacturer="VSPackage1" UpgradeCode="0b0867f6-f86e-4c0a-aa57-ddb1fe4165df">
<Package InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<!-- VS2008 devenv.exe -->
<Property Id="DEVENV_EXE_PATH">
<RegistrySearch Id="RegSearch_DevenvExe_Path" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
</Property>
<!-- Launch conditions -->
<Condition Message=" [ProductName] 。">Privileged</Condition>
<Condition Message="[ProductName] Visual Studio 2008 , Visual Studio 2008。">DEVENV_EXE_PATH</Condition>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLLOCATION" Name="VSPackageInstaller">
<Component Id="ProductComponent" Guid="42a95449-0cc2-4045-a9e1-b2f4296a376a">
<!-- -->
<File Id="VSPackage1"
Source="$(var.SolutionDir)\VSPackage1\bin\debug\VSPackage1.dll" />
<!-- -->
<?include VSPackage1.wxs ?>
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="ProductFeature" Title="VSPackageInstaller" Level="1">
<ComponentRef Id="ProductComponent" />
</Feature>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
<UI>
<UIRef Id="WixUI_InstallDir" />
<!-- skip licence dialog -->
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Order="2">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">1</Publish>
<ProgressText Action="CA_DeployPackage">
Visual Studio 2008...( )
</ProgressText>
</UI>
<InstallExecuteSequence>
<Custom Action="CA_DeployPackage" Before="InstallFinalize" />
</InstallExecuteSequence>
<!-- devenv /setup /nosetupvstemplates, Package vs2008 -->
<CustomAction Id="CA_DeployPackage" Property="DEVENV_EXE_PATH" ExeCommand="/setup /nosetupvstemplates" Impersonate="no" Execute="deferred" />
</Product>
</Wix>
最終的な効果は次のとおりです.
ソースダウンロード:VSPackageInstaller.rar 中国語のwxlファイル