Domanda

La mia applicazione ClickOnce utilizza uno strumento di terze parti che richiede la ridistribuibilità di Visual C ++ 2005. Lo strumento di terze parti non funzionerà se è installato solo il ridistribuibile VC ++ 2008. Tuttavia, in Visual Studio 2008, i prerequisiti di ClickOnce non consentono di specificare una versione per il ridistribuibile VC ++; aggiungerà un prerequisito di VC ++ 2008, che ha senso la maggior parte delle volte. Tuttavia, in questa situazione, è necessaria una versione precedente. ClickOnce è obbligatorio, quindi i moduli di unione sono fuori discussione. Qualche idea su come specificare la versione?

È stato utile?

Soluzione

Se riesci a trovare un computer con VS 2005 installato, la soluzione non dovrebbe essere troppo difficile. Hai la possibilità di personalizzare ciò che appare nella finestra di dialogo Prerequisiti nella scheda Pubblica del tuo progetto.

  1. Su un computer con VS 2005 installato, vai su \ Programmi \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages e copia la cartella vsredist_x86 sulla macchina da cui pubblichi.
  2. Rinomina la cartella, chiamala vsredist _ x86 <String Name="DisplayName"> 2005 o qualcosa di simile.
  3. All'interno della cartella, modifica il file \ en \ package.xml . Cambia il tag <=> in qualcosa di sensato ( Visual C ++ 2005 Librerie di runtime (x86) ) per differenziarlo dal pacchetto 2008 esistente .
  4. Copia la cartella in C: \ Programmi \ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages .
  5. Riavvia Visual Studio se è aperto.

Ora, quando si apre la finestra di dialogo Prerequisiti, si dovrebbe vedere una nuova voce per il pacchetto 2005. Non ho testato completamente questa soluzione, quindi potrei aver perso alcuni dettagli, ma spero che questo ti inizi.

Altri suggerimenti

Credo che tu possa aprire il file manifest per la tua app e modificare le versioni dei redist che la tua app dovrebbe collegare. Gli elenchi nel manifest devono corrispondere a quelli presenti nelle directory C: \ Windows \ WinSxS. Esiste una pagina CodeProject che fornisce una buona descrizione dell'uso di ridistribuibili diversi.

Ho appena installato Visual Studio 2005. Ecco un bootstrapper originale:

C: \ Programmi \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages \ vcredist_x86 \

\ it \ package.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>

\ product.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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top