2014-09-26 58 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""" 

我的新版本覆盖这些条目,当它安装并且一切正常。