2014-09-26 56 views
0

我正在尋求擺脫使用ClickOnce來部署我的.net應用程序。目前我使用InnoSetup作爲包裝,因此我可以爲用戶分發單個可執行文件。這對我們的第一個版本來說工作得很好 - ClickOnce處理文件關聯並確保安裝正確的.net框架 - 這很好。如何使用InnoSetup複製ClickOnce文件關聯?

但是現在我們正在考慮發佈更新,並發現我們的新版本安裝在舊版本(舊版本保留了文件關聯)。如果先卸載舊版本然後一切正常,但是,目前這個過程是手動的(用戶必須進入控制面板並卸載它)。我已經有一個問題here與此問題有關,但由於沒有答案即將出現,我期待看看我是否得到InnoSetup來處理所有事情(包括卸載)。

我已經找到了應該幫助我複製.net框架檢查並使用InnoSetup進行安裝的示例。現在我只需要一些能夠明確顯示如何創建ClickOnce創建的文件關聯條目的東西。任何人都可以在這裏指出我正確的方向嗎?我知道InnoSetup可以創建/編輯註冊表條目(這裏有多個問題),我想知道具體哪些我需要創建和在哪裏。

回答

1

事實證明,這是一個沒有道理的一點。 InnoSetup文檔here描述了這個過程,它是相對無痛的。我曾經覺得ClickOnce已經失敗了,並且做了一些其他的「魔術」,但事實並非如此。

[Setup] 
ChangesAssociations=yes 

[Registry] 
Root: HKCR; Subkey: ".myextension"; ValueType: string; ValueName: ""; ValueData: "MyProgName"; Flags: uninsdeletevalue 
Root: HKCR; Subkey: "MyProgName"; ValueType: string; ValueName: ""; ValueData: "File Type Description"; Flags: uninsdeletekey 
Root: HKCR; Subkey: "MyProgName\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\MyProgName.exe,0" 
Root: HKCR; Subkey: "MyProgName\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\MyProgName.exe"" ""%1""" 

我的新版本覆蓋這些條目,當它安裝並且一切正常。

相關問題