2014-01-26 23 views
0

我想提出一個「簡單」的程序按鈕點擊做到這一點:vb.net文件路徑引起轟然發表EXE

Private Sub Button4_Click(sender As Object, e As EventArgs) 
    Dim proc As New System.Diagnostics.Process() 

    proc = Process.Start("resources\navcoder.exe", "") 
    proc.WaitForExit() 
End Sub 

在Visual Studio中進行測試時,所有工作正常,但沒有一次我發佈和安裝即使資源文件夾位於安裝目錄中。

,如果我將其更改爲:

proc = Process.Start("c:\resources\navcoder.exe", "") 

它工作正常,但我需要obviuosly在它所需的文件有文件夾在那裏。

我在做什麼錯?

回答

1

很多人似乎沒有意識到什麼是資源。將項目資源添加到項目中的重點是將其中包含的數據編譯到您的EXE中。項目中的Resources文件夾只是存儲原始源文件的地方。就應用而言,它不存在,就像VB源代碼文件不存在一樣。當您構建項目時,這些資源中的數據將被編譯到您的EXE中,以便它們不再是文件,並且不能再用作文件。

這就是爲什麼你不會將其他EXE文件作爲資源嵌入的原因。您可以提取資源並將其保存爲文件,但我會建議您不要這樣做。向您的項目添加一個新文件夾,並將EXE文件和任何依賴項添加到該文件夾​​,並將其「生成操作」設置爲「內容」。然後它們將被按原樣複製到您的輸出文件夾中。然後您可以執行EXE文件,因爲它是一個EXE文件。您還應該使用Application.StartupPath作爲文件路徑的根目錄,而不是依賴當前目錄作爲您認爲的目錄。

+0

非常感謝,它的工作 – user1505181

0

你應該經常檢查是否存在,如果它的一個web應用程序會在全局asax的應用程序啓動時執行此操作。如果您在不同的用戶帳戶下運行此操作,請檢查該帳戶是否具有權限。否則,即使該目錄存在,如果它不能訪問它或沒有執行文件的權限,它將會失敗。

如果您給出實際的例外情況,可以告訴您更多信息。 I.e未經授權或不存在。