2012-12-18 173 views
1

我已經爲Visual Studio項目創建了安裝文件。這些是通過將項目輸出添加到安裝項目中創建的。從而包含所有的DLL文件和項目本身。安裝時應用程序崩潰

當應用程序安裝在用於開發它的機器上時,它工作正常。但是,當它安裝在另一臺安裝了全新Windows的計算機上時(安裝了.NET Framework 4.0),應用程序在啓動時崩潰 - 它甚至不啓動。

有沒有人知道爲什麼會發生這種情況?

+1

通常是因爲你沒有包含所有的dll。應用報告是否有錯誤? –

+0

可能是很多事情。數據庫連接,無效的配置文件,缺少一個程序集。事件查看器中的外觀可以回答很多問題。此外[Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653)在這裏可能會有很大的幫助。 – Steve

+0

你能告訴我們它是什麼樣的應用程序 - WPF,WinForms,控制檯應用程序,網站等?根據應用程序的類型,應該有一些機制來捕獲或至少確定導致應用程序崩潰的異常。 – KenD

回答

0

得到什麼崩潰的線索,你可以用下面的Program.cs中(或在main()函數)內的捕獲處理異常:

 static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) 
     { 
      MessageBox.Show(e.Exception.Message, "Unhandled Thread Exception"); 
      // here you can log the exception ... 
     } 

     static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
     { 
      MessageBox.Show((e.ExceptionObject as Exception).Message + 
       "\r\n\r\nStack Trace:" + 
       (e.ExceptionObject as Exception).InnerException.StackTrace, "Unhandled UI Exception"); 
      // here you can log the exception ... 
     } 

這些消息會給你一些線索。你也應該檢查事件日誌,你可能會發現一些有用的信息。

0

我首先看的是Windows事件日誌。很有可能將崩潰的原因寫入應用程序事件日誌。

你可以嘗試用DispatcherUnhandledException捕捉所有未處理的異常:

public partial class App : Application 
{ 
    void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 
    { 
     // Process unhandled exception 

     // Prevent default unhandled exception processing 
     e.Handled = true; 
    } 
} 

有了這一點,你可以添加一小段代碼編寫異常日誌文件,或一個MessageBox。