XP 中安装 .Net 4 之前的 VS 2010 BootStrapper for WIC(Windows 成像组件)

发布于 2025-01-03 16:38:12 字数 281 浏览 6 评论 0原文

我已经在 VS 2010 中为我的 .Net 4 应用程序创建了一个设置和部署项目。在我的先决条件中,我检查了 .Net4 先决条件,但我了解到 .Net4 已经省略了 WIC(Windows 成像组件)以使其更轻便。

当我在 Vista/Win7 中运行安装程序时,Net4 安装不会给出 WIC 错误,但当我在 XP 中安装它时,它会给出 WIC 错误。然后我必须先手动安装 WIC,然后运行我的设置。

我需要一个 WIC 引导程序,它在 XP 中安装 .Net4 之前运行。请建议如何完成或提供链接。提前致谢。

I have created a setup and deployment project for my .Net 4 app in VS 2010. In my prerequisites i have checked .Net4 prerequisite but i have learned that .Net4 has left out WIC (Windows Imaging Component) to make it light.

When i run my setup in Vista/Win7 the Net4 installation does not give error for WIC but when i install it in XP it gives error for WIC. Then i have to install WIC manually first and then run my setup.

I need a bootstrapper for WIC which runs before .Net4 installation in XP. Please suggest how it can be done or a link for it. Thanks in Advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仅此而已 2025-01-10 16:38:12

我很久以前就遇到过这个烦人的问题,并且写下了您所需要的内容。我的引导程序在 Grammatica 项目的生产中使用了一年多。老实说,我在pastebin上找到了原版,但它太大并且包含一些错误,我给你我的最终版本。

对于懒人,只需下载此并将其解压到“%PROGRAMFILES(x86)%\Microsoft SDKs” \Windows\v7.0A\Bootstrapper\Packages”,然后重新启动 VS 并转到先决条件列表以查看 Windows 成像组件。
如果链接已失效:

<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 并您将在先决条件列表中看到它。

注意:仅在 .NET 安装需要时才安装 WIC。如果系统不需要 WIC,则不会安装它。它不会安装.NET,只会安装WIC。因此,为了安装 .NET 和 WIC(如果需要),只需添加两个先决条件(对于 WIC 是我的,对于 .NET 是内置的)。

I've faced this annoying problem a long time ago and wrote exactly what you need. My bootstrapper is used in production for more than a year in project Grammatica. To be honest, I found the original somewhere on pastebin, but it was way too big and contained some bugs, I give you my final version.

For the lazy ones, just DOWNLOAD THIS and unpack it to "%PROGRAMFILES(x86)%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages" then restart VS and go to Prerequisites list to see Windows Imaging Component there.
In case if the link is dead:

<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>

Just go to %PROGRAMFILES(x86)%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages,
create a folder called WIC or smth else, than put this xml there and call it 'product.xml', put 'wic_x86_enu.exe' near it, create a folder "en" and put this 'package.xml' into it:

<?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>  

Restart your Visual Studio and you'll see it in the list of prerequisites.

NOTE: it installs WIC only IF NEEDED for .NET installation. It won't install WIC, if the system doesn't need it. It won't install .NET, only WIC. So in order to install .NET and WIC (if needed), just add both prerequisites (my for WIC and built-in for .NET).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文