2013-05-09 26 views
9

Używam Visual Studio 2012 Professional i tworzenie instalatora za pomocą zaawansowanego instalatora (3rd party)..exe nie jest prawidłową aplikacją Win32 w systemie Windows XP

Kiedy uruchomić zainstalowaną .exe w systemie Windows XP, pojawia się następujący komunikat:

<appName> .exe nie jest prawidłową aplikacją systemu Win32.

zainstalowanego wykonywalny działa dobrze zarówno na Windows 7 i 8.

Jak mogę uzyskać program do pracy w systemie Windows XP?

+0

Prawdopodobnie szukają platformy .NET 4.5, której nie ma na komputerze Win XP. –

+1

@AlexBell Być może, lub może to być problem z architekturą. Czy ten plik .exe został skompilowany jako x86 lub x64? – Adrian

+0

Jeśli to możliwe, ponownie przydziel swoją aplikację do korzystania z programu Net Framework 4.0 – Steve

Odpowiedz

16

Od Visual Studio wiersza polecenia uruchom polecenie:

Dumpbin.exe /headers c:\where\you\put\it\setup.exe 

Gdzie „setup.exe” jest konfiguracja EXE stworzony przez twórcę instalatora. wyślę przykład informacji widać, że liczy się tutaj: numer wersji

OPTIONAL HEADER VALUES 
      10B magiC# (PE32) 
      ... 
      4.00 operating system version 
      0.00 image version 
      6.00 subsystem version    // <=== here!! 
       0 Win32 version 
      ... 

Podsystem jest ważne. VS2012 to pierwsza wersja programu Visual Studio, która zaczęła ustawiać tę wartość na 6.00, numer wersji systemu Vista. Poprzednie wersje, a także VS2012, gdy kierujesz się na .NET 4.0 lub wcześniejszy, ustawią ten numer wersji na 4.00

Jest to poza tym ważny krok naprzód i część wycofywania wsparcia dla XP. Windows wersja 6.00 i nowsze, Vista, Win7 i Win8 zwracają uwagę na ten numer. Przyjmą, że Twój program nie jest świadomy późniejszych funkcji systemu Windows i musi mieć włączonych kilka podkładek appcompat. Najbardziej godna uwagi jest appcompat w Aero, motyw komputera, który wyświetla okna z grubymi obramowaniami, które można łatwo kliknąć myszą. Windows będzie kłamał na temat tych granic, informując, że twoje okno jest mniejsze niż w rzeczywistości. Doskonałe źródło nieporozumień dla programistów, którzy starają się, aby okna ze sobą współgrały.

Konsekwencją wyświetlenia wartości 6,00 jest brak możliwości uruchomienia programu instalacyjnego w systemie XP. To jest wersja 5.02.

Tak więc najpierw upewnij się, że robisz , a nie docelową .NET wersja 4.5, nie jest dostępna dla XP. Zamiast tego użyj wersji 4.0. Jeśli nadal masz problemy, skontaktuj się ze wsparciem sprzedawcy i poproś o kontrolę nad tym numerem w pliku setup.exe, który tworzy narzędzie. Rozwiązaniem jest uruchomienie Editbin.exe z opcją/SUBSYSTEM w celu zmiany numeru.

+0

Korzystając z systemu Windows Server 2012, uznałem, że plik editbin.exe jest nieprzydatny. W moim rozwiązaniu, używając IExpress.exe (wersja system32), pakuję plik Install.msi wewnątrz pliku setup.exe z frameworknet40. Chociaż każdy plik dll jest kompilowany za pomocą x86, w tym Install.msi, IExpress ustawia maszynę jako x64 (wynika z WARTOŚCI NAGŁÓWEK PLIKÓW w dumpbin.exe). Dopiero gdy użyłem IExpress.exe na 32-bitowym komputerze Win XP, udało mi się stworzyć poprawny plik setup.exe. – JDennis

0

Jestem całkiem nowy w Visual Studio, więc nie jestem pewien, czy poniżej dodano opcję niedawno, ale Visual Studio 2013 ma opcję kompatybilności wstecznej w celu włączenia Win_XP na liście docelowej. Poniższy obraz pomaga:

Visual Studio Configuration


A potem kiedy uruchomić komendę dumpbin, mam wyniki poniżej.

enter image description here


Więc teraz aplikacji, w normalnych warunkach, można uruchomić w systemie Windows XP.
Mam nadzieję, że to jest pomocne.

+1

Obrazy brakujące !!! –

+0

@VidiyaPrasanth: Nie jestem pewien, co miałeś na myśli ;-) Widziałem, że są krystalicznie czyste. – sjsam

+0

Dzięki, pomogło mi to (zbudowanie małego exe na bazie C). Może mógłbyś edytować swoją odpowiedź, aby wyjaśnić ustawienie w tekście, na wypadek, gdyby ktoś nie mógł zobaczyć obrazów. –