Проект установки Visual Studio 2010 с пакетом обновления 1 (SP1) не устанавливает пакет обновления 1 для библиотек времени выполнения Visual C ++ 2010 - PullRequest
1 голос
/ 14 декабря 2011

Я использую VS 2010 SP1 и создал проект установки VS для установки моего приложения.Мое приложение использует библиотеку DLL, написанную на C ++, поэтому мне нужно включить библиотеки времени выполнения VC ++ 2010.

Один из моих пользователей сообщил об ошибке при запуске моего установщика, и я проследил ее до того факта, что у этого пользователя уже установлена ​​версия SP1 VC ++ 2010 Runtime Library.Мой установщик попытался установить не-SP1 версию, а затем завершил работу, когда увидел, что уже установлена ​​более новая версия (версия SP1).screenshot of error screenshot of error

Я подтвердил, что это источник проблемы здесь: http://social.microsoft.com/Forums/en/crm/thread/db84d4c3-c58e-4ff9-997f-f4e0116bf043 и http://notepad.patheticcockroach.com/1666/installing-visual-c-2010-and-windows-sdk-for-windows-7-offline-installer-and-installation-troubleshooting/

Похоже, что единственный способ для пользователей - этоудалить библиотеку времени выполнения SP1 и затем запустить мой установщик.Очевидно, что это не идеальный вариант, поэтому я ищу лучшее решение.

