2013-10-10 23 views
7

Mam aplikację .NET, która została zbudowana na Framework 2.0.[nazwa programu] .exe przestał działać

  • Zbudowałem dla niego instalator i próbuję uruchomić go na komputerze z 3.5.
  • Wszystkie odpowiednie środowiska są w systemie Windows 7
  • Aplikacja działa doskonale w trybie debugowania VS na mojej maszynie programistycznej, która ma również framework 3.5.
  • Instalator działa dobrze zarówno na moim komputerze rozwoju i komputerze użytkownika
  • Po instalacji, uruchamiając program natychmiast skutkuje „[nazwa programu] .exe przestał działać” bez dalszych informacji
  • miałem użytkownikowi spróbuj zainstalować system Framework 2.0, ale został zablokowany przez "musisz użyć okna dialogowego włączania/wyłączania funkcji"
  • Sprawdziłem kilka innych rzeczy, takich jak DEP, ustawienie zespołu w trybie zgodności z Windows 7 i tak dalej
  • Nie sądzę, że jest to konkretny błąd w aplikacji, ponieważ ma ekran powitalny, który wyświetla obraz jpeg przed wykonaniem jakiegokolwiek coś jeszcze, a nawet to się nie pojawia; Wygląda na to, że musi to być ogólny problem ze zgodnością.

Nie mam pojęcia, co dalej robić. Mam nadzieję, że ktoś może przynajmniej zaproponować sposób dla mnie, aby uzyskać dodatkowe informacje o błędach podczas uruchamiania .exe, więc mogę wskazać problem.

Z góry dziękuję.

Mike

EDIT 1

Oto znalazłem błąd w dzienniku zdarzeń:

Log Name:  Application 
Source:  Application Error 
Date:   10/10/2013 1:42:49 PM 
Event ID:  1000 
Task Category: (100) 
Level:   Error 
Keywords:  Classic 
User:   N/A 
Computer:  [my development machine] 
Description: 
Faulting application name: BARTJr.exe, version: 1.0.0.1, time stamp: 0x5256e6de 
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18229, time stamp: 0x51fb1677 
Exception code: 0xe0434f4d 
Fault offset: 0x000000000000940d 
Faulting process id: 0x%9 
Faulting application start time: 0x%10 
Faulting application path: %11 
Faulting module path: %12 
Report Id: %13 
Event Xml: 

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
    <System> 
    <Provider Name="Application Error" /> 
    <EventID Qualifiers="0">1000</EventID> 
    <Level>2</Level> 
    <Task>100</Task> 
    <Keywords>0x80000000000000</Keywords> 
    <TimeCreated SystemTime="2013-10-10T17:42:49.000000000Z" /> 
    <EventRecordID>19455</EventRecordID> 
    <Channel>Application</Channel> 
    <Computer>mcaputow7.ezesoft.net</Computer> 
    <Security /> 
    </System> 
    <EventData> 
    <Data>BARTJr.exe</Data> 
    <Data>1.0.0.1</Data> 
    <Data>5256e6de</Data> 
    <Data>KERNELBASE.dll</Data> 
    <Data>6.1.7601.18229</Data> 
    <Data>51fb1677</Data> 
    <Data>e0434f4d</Data> 
    <Data>000000000000940d</Data> 
    </EventData> 
</Event> 

EDIT 2

Błąd odwołuje się do pliku tymczasowego z dodatkową informacją. Oto treść tego pliku:

