0

我有一個小門戶I'm寫作,這個門戶網站應該發動按鈕點擊安裝。我正在使用VS2010在WinXP SP3工作站上開發,在這臺機器上,即使是編譯和發佈,一切都按預期工作。但是,當我在Windows 7中運行編譯的應用程序時,它崩潰了......應用程序工作,它只是當我點擊程序安裝按鈕時崩潰。在Windows 7上WPF應用程序崩潰

編程看起來是這樣的:

private void button_access_Click(object sender, RoutedEventArgs e) 
    { 


     Process executable = new Process(); 
     string executablePath = "D:\\Visual Studio 2010\\SAFE_Portal1\\SAFE_Portal1\\Extra Programs\\AccessRT2003.exe"; 
     executable.StartInfo.FileName = executablePath; 
     executable.Start(); 


    } 

它THR button_access_Click程序專門崩潰......

任何想法,這可能是爲什麼? I`ve試圖尋找在這裏的#1,和其他論壇,但都無濟於事......

任何幫助或方向岡茨歡迎!

+0

您可以將try catch塊添加到該代碼並輸出異常消息和堆棧跟蹤。 –

+0

嘿,謝謝你的回覆! 我加了try catch,結果失敗了,因爲找不到指定的文件。指定的文件位置始終存在於我的XP機器中。這意味着我的XP機器上「d:\\的Visual Studio 2010 \\ \\ SAFE_Portal1 \\ SAFE_Portal1額外的程序\\ AccessRT2003.exe」始終存在,所以,當我的應用程序轉移到win7的,那臺機器上AP顯然是不當下。 問題是,從來就增加了.exe文件到我的解決方案,但我還沒#牛逼想出如何在.EXE文件鏈接,以便它指定的解決方案的文件...任何aideas? – SlickD

+0

在我的圖片,我也加入到我的解決方案,我可以按以下聯繫他們: 「圖片\ image1.jpg」 但因爲程序文件路徑,需要雙斜槓\\,我不確定如何指定它... – SlickD

回答

0

試試這個:

try 
{ 
    Process executable = new Process(); 
    string executablePath = "D:\\Visual Studio 2010\\SAFE_Portal1\\SAFE_Portal1\\Extra Programs\\AccessRT2003.exe"; 
    executable.StartInfo.FileName = executablePath; 
    executable.Start(); 
} 
catch (Exception msg) 
{ 
    MessageBox.Show(msg.Message); 
} 

你得到什麼信息?

你確定你想在你的應用程序中使用固定的路徑?如果是這樣,你至少應該檢查你試圖啓動的文件是否存在。否則會引發異常,這可能是此處的問題。

if (File.Exists(executablePath)) 
{ 
    ... 
} 
+0

是的,這就是我剛纔意識到的問題,固定的路徑導致它。在我的解決方案中,我添加了這些文件,我如何告訴c#我想要的文件位於解決方案文件夾中? 在我的解決方案文件夾,它了一個名爲額外的程序文件夾中,當我編譯和發佈,該文件夾與它一起去... – SlickD

+0

您可以使用System.Reflection.Assembly.GetExecutingAssembly()的位置來獲得應用程序的路徑。然後使用System.IO.Path.Combine來建立你的文件名。我在公共汽車上寫了這個內存,所以要警告。) – Amenti

相關問題