Specifica di una versione ridistribuibile di VC ++ per il prerequisito di ClickOnce
-
02-07-2019 - |
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?
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.
- 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.
- Rinomina la cartella, chiamala vsredist
_
x86<String Name="DisplayName">
2005 o qualcosa di simile. - 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 .
- Copia la cartella in C: \ Programmi \ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages .
- 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