3

.NET 4.0(Windows 2003はその1つ)のインストールに必要なWindows Imaging Componentが付属していない特定のプラットフォームで、カスタムマネージドブートストラッパーアプリケーションを使用して書き込みバンドルを起動するのに問題があります。

マネージドブートストラッパーアプリケーションに必要なものを定義する標準的な方法を使用しています。

<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full"/>

このブートストラッパーを新しくインストールしたWindows2003R2マシンで実行すると、.NETの標準要件インストーラーが起動し、エラーが発生して失敗します。

私たちは、次のことを行うことによってこの問題を解決しようとしました(本質的でないものはすべて切り取って):

...
<!-- Define WIC packages -->
<PackageGroup Id="PG.WIC">      
  ...
  <ExePackage Id="EP.wic_x64_enu" Cache="no" Compressed="no"  PerMachine="yes" Permanent="yes" Vital="no"  
     DisplayName="Windows Imaging Component for Windows Server 2003 x64"
     Name="{4A85FFDB-5563-4FE9-9C0E-C780A271BCC7}\WIC\wic_x64_enu.exe"
     SourceFile="$(var.SetupPrereq_SRC)\WindowsImagingComponent\x64\wic_x64_enu.exe"
     DownloadUrl="http://download.microsoft.com/download/6/4/5/645fed5f-a6e7-44d9-9d10-fe83348796b0/wic_x64_enu.exe"
     InstallCondition="(VersionNT=v5.2 AND VersionNT64 AND NOT NETFRAMEWORK40FULL)"
     InstallCommand="/q /norestart">
  </ExePackage>
</PackageGroup>
...
<!-- Define our own .NET package, and set it to be after the WIC package -->
<PackageGroup Id="PG.NetFx40Full">
  <ExePackage Id="EP.NetFx40Full" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" Protocol="netfx4" 
      DisplayName="Microsoft .NET Framework 4"
      Name="{4A85FFDB-5563-4FE9-9C0E-C780A271BCC7}\NetFx\dotNetFx40_Full_x86_x64.exe"
      SourceFile="$(var.SetupPrereq_SRC)\NetFx\dotNetFx40_Full_x86_x64.exe"
      DownloadUrl="http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"
      DetectCondition="NETFRAMEWORK40FULL"
      InstallCommand="/q /norestart /ChainingPackage &quot;[WixBundleName]&quot; /log %TEMP%\PG.NetFx40Full.log"
      RepairCommand="/q /norestart /repair /ChainingPackage &quot;[WixBundleName]&quot;"        
      After="EP.wic_x64_enu"        >
  </ExePackage>
</PackageGroup>
...
<!-- Change wixmbaprereqpackageid to point to our own package-->
<WixVariable Id="WixMbaPrereqPackageId" Value="PG.Netfx4Full" Overridable="no"/>
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />
...
<Chain>
  <!--Windows Imaging Component-->
  <PackageGroupRef Id="PG.WIC"/>

  <!--.Net Framework 4 -->      
  <!--Custom offline package.-->
  <PackageGroupRef Id="PG.NetFx40Full"/>
  ...
</Chain>
...

これは動作しません。prereqインストーラーは通常どおり起動しますが、ボタンをクリックしてインストールを開始すると、進行状況バーが1秒間点滅し、インストーラーが終了します。バンドルが再度開始されると、prereqインストーラーが起動しますが、タイトルとロゴのみが表示され、ボタンは表示されません。また、.NETパッケージグループのPackageGroupRefにAfter条件を設定しようとしましたが、同様の結果が得られました。

だから、私の質問は:管理されたブートストラッパーの前提条件としてburnが複数のパッケージをインストールするようにする方法はありますか、またはこの問題を解決する他の方法はありますか?

4

2 に答える 2

2

WiX v3.9 以降では、bal:PrereqSupportPackage="yes"(v4.x ではbal:PrereqPackage) prereq BA をインストールするパッケージに追加します (InstallCondition を尊重します)。