Единственное, что мне пришло в голову, - это попросить мой проект установки VS вместо этого загрузить библиотеку времени выполнения по ссылке Microsoft SP1 (http://download.microsoft.com/download/C/6/D/C6D0FD4E-9E53-4897-9B91-836EBA2AACD3/vcredist_x86.exe). Я немного волнуюсь, потому что это похоже на взлом. Кто-нибудь есть идеи лучше?

Если это полезно, вот журнал установки от пользователя, который нажал эту ошибку:

The following properties have been set:
Property: [AdminUser] = true {boolean}
Property: [InstallMode] = HomeSite {string}
Property: [ProcessorArchitecture] = AMD64 {string}
Property: [VersionNT] = 6.1.1 {version}
Running checks for package 'Windows Installer 3.1', phase BuildList
The following properties have been set for package 'Windows Installer 3.1':
Running checks for command 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe'
Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsi' and value '3.1': true
Result of checks for command 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe' is 'Bypass'
'Windows Installer 3.1' RunCheck result: No Install Needed
Running checks for package 'Visual C++ 2010 Runtime Libraries (x86)', phase BuildList
Running MsiProductCheck with ProductCode '{196BB40D-1578-3D01-B289-BEFC77A11A1E}'
MsiQueryProductState returned '-1'
Setting value '-1 {int}' for property 'VCRedistInstalled'
The following properties have been set for package 'Visual C++ 2010 Runtime Libraries (x86)':
Property: [VCRedistInstalled] = -1 {int}
Running checks for command 'vcredist_x86\vcredist_x86.exe'
Result of running operator 'ValueGreaterThanEqualTo' on property 'VCRedistInstalled' and value '3': false
Result of running operator 'ValueEqualTo' on property 'AdminUser' and value 'false': false
Skipping FailIf because Property 'Version9X' was not defined
Result of running operator 'VersionLessThan' on property 'VersionNT' and value '5.00': false
Result of checks for command 'vcredist_x86\vcredist_x86.exe' is 'Install'
'Visual C++ 2010 Runtime Libraries (x86)' RunCheck result: Install Needed
Running checks for package 'Microsoft .NET Framework 4 Client Profile (x86 and x64)', phase BuildList
Reading value 'Version' of registry key 'HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client'
Read string value '4.0.30319'
Setting value '4.0.30319 {string}' for property 'DotNet40Client_TargetVersion'
The following properties have been set for package 'Microsoft .NET Framework 4 Client Profile (x86 and x64)':
Property: [DotNet40Client_TargetVersion] = 4.0.30319 {string}
Running checks for command 'DotNetFX40Client\dotNetFx40_Client_x86_x64.exe'
Result of running operator 'ValueEqualTo' on property 'InstallMode' and value 'HomeSite': true
Result of checks for command 'DotNetFX40Client\dotNetFx40_Client_x86_x64.exe' is 'Bypass'
Running checks for command 'DotNetFX40Client\dotNetFx40_Client_setup.exe'
Result of running operator 'ValueNotEqualTo' on property 'InstallMode' and value 'HomeSite': false
Result of running operator 'VersionGreaterThanOrEqualTo' on property 'DotNet40Client_TargetVersion' and value '4.0.30129': true
Result of checks for command 'DotNetFX40Client\dotNetFx40_Client_setup.exe' is 'Bypass'
'Microsoft .NET Framework 4 Client Profile (x86 and x64)' RunCheck result: No Install Needed
Installation of components 'Visual C++ 2010 Runtime Libraries (x86)' was accepted.
Copying files to temporary directory "C:\Users\JAGDISH\AppData\Local\Temp\VSD653B.tmp\"
Downloading files to "C:\Users\JAGDISH\AppData\Local\Temp\VSD653B.tmp\"
(14-12-2011 14:03:32) Downloading 'vcredist_x86\vcredist_x86.exe' from 'http://go.microsoft.com/fwlink/?LinkID=177916&clcid=0x409' to 'C:\Users\JAGDISH\AppData\Local\Temp\VSD653B.tmp\'
Download completed at 14-12-2011 14:05:00
Verifying file integrity of C:\Users\JAGDISH\AppData\Local\Temp\VSD653B.tmp\vcredist_x86\vcredist_x86.exe
WinVerifyTrust returned 0
File trusted
Running checks for package 'Visual C++ 2010 Runtime Libraries (x86)', phase BeforePackage
Running MsiProductCheck with ProductCode '{196BB40D-1578-3D01-B289-BEFC77A11A1E}'
MsiQueryProductState returned '-1'
Setting value '-1 {int}' for property 'VCRedistInstalled'
The following properties have been set for package 'Visual C++ 2010 Runtime Libraries (x86)':
Property: [VCRedistInstalled] = -1 {int}
Running checks for command 'vcredist_x86\vcredist_x86.exe'
Result of running operator 'ValueGreaterThanEqualTo' on property 'VCRedistInstalled' and value '3': false
Result of running operator 'ValueEqualTo' on property 'AdminUser' and value 'false': false
Skipping FailIf because Property 'Version9X' was not defined
Result of running operator 'VersionLessThan' on property 'VersionNT' and value '5.00': false
Result of checks for command 'vcredist_x86\vcredist_x86.exe' is 'Install'
'Visual C++ 2010 Runtime Libraries (x86)' RunCheck result: Install Needed
Verifying file integrity of C:\Users\JAGDISH\AppData\Local\Temp\VSD653B.tmp\vcredist_x86\vcredist_x86.exe
WinVerifyTrust returned 0
File trusted
Installing using command 'C:\Users\JAGDISH\AppData\Local\Temp\VSD653B.tmp\vcredist_x86\vcredist_x86.exe' and parameters ' /q:a '
Process exited with code 5100
Status of package 'Visual C++ 2010 Runtime Libraries (x86)' after install is 'InstallFailed'

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

Я смог решить эту проблему, добавив целевой вывод моей c ++ DLL в проект установки.После того, как я это сделал, проект установки автоматически связал соответствующие библиотеки c ++ с моим установщиком, и теперь все работает нормально.

Первоначальная проблема была вызвана тем, что я вручную проверил «библиотеки времени выполнения C ++» в предварительных условиях проекта установки.

@ Cosmin Pirvu - ваше решение может работать, но это то,Я закончил тем, что делал.

0 голосов
/ 15 декабря 2011

Предопределенные предварительные условия в проектах установки Visual Studio не очень хороши.Тот факт, что они редко обновляются, также является проблемой.

Так что лучшим решением является создание собственной пользовательской предпосылки.Проекты установки Visual Studio не поддерживают создание пользовательских предварительных условий.Однако это можно сделать, вручную создав * требуемые манифесты .

. Эти манифесты можно генерировать автоматически с помощью инструмента генерации манифеста Bootstrapper .

После создания манифестов пакета вы можете добавить все эти файлы (включая пакет) в отдельную папку в папке предварительных требований Visual Studio, например:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages

Таким образом, вы можете выбрать предварительное условие в настройках.страницы свойств проекта.

Ваша пользовательская предпосылка может определять как исходную среду выполнения, так и SP1.Вы можете найти критерии обнаружения SP1 здесь: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...