ClickOnce部署 - 文件关联未注册

Kev*_*ang 9 c# deployment clickonce file associations

所以这里是问题的简要总结:

摘要:

我设置了ClickOnce应用程序的fileAssociations,但是,当我运行/更新我的程序时,它们没有注册(因为,我试图关联的.bvr文件没有图标,我不能双击它们来启动我的应用程序).

额外信息:

我首先尝试转到属性 - >发布 - >选项 - >文件关联,然后从那里设置我的关联.尝试失败后,我尝试直接在app.manifest中设置它:

<fileAssociation
xmlns="urn:schemas-microsoft-com:clickonce.v1"
extension=".bvr"
description="Behavior File"
progid="GGS.Behavior"
defaultIcon="bvrico.ico"
/>
Run Code Online (Sandbox Code Playgroud)

我读过这么多关于此的文章,我开始感到沮丧.一些信息:

  1. 我已将其设置为完全信任的应用程序(在安全性下 - >启用ClickOnce安全设置 - >这是一个完全信任的应用程序)
  2. 我使用的是.NET 4.0和Visual Studio 2010
  3. 启用"离线"模式

我也处理通过AppDomain传递的数据,但我怀疑这真的改变了什么.

我想知道文件关联只能在安装时设置.

无论如何,我真的很感激这个问题的一些见解.我真的很喜欢我的项目中的文件关联.

提前谢谢大家.

PS:在Windows XP和Windows 7上测试过.

编辑:我也在微软发布了这个,顺便说一句.

http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/d610cd55-f3c7-4775-a417-251261832200

如果有人想在那里发布答案.我真的无法想出这个.:d

小智 6

如果您尝试注册的文件类型先前已在其他程序(如记事本)中注册,或者甚至在记事本中打开,那么我发现使其工作的唯一方法是从注册表中删除2个位置的文件类型,以及然后重新启动 之后发布您的应用程序的更新,如果它的那种问题你的状态良好.

HKEY_CURRENT_USER \软件\微软\的Windows\CurrentVersion\Explorer中\ FileExts\.bvr

HKEY_CLASSES_ROOT\.bvr

重启

发布您应用的更新.


Sas*_*nig 0

ClickOnce 不会以通常的方式传递命令行参数,而是通过

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
Run Code Online (Sandbox Code Playgroud)

因此,在应用程序启动时,您需要检查它是否包含任何字符串,并相应地修改您的启动行为。

这是因为 ClickOnce 应用程序是通过服务器上的部署清单启动的,而不是通过 .exe 启动的。顺便说一句:通过“属性”->“发布”->“选项”->“文件关联”设置文件关联应该可以正常工作。

编辑:(我如何创建示例应用程序)

  • 创建 Windows 窗体应用程序
  • 激活 ClickOnce-安全设置,选择完全信任的应用程序
  • 在 ClickOnce 选项 -> 描述中,设置发布者、套件和产品名称
  • 在 ClickOnce 选项 -> 文件关联中添加新扩展名
  • 发布应用程序,安装应用程序,测试打开文件时启动的情况(确实如此)

所有未提及的设置都没有被触及......这就是我所做的一切!

看起来这正是您所做的 - 也许尝试创建一个简单的测试应用程序,看看它是否适合您。由于此答案并不能真正回答您的问题,请在完成后告诉我,以便我可以将其删除。