于 2014-09-25T00:45:30.340 に答える
-1

dotNetInstaller を使用できます。これは、Windows 用のセットアップ ブートストラップです。wic を (x86 または x64 上に) インストールしたら、Wix インストーラーを起動できます。

dotNetInstaller configuration.xmlで使用できるコードを次に示します 。wic_x86、wic_x64、およびドット ネット フレームワーク 4 の 3 つのコンポーネントがあります。

  <component executable="&quot;#CABPATH\wic_x86_enu.exe&quot; /norestart /quiet" executable_silent="" executable_basic="" install_directory="" responsefile_source="" responsefile_target="" responsefile_format="none" uninstall_executable="" uninstall_executable_silent="" uninstall_executable_basic="" uninstall_responsefile_source="" uninstall_responsefile_target="" returncodes_success="" returncodes_reboot="" exeparameters="" exeparameters_basic="" exeparameters_silent="" uninstall_exeparameters="" uninstall_exeparameters_basic="" uninstall_exeparameters_silent="" disable_wow64_fs_redirection="False" id="Windows Imaging Component (x86)" display_name="Windows Imaging Component" uninstall_display_name="" os_filter="" os_filter_min="winXP" os_filter_max="" os_filter_lcid="" type="exe" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="x86" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True">
  <embedfile sourcefilepath="#APPPATH\presetup\wic_x86_enu.exe" targetfilepath="#TEMPPATH\wic_x86_enu.exe" />
  <installedcheck filename="#SYSTEMPATH\WindowsCodecs.dll" fileversion="" comparison="exists" defaultvalue="False" type="check_file" description="Installed Check" />
</component>
<component executable="&quot;#CABPATH\wic_x64_enu.exe&quot; /norestart /quiet" executable_silent="" executable_basic="" install_directory="" responsefile_source="" responsefile_target="" responsefile_format="none" uninstall_executable="" uninstall_executable_silent="" uninstall_executable_basic="" uninstall_responsefile_source="" uninstall_responsefile_target="" returncodes_success="" returncodes_reboot="" exeparameters="" exeparameters_basic="" exeparameters_silent="" uninstall_exeparameters="" uninstall_exeparameters_basic="" uninstall_exeparameters_silent="" disable_wow64_fs_redirection="False" id="Windows Imaging Component (x64)" display_name="Windows Imaging Component" uninstall_display_name="" os_filter="" os_filter_min="winXP" os_filter_max="" os_filter_lcid="" type="exe" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="x64" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True">
  <embedfile sourcefilepath="#APPPATH\presetup\wic_x64_enu.exe" targetfilepath="#TEMPPATH\wic_x64_enu.exe" />
  <installedcheck filename="#SYSTEMPATH\WindowsCodecs.dll" fileversion="" comparison="exists" defaultvalue="False" type="check_file" description="Installed Check" />
</component>
<component executable="&quot;#CABPATH\dotNetFx40_Full_x86_x64.exe&quot; /norestart /quiet" executable_silent="" executable_basic="" install_directory="" responsefile_source="" responsefile_target="" responsefile_format="none" uninstall_executable="" uninstall_executable_silent="" uninstall_executable_basic="" uninstall_responsefile_source="" uninstall_responsefile_target="" returncodes_success="" returncodes_reboot="3010" exeparameters="" exeparameters_basic="" exeparameters_silent="" uninstall_exeparameters="" uninstall_exeparameters_basic="" uninstall_exeparameters_silent="" disable_wow64_fs_redirection="False" id=".NET Framework 4 (English)" display_name="Microsoft .NET Framework 4" uninstall_display_name="" os_filter="" os_filter_min="winXP" os_filter_max="" os_filter_lcid="" type="exe" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True">
  <installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
  <embedfile sourcefilepath="#APPPATH\presetup\dotNetFx40_Full_x86_x64.exe" targetfilepath="#TEMPPATH\dotNetFx40_Full_x86_x64.exe" />
</component>
于 2012-11-14T15:35:29.787 に答える