Pregunta

Mi aplicación ClickOnce utiliza una herramienta de terceros que requiere el redistribuible de Visual C++ 2005.La herramienta de terceros no funcionará si solo está instalado el redistribuible VC++ 2008.Sin embargo, en Visual Studio 2008, los requisitos previos de ClickOnce no permiten especificar una versión para el redistribuible de VC++;agregará un requisito previo de VC++ 2008, lo cual tiene sentido la mayor parte del tiempo.Sin embargo, en esta situación, se requiere una versión anterior.Se requiere ClickOnce, por lo que fusionar módulos está fuera de discusión.¿Alguna idea de cómo especificar la versión?

¿Fue útil?

Solución

Si puede encontrar una máquina con VS 2005 instalado, la solución no debería ser demasiado difícil.Tiene la posibilidad de personalizar lo que aparece en el cuadro de diálogo Requisitos previos en la pestaña Publicar de su proyecto.

  1. En una máquina con VS 2005 instalado, vaya a \Archivos de programa\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages y copiar el vsredist_x86 carpeta a la máquina desde la que está publicando.
  2. Cambie el nombre de la carpeta, llámela vsredist_x86_2005 o algo similar.
  3. Dentro de la carpeta, edite el \es\paquete.xml archivo.Cambiar el <String Name="DisplayName"> etiquetar algo que tenga sentido (VisualC++ 2005 Bibliotecas en tiempo de ejecución (x86)) para diferenciarlo del paquete existente de 2008.
  4. Copie la carpeta a C:\Archivos de programa\Microsoft SDK\Windows\v6.0A\Bootstrapper\Packages.
  5. Reinicie Visual Studio si está abierto.

Ahora, cuando abra el cuadro de diálogo Requisitos previos, debería ver una nueva entrada para el paquete 2005.No probé completamente esta solución, por lo que es posible que me haya perdido algunos detalles, pero espero que esto te ayude a comenzar.

Otros consejos

Creo que puede abrir el archivo de manifiesto de su aplicación y modificar las versiones de los redists con los que debería vincularse su aplicación.Los listados en el manifiesto deben coincidir con los que tiene en sus directorios C:\Windows\WinSxS.Hay un Página de proyecto de código eso da una buena descripción del uso de diferentes redistribuibles.

Acabo de instalar Visual Studio 2005.Aquí hay un programa previo original:

C:\Archivos de programa\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86\

\es\paquete.xml

<?xml version="1.0" encoding="utf-8" ?>

<Package
  xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
  Name="DisplayName"
  Culture="Culture"
>

    <!-- Defines a localizable string table for error messages-->
    <Strings>
        <String Name="DisplayName">Visual C++ Runtime Libraries (x86)</String>
        <String Name="Culture">en</String>
        <String Name="AdminRequired">You do not have the permissions required to install Visual C++ Runtime Libraries (x86). Please contact your administrator.</String>
        <String Name="InvalidPlatformWin9x">Installation of Visual C++ Runtime Libraries (x86) is not supported on Windows 95. Contact your application vendor.</String>
        <String Name="InvalidPlatformWinNT">Installation of Visual C++ Runtime Libraries (x86) is not supported on Windows NT 4.0. Contact your application vendor.</String>
        <String Name="GeneralFailure">A failure occurred attempting to install Visual C++ Runtime Libraries (x86).</String>
    </Strings>

</Package>

\producto.xml

<?xml version="1.0" encoding="utf-8" ?> 

<Product
  xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
  ProductCode="Microsoft.Visual.C++.8.0.x86"
>

  <!-- Defines list of files to be copied on build -->
  <PackageFiles>
    <PackageFile Name="vcredist_x86.exe"/>
  </PackageFiles>

  <InstallChecks>
    <MsiProductCheck Property="VCRedistInstalled" Product="{A49F249F-0C91-497F-86DF-B2585E8E76B7}"/>
  </InstallChecks>

  <!-- Defines how to invoke the setup for the Visual C++ 8.0 redist -->
  <!-- TODO: Needs EstrimatedTempSpace, LogFile, and an update of EstimatedDiskSpace -->
  <Commands Reboot="Defer">
    <Command PackageFile="vcredist_x86.exe" 
         Arguments=' /q:a ' 
         >

      <!-- These checks determine whether the package is to be installed -->
      <InstallConditions>
        <BypassIf Property="VCRedistInstalled" Compare="ValueGreaterThanOrEqualTo" Value="3"/>
        <!-- Block install if user does not have admin privileges -->
        <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>

        <!-- Block install on Win95 -->
        <FailIf Property="Version9X" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/>

        <!-- Block install on NT 4 or less -->
        <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.00" String="InvalidPlatformWinNT"/>

      </InstallConditions>

      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
      </ExitCodes>

    </Command>
  </Commands>
</Product>

\vcredist_x86.exe

SHA1: 95040f80b0d203e1abaec4e06e0ec0e01c507d03
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top