2010-08-23 69 views
0

我需要我的應用程序(主)在特定事件上運行另一個應用程序(Worker)。運行「應用程序參考」

如果我將我的Worker應用程序作爲標準可執行文件分發,那麼一切都很好,我可以毫無問題地使用Process.Start並愉快地傳入參數並調用WaitForExit。

如果分發我工作者應用的ClickOnce應用程序,它創建了一個應用程序引用,這是我可以用的Process.Start啓動(一旦我把它的一個副本在同一目錄作爲我Master.exe)但我不能傳遞它的參數或使用WaitForExit。

我希望能夠同時做到這兩點。我懷疑調用參考啓動該工人可執行實際運行另一個程序

我的代碼:

// This works as I expect, and returns a valid Process. 
Process p0 = Process.Start("Worker.exe", "DoSomeMagic"); 
// This seems to work, but returns null. 
Process p1 = Process.Start("Worker.appref-ms"); 
// This also returns null, but does not pass the argument to Worker. 
Process p2 = Process.Start("Worker.appref-ms", "DoSomeMagic"); 

我的問題:

我怎麼做這個「正常」?

回答

1

默認情況下,ClickOnce應用程序不允許傳遞命令行參數(或者,在他們的情況下,參數是查詢字符串)。您需要在清單文件中配置適當的選項以允許它們,但即使如此,仍有幾個需要注意的注意事項。整個ClickOnce平臺對應用程序的執行方式以及它們如何啓動施加了一些非常惡劣的限制。當然,這都是在安全的幌子下,但我個人認爲這是短視。

有關如何將參數傳遞給ClickOnce應用程序的更多信息:http://msdn.microsoft.com/en-us/library/ms172242.aspx