<?xml version="1.0" encoding="UTF-16"?> 
<WERReportMetadata> 
    <OSVersionInformation> 
     <WindowsNTVersion>6.1</WindowsNTVersion> 
     <Build>7601 Service Pack 1</Build> 
     <Product>(0x1): Windows 7 Ultimate</Product> 
     <Edition>Ultimate</Edition> 
     <BuildString>7601.18113.amd64fre.win7sp1_gdr.130318-1533</BuildString> 
     <Revision>1130</Revision> 
     <Flavor>Multiprocessor Free</Flavor> 
     <Architecture>X64</Architecture> 
     <LCID>1033</LCID> 
    </OSVersionInformation> 
    <ProblemSignatures> 
     <EventType>CLR20r3</EventType> 
     <Parameter0>ssms.exe</Parameter0> 
     <Parameter1>2011.110.2100.60</Parameter1> 
     <Parameter2>4f35e2d9</Parameter2> 
     <Parameter3>System.Management</Parameter3> 
     <Parameter4>4.0.0.0</Parameter4> 
     <Parameter5>4ba1e140</Parameter5> 
     <Parameter6>d0</Parameter6> 
     <Parameter7>1c</Parameter7> 
     <Parameter8>RXOEJIH3RSKJEZ4XXWPXUDKCPPWJODNG</Parameter8> 
    </ProblemSignatures> 
    <DynamicSignatures> 
     <Parameter1>6.1.7601.2.1.0.256.1</Parameter1> 
     <Parameter2>1033</Parameter2> 
     <Parameter22>0a9e</Parameter22> 
     <Parameter23>0a9e372d3b4ad19135b953a78882e789</Parameter23> 
     <Parameter24>0a9e</Parameter24> 
     <Parameter25>0a9e372d3b4ad19135b953a78882e789</Parameter25> 
    </DynamicSignatures> 
    <SystemInformation> 
     <MID>BAB83330-1394-44F8-8298-044776CE31CB</MID> 
     <SystemManufacturer>Microsoft Corporation</SystemManufacturer> 
     <SystemProductName>Virtual Machine</SystemProductName> 
     <BIOSVersion>090004</BIOSVersion> 
    </SystemInformation> 
</WERReportMetadata> 
+0

Czy jest coś w dzienniku zdarzeń? – Andrew

+0

@Andrew, tak. To pokazuje następujące: Błąd nazwę modułu: KERNELBASE.dll, wersja: 6.1.7601.18229, sygnatura czasowa: 0x51fb1677 kod Wyjątek: 0xe0434f4d google kod wyjątku i znaleźć kogoś mówić o problemie z wersjami. Zmieniłem wersję z 1 na 2, więc próbowałem ją zmienić, ale ten sam problem. – eequalsmcaputo

+2

btw, dlaczego to zostało odrzucone? Spędziłem wiele godzin na rozwiązywaniu problemów i zbadanie tego przed opublikowaniem. – eequalsmcaputo

Odpowiedz

0

mam doświadczenie to wiele razy, i za każdym razem to, ponieważ komputer docelowy nie posiada Zgromadzenie (DLL), która odwołuje się do mojego wniosku. Gdy aplikacja odwołuje się do zestawu, który jest potrzebny od razu, np. zanim pojawi się formularz startowy (dla projektu formularzy wygranych), nastąpi awaria w ten sposób.

W każdym razie nie obiecuję, że to twoja odpowiedź, ale jest to coś, na co warto zwrócić uwagę.

+0

Czy może to być wersja ramowa? Wszystkie odnośniki .dll są obecne w folderze bin po wdrożeniu, z wyjątkiem plików frameworka. – eequalsmcaputo

+0

Prawdopodobnie. Czy wiesz na pewno, że .NET 2.0 istnieje na komputerze docelowym? –

+0

Tak, właśnie sprawdziłem, a na obu maszynach są odpowiednie wersje, więc nie przejmuj się tym pomysłem. – eequalsmcaputo

3

Rozwiązany. W końcu pomyślałem, aby spróbować "Uruchom jako administrator", co pozwoliło mi zobaczyć rzeczywisty błąd, który się pojawił. Nie ma sensu, aby uprawnienia administratora były wymagane do wyświetlenia nieobsługiwanego okna wyjątku .NET, ale jest.

0

Umieść poniższy kod w swoim enterpoint (Główny) pierwsza To może przechwytywać wyjątku przed katastrofą

AppDomain.CurrentDomain.UnhandledException += (sender,e)=>{ 
    if(e.IsTerminating) 
    { 
     //TODO: write your log 
    } 
}; 
0

wymyśliłem tej kwestii właśnie teraz i uważam, że to strata jakiegoś dll, które doprowadziły do problemu. Zmusiłem do zakończenia aktualizacji aplikacji i myślę, że to może być przyczyną utraty.

Powiązane problemy