9

Przysięgam, że im więcej "ewoluuje" Visual Studio, tym bardziej nieświadomy stanie się cały proces.BadImageFormatException x64 Issue

Mam usługę Windows z 3 bibliotekami klasy w nim. Poszedłem do właściwości dla każdej biblioteki klas i ustawiłem platformę docelową na x64. Zrobiłem to samo w usłudze systemu Windows, a także w projekcie konsoli testowej, który dodałem, aby zweryfikować wszystko.

Mogę uruchomić aplikację konsoli na moim serwerze Windows 2008 R2 x64 bez żadnych problemów, ale głupi instalator ciągle bombarduje i mówi mi, że mam zły obraz. Upewniłem się, że ustawiłem docelową platformę instalatora na x64.

Nie mam pojęcia, że ​​ta głupia rzecz zbombarduje i naprawdę doceni wszelkie spostrzeżenia. Odwołuję się do innych bibliotek DLL i może to być x86, ale pomyślałem, że jeśli główne biblioteki zostały poprawnie ustawione, to wszystko działałoby ...

+4

Możesz chcieć obejrzeć słowa, których używasz do opisania tego problemu, ponieważ jest to całkowicie możliwe, że jest to błąd z Twojej strony, a nie wszystko, co jest winą Microsoftu. –

+1

Wygląda na to, że ktoś ma niedopasowanie architektury ... –

+0

Odkąd pracuję z technologią MS od wczesnych lat 90-tych, uważam, że mam kwalifikacje potwierdzające jej gwałtowny spadek ogólnej użyteczności. –

Odpowiedz

20

W końcu to rozgryzłem - nie ma to nic wspólnego z architekturą, referencjami ani żadnymi innymi nonsens i wszystko, co należy zrobić z samym instalatorem. Jak wyjaśnia ten artykuł - http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx - instalator Visual Studio domyślnie używa 32-bitowej biblioteki DLL i to właśnie powoduje awarie.

Aby rozwiązać ten problem, należy wykonać następujące kroki:

  1. upewnić się, że idziesz do Właściwości => Zbuduj kartę dla każdego projektu i ustawić platformy docelowej do x64
  2. Kliknij na nazwę projekt instalacji, a następnie Właściwości i upewnij się, że docelowa platforma to x64
  3. Zbuduj swoje rozwiązanie - jeśli rozwiązanie nie zostanie skompilowane, kliknij prawym przyciskiem myszy i Zwolnij projekt, a następnie załaduj Porject dla projektów, których odwołania się nie powiodą.
  4. idź do http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=3138 oraz pobrać i zainstalować 7.0 instalator SDK
  5. Przejdź do katalogu C: \ Program Files (x86) \ Microsoft SDK folderze \ Windows \ v7.0A \ Bin i zainstalować Orca poprzez dwukrotne kliknięcie na Orca msi file
  6. Run Orca i otwórz folder, MSI Twojego projektu
  7. Wybierz Binary tabeli
  8. dwukrotnie kliknąć komórkę [Dane binarne] dla rekordu InstallUtil
  9. Upewnij „Czytaj binarnego z pliku” wybiera
  10. Kliknij przycisk Przeglądaj na przejdź do C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319
  11. Select InstallUtilLib.dll
  12. Kliknij przycisk Otwórz, a następnie przycisk OK

to jest to - zapisz plik MSI w aplikacji Orca, a następnie ją wdrożyć - instalacja x64 powinna działać bez dalszych problemów.

+6

Nawiasem mówiąc, dziękuję za głosowanie w dół MS dzieci - jest to uzasadniony problem wraz z wieloma innymi problemami stwardnienia rozsianego i fakt, że nie można znieść wiarygodnej krytyki mówi wiele o sobie. –

+2

Dzięki Ken, wreszcie działające rozwiązanie. Mam pytanie. Czy byłoby to możliwe automatycznie jako wydarzenie pocztowe? Ręczne robienie tego przez dziesiątki instalatorów onf każdego wydania jest czasochłonne ... – KenGey

+0

[Orca 5.0.7693.0 (2.1MB)] (http://goo.gl/EOCZi) bez całego SDK z [narzędzia Orca 5 - msi do edycji dla Windows 7] (http://myserverissick.com/2011/04/orca-5-msi-editing-tool/) –