2011-10-07 54 views
0

我有一個命令行可執行文件,我通過ClickOnce在網絡上發佈了它。此工具的主要用途是通過Visual Studio作爲外部工具。當我在Visual Studio中進行設置時,我可以將漫遊數據下的快捷方式的命令路徑設置爲我的配置文件。使用ClickOnce exe作爲Visual Studio外部工具

然而,Visual Studio中可解決此的路徑如: C:\用戶\ ME \應用程序數據\本地\應用\ 2.0 \ CGR50YPV.W5E \ RXBXM176.HH8 \ crea..tion_f423fce0316e1dfa_0001.0000_adecafbe6c6acba3 \ MyAppp.exe

因此,如果我啓動exe並獲取新版本,Visual Studio仍然指向舊版本(如上所述)會發生什麼。我可以通過將我的外部工具的命令值重新指向我的exe的快捷方式來解決這個問題,但是這對於處理有點令人沮喪。

如何使這項工作無需每次更新我的命令路徑?

回答

1

您不應該通過exe文件訪問ClickOnce應用程序。如果你打算這樣做,只需將應用程序的\ bin文件夾拷貝到另一臺機器。如果要使用更新功能,則應始終使用快捷方式或通過調用Web服務器上部署清單的鏈接來調用ClickOnce應用程序。 (部署清單是應用程序文件)。您可以在該鏈接上執行一個process.start。

[編輯 - 添加新信息] Ohhhhh,所以你正在訪問用戶配置文件下的文件夾中的快捷方式?我明白了嗎?而不是尋找那一個,你可以指向開始菜單上的快捷方式嗎?如果應用程序在線/離線,它將在用戶安裝應用程序時自動添加一個。使用「選項」對話框中的這些字段,將快捷方式添加到開始菜單中的出版公司/產品名稱的位置。

我這樣做是通過將程序集信息設置爲相同的值並以編程方式檢索程序集信息。我總是將裝配體描述設置爲與產品名稱相同,裝配體公司與出版社相同。然後,我可以這樣做:

Assembly code = Assembly.GetExecutingAssembly(); 
string company = string.Empty; 
string description = string.Empty; 
if (Attribute.IsDefined(code, typeof(AssemblyCompanyAttribute))) 
{ 
     AssemblyCompanyAttribute ascompany = 
      (AssemblyCompanyAttribute)Attribute.GetCustomAttribute(code, 
     typeof(AssemblyCompanyAttribute)); 
    company = ascompany.Company; 
} 
if (Attribute.IsDefined(code, typeof(AssemblyDescriptionAttribute))) 
{ 
    AssemblyDescriptionAttribute asdescription = 
    (AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(code, 
    typeof(AssemblyDescriptionAttribute)); 
    description = asdescription.Description; 
} 
if (company != string.Empty && description != string.Empty) 
{ 
    string shortcutName = 
     string.Concat(Environment.GetFolderPath(Environment.SpecialFolder.Programs), 
     \", company, "\\", description, ".appref-ms"); 
} 

(對不起,我無法弄清楚如何使代碼格式漂亮,正確顯示縮進,但你的想法。)

+0

這就是我做;它解決了EXE的路徑,而不是快捷方式。 –

相關問題