在我的項目屬性中,我去發佈,選項和文件關聯,並輸入「.cms」,「聯繫人管理文件」,「pqcms」和「1icon.ico」,但是當我發佈並安裝它時似乎沒有關聯這些文件......我希望能夠雙擊該文件並讓它打開該程序,但似乎沒有這樣做。關聯文件的挑戰
我相信如果你以管理員身份運行你的程序,有辦法編輯註冊表,但是我真的需要clickonce來滿足我,因爲我正在最大化這些功能。是不是clickonce應該爲我設置文件關聯?爲什麼不是?
和最終的問題:我可以做什麼,而無需提升管理員權限?
在我的項目屬性中,我去發佈,選項和文件關聯,並輸入「.cms」,「聯繫人管理文件」,「pqcms」和「1icon.ico」,但是當我發佈並安裝它時似乎沒有關聯這些文件......我希望能夠雙擊該文件並讓它打開該程序,但似乎沒有這樣做。關聯文件的挑戰
我相信如果你以管理員身份運行你的程序,有辦法編輯註冊表,但是我真的需要clickonce來滿足我,因爲我正在最大化這些功能。是不是clickonce應該爲我設置文件關聯?爲什麼不是?
和最終的問題:我可以做什麼,而無需提升管理員權限?
您是否添加了處理用戶雙擊該文件所需的代碼?
//Get the ActivationArguments from the SetupInformation property of the domain.
string[] activationData =
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
if (activationData != null)
{
Uri uri = new Uri(activationData[0]);
string fileNamePassedIn = uri.LocalPath.ToString();
//now you have the file name and you can handle it
}
我已經添加了代碼ReadArgsParameterFromCommandLine,如果這就是你的意思。 – Assimilater 2010-06-08 20:40:23
哎呀,錯誤的一個「GetCommandLineArgs」 – Assimilater 2010-06-08 20:41:13
ClickOnce不會像常規[exe]文件那樣接收和處理參數,因此您無法運行[exe]文件並選取參數。如果您只是運行[exe]文件,它不會作爲ClickOnce應用程序運行,即沒有更新,沒有安全檢查等。上面顯示瞭如何在用戶雙擊相關聯時獲取傳入的文件名文件。 – RobinDotNet 2010-06-08 20:42:35
要注意的另一件事。我最初將此代碼(由RobinDotNet提供)轉換爲vb.net。現在我已經將項目轉換爲c#並且遇到了一些有趣的事情。調試時(和我想象如果你選擇讓exe可訪問,而不是單擊一次參考應用程序)「AppDomain.CurrentDomain.SetupInformation.ActivationArguments」爲空(沒有激活參數分配),所以我稍微修改了代碼捕獲這個錯誤。
//Get the ActivationArguments from the SetupInformation property of the domain if any are set.
if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null)
{
string[] activationData =
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
if (activationData != null)
{
Uri uri = new Uri(activationData[0]);
string fileNamePassedIn = uri.LocalPath.ToString();
//now you have the file name and you can handle it
}
}
我還是好奇地管理如何將應用程序與擴展關聯 - 尤其是因爲ClickOne應用保持運動發生意外命名的文件夾(即不是可以被添加到註冊表) – 2010-06-28 15:38:59
轉到屬性頁你的項目。去發佈。轉到選項。轉到文件擴展名。希望這可以幫助。 實際上它是用clickonce文件關聯庫打開的,而不是用你的實際程序打開的。圖書館然後告訴你的程序關於文件。 – Assimilater 2010-06-28 23:00:56