VS 2010 BootStrapper для WIC (Windows Imaging Component) перед установкой .Net 4 в XP - PullRequest
2 голосов
/ 08 февраля 2012

Я создал проект установки и развертывания для моего приложения .Net 4 в VS 2010. В своих предварительных условиях я проверил предварительное условие .Net4, но я узнал, что .Net4 исключил WIC (компонент обработки изображений Windows), чтобы сделать его более легким .

Когда я запускаю свою установку в Vista / Win7, установка Net4 не выдает ошибку для WIC, но когда я устанавливаю ее в XP, она выдает ошибку для WIC. Затем мне нужно сначала установить WIC вручную, а затем запустить установку.

Мне нужен загрузчик для WIC, который запускается до установки .Net4 в XP. Подскажите пожалуйста как это можно сделать или ссылку на это. Заранее спасибо.

1 Ответ

14 голосов
/ 12 апреля 2012

Я давно столкнулся с этой досадной проблемой и написал именно то, что вам нужно.Мой начальный загрузчик используется в производстве более года в проекте Grammatica .Честно говоря, я нашел оригинал где-то на pastebin, но он был слишком большим и содержал некоторые ошибки, я даю вам свою окончательную версию.

Для ленивых просто СКАЧАТЬ ЭТУ и распакуйте его в «% PROGRAMFILES (x86)% \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages», затем перезапустите VS и перейдите к списку предварительных требований, чтобы увидеть там компонент Windows Imaging Component.Если ссылка не работает:

<Product ProductCode="Windows.Imaging.Component" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
  <PackageFiles CopyAllPackageFiles="false">
    <PackageFile Name="wic_x86.exe" HomeSite="http://download.microsoft.com/download/f/f/1/ff178bb1-da91-48ed-89e5-478a99387d4f/wic_x86_enu.exe" PublicKey="3082010a0282010100cd819638ae5ca2f2c1dfded0ab958dd63c9d1f8bc35d862e5df0b172f5abac886ab5dab1227b0bc8c8a54b915e2213e9f9f5239db5f46e76aeefeea43cc7c4c0595c3fabb3733326a662816179a162f46e8895d06eddc79fd2a451117661ba708a65a1961689a75d81d04466e5db569e40cafcdc76242e443000e5d67d7b9511d5581da3e84f0bc988dca2d653996cca63ca996a9a925e4c4d11e82fd35b5b5e5f52a3732da5bb84450d8c191576cb08da9aa67015e84dec69fd5db26b8fed295137388bc6464915945098b0f468a4d7de097167749e778c1d856b97eae75f45cce0e6710dd16300937b31988e0bb413bdb3d0eef1df21eea96061ee37433dc30203010001" />
    <PackageFile Name="wic_x64.exe" HomeSite="http://download.microsoft.com/download/6/4/5/645fed5f-a6e7-44d9-9d10-fe83348796b0/wic_x64_enu.exe" PublicKey="3082010a0282010100cd819638ae5ca2f2c1dfded0ab958dd63c9d1f8bc35d862e5df0b172f5abac886ab5dab1227b0bc8c8a54b915e2213e9f9f5239db5f46e76aeefeea43cc7c4c0595c3fabb3733326a662816179a162f46e8895d06eddc79fd2a451117661ba708a65a1961689a75d81d04466e5db569e40cafcdc76242e443000e5d67d7b9511d5581da3e84f0bc988dca2d653996cca63ca996a9a925e4c4d11e82fd35b5b5e5f52a3732da5bb84450d8c191576cb08da9aa67015e84dec69fd5db26b8fed295137388bc6464915945098b0f468a4d7de097167749e778c1d856b97eae75f45cce0e6710dd16300937b31988e0bb413bdb3d0eef1df21eea96061ee37433dc30203010001" />
  </PackageFiles>
  <InstallChecks>
    <FileCheck Property="VersionPMHdll32" FileName="PhotoMetadataHandler.dll" SearchPath="system32" SpecialFolder="WindowsFolder" />
    <FileCheck Property="VersionPMHdll64" FileName="PhotoMetadataHandler.dll" SearchPath="SysWOW64" SpecialFolder="WindowsFolder" />
  </InstallChecks>
  <Commands Reboot="Defer">
    <Command PackageFile="wic_x86.exe"
      Arguments="/quiet /norestart" 
      EstimatedInstalledBytes="1200000" 
      EstimatedTempBytes="3700000"
      EstimatedInstallSeconds="60">
      <InstallConditions>
        <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel" />
        <BypassIf Property="VersionPMHdll32" Compare="VersionGreaterThanOrEqualTo" Value="6.0.5840.16388" />
        <BypassIf Property="VersionNT" Compare="VersionGreaterThanOrEqualTo" Value="6.0.0" />
        <!-- Requires the user to be an admin user when installing the prerequisite -->
        <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>
      </InstallConditions>
      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
      </ExitCodes>
    </Command>
    <Command PackageFile="wic_x64.exe"
      Arguments="/quiet /norestart" 
      EstimatedInstalledBytes="1200000" 
      EstimatedTempBytes="6400000"
      EstimatedInstallSeconds="60">
      <InstallConditions>
        <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="AMD64" />
        <BypassIf Property="VersionPMHdll64" Compare="VersionGreaterThanOrEqualTo" Value="6.0.5840.16388"/>
        <BypassIf Property="VersionNT" Compare="VersionGreaterThanOrEqualTo" Value="6.0.0" />
        <!-- Requires the user to be an admin user when installing the prerequisite -->
        <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>
      </InstallConditions>
      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
      </ExitCodes>
    </Command>
  </Commands>
</Product>

Просто перейдите в% PROGRAMFILES (x86)% \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages, создайте папку с именем WIC или что-то еще, чемпоместите туда этот xml и назовите его «product.xml», поместите рядом с ним « wic_x86_enu.exe », создайте папку «en» и поместите в нее этот «package.xml»:

<?xml version="1.0" encoding="utf-8"?>
<Package Name="DisplayName" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
  <Strings>
    <String Name="Culture">en</String>
    <String Name="DisplayName">Windows Imaging Component</String>
    <String Name="Anunexpectedexitcodewasr">An unexpected exit code was returned from the installer. The installation failed.</String>
  </Strings>
</Package>  

Перезапустите Visual Studio, и вы увидите его в списке необходимых компонентов.

ПРИМЕЧАНИЕ. устанавливает WIC только в случае необходимости для установки .NET.Он не установит WIC, если системе это не нужно.Он не установит .NET, только WIC.Таким образом, чтобы установить .NET и WIC (при необходимости), просто добавьте оба предварительных условия (мой для WIC и встроенный для .NET).

...