2011-10-29 18 views
6

Używam projektu instalacji Visual Studio. Jeśli przejdę do właściwości projektu instalacji, to pozwala mi wybrać, które wymagania wstępne są wymagane, w którym momencie wybieram Redystrybucyjny C++.Dołączenie C++ jako wstępnego żądania, ale mówi "Nowa wersja już istnieje"

W niektórych systemach działa to dobrze - ale ostatnio moi użytkownicy zgłaszają, że instalacja nie powiodła się, ponieważ "Na komputerze wykryto nowszą wersję redystrybucji Microsoft Visual C++ 2010".

Jaki jest właściwy sposób na zrobienie tego? Czy wykrywanie programu Visual Studio jest jakoś nieczytelne i nie może wykryć C++?

Odpowiedz

1

Domyślny Redystrybucyjny Visual C++ 2010 wykorzystuje kod produktu do wykrywania. Tak więc Redystrybucja Visual C++ 2010 SP1 nie zostanie wykryta jako zainstalowana. Dlatego pakiet próbuje go zainstalować i się nie powiedzie.

Dobrym rozwiązaniem jest stworzenie własnych wymagań wstępnych, które wykorzystują lepsze kryteria wykrywania. Oto artykuł, który może ci pomóc: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx

Projekty konfiguracji Visual Studio nie obsługują niestandardowego tworzenia wymagań wstępnych. Można to jednak zrobić, ręcznie generując wymagane manifesty.

można znaleźć strukturę manifestuje tutaj: http://msdn.microsoft.com/en-us/library/ms229223(VS.80).aspx

te manifesty mogą być generowane automatycznie za pomocą narzędzia Bootstrapper Manifest Generator.

Po wygenerowaniu manifesty pakietów, można dodać wszystkie te pliki (w tym pakiecie) w osobnym folderze w folderze Wizualnej warunki wstępne Studio, na przykład:

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

ten sposób Visual Studio pokaże warunek na stronie właściwości projektu instalacji.

4

Fuj, to jest brzydkie. Zastanawiam się, co by się stało, gdyby Microsoft zrezygnował z równoległej instalacji bibliotek uruchomieniowych dla VS2010. Wydaje się jasne, że interwebs jest pełny tego błędu instalatora. Największą ofiarą wydaje się być sama Microsoft, której nie można zainstalować w Streets and Maps.

Nie znam żadnych łatek bezpieczeństwa, więc muszę się domyślić, że nie zaktualizowałeś jeszcze do SP1. A Twoi klienci używają produktu dostawcy, który to zrobił. To jest walka, którą zawsze stracisz pewnego dnia. Rozważ skorzystanie z lokalnego wdrożenia aplikacji dla bibliotek DLL, kopiując je w tym samym katalogu, co główny plik EXE. Po prostu skopiuj je z katalogu vc/redist przed umieszczeniem pakietu instalacyjnego w jednym miejscu, bez konieczności zaznaczania wymagań wstępnych. Będziesz potrzebować:

  • msvcr100.dll i msvcp100.dll dla zwykłego CRT
  • atl100.dll jeśli używasz ATL
  • mfc100.dll, mfc100u.dll, mfcm100.dll, mfc100u.dll jeśli używasz MFC (u = Unicode, m = managed)
  • mfc100xxx.dll gdzie xxx jest 3-literowym kodem języka, jeśli używasz MFC na maszynie innej niż angielska
  • vcomp100.dll, jeśli używasz OpenMP w kodzie .

Jedyną wadą jest to, że nie zostaną zaktualizowane, jeśli istnieje poprawka zabezpieczeń. To też może być zaletą, w zależności od tego, jakie kolorowe okulary nosisz.Jeśli nie podoba Ci się to, to ważne jest utrzymanie maszyny, która tworzy pakiet instalacyjny zaktualizowany, w tym włączenie usługi Windows Update.