2010-02-18 15 views
10

是否有可能以任何可能的方式添加/更改.application文件(或其他方式)的ClickOnce部署文件,以允許指定參數而不需要通過URL傳遞參數?這個程序集可能會在運行時編譯/重新簽名/ etc,或者另外聲明,我並不擔心我將不得不做的「其他」的界限。ClickOnce中的參數

回答

0

不,我不認爲這可以做到。您可以考慮將參數放在app.exe.config文件中,並在您的應用程序中使用System.Configuration.ConfigurationManager類讀取它們。

更改.config文件的內容後,您可以使用mageui SDK工具重新簽署應用程序和部署清單。

+0

它絕對可以做到。 http://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/ – RobinDotNet 2010-03-26 17:50:37

0

請看看這兩個鏈接,以便真正徹底地分析您從哪個網站啓動clickonce應用程序與應用程序本身之間進行的通信。

的基本技術是動態修改從該應用程序啓動時,Web服務器上的清單文件(S)(請記住,那些清單文件需要在他們改變後重新簽名)。

雖然,它仍然不會允許你通過「參數」本身,你也許能夠通過動態,包括您的應用程序可以在啓動時讀取一個額外的配置文件來模擬「參數」。

2

我上個月向ClickOnce產品小組詢問了這個問題,他們說可以做到。假設您的目標是.NET 3.5 SP-1,則可以將參數傳遞到appref-ms文件(開始菜單中的快捷方式)。

MyApp.appref-ms "my arguments"

然後你就可以使用這個檢索它們:

string[] activationData = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData; 
+1

我寫了一篇博客文章,附有代碼示例,以展示如何做到這一點,以防萬一它對你和其他人有幫助。 http://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/ – RobinDotNet 2010-03-25 04:59:02

0

另一種方法可能是加載您通過Web服務調用(或類似)需要什麼都參數/配置應用程序啓動時向上。

這種方式可以集中控制參數,而不是將它們嵌入到應用程序中。

你總是可以實現某種形式的本地緩存的,如果你不希望每次啓動應用程序時調用Web服務的性能損失。