Vb.net 关联文件的挑战
在我的项目属性中,我进入发布、选项和文件关联,然后输入“.cms”、“联系人管理器文件”、“pqcms”和“1icon.ico”,但当我发布和安装时,它似乎没有关联文件……我希望能够双击该文件并使其打开程序,但它似乎没有这样做 我相信如果你以管理员的身份运行你的程序,有很多方法可以编辑注册表,但是我真的需要clickonce来满足我的要求,因为我正在最大限度地利用这些功能。clickonce不是应该为我设置文件关联吗?为什么不是呢Vb.net 关联文件的挑战,vb.net,file,clickonce,associations,Vb.net,File,Clickonce,Associations,在我的项目属性中,我进入发布、选项和文件关联,然后输入“.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
}
您是否添加了处理用户双击文件所需的代码
//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
}
还有一件事要小心。我最初将此代码(由Robinotnet提供)转换为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
}
}
还有一件事要小心。我最初将此代码(由Robinotnet提供)转换为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
}
}
如果这是您的意思,我已经在ReadArgsParameterFromCommandLine中添加了代码。ClickOnce没有像常规[exe]文件那样接收和处理参数,因此您无法运行[exe]文件并获取参数。如果您只是运行[exe]文件,它不会作为ClickOnce应用程序运行,即没有更新,没有安全检查等。上面显示了当用户双击关联文件时如何传递文件名。我明白了。谢谢当我可以双击它时,我就知道它是否工作了…所以我这样做了吗?你必须将它作为已部署的应用程序运行。因此,添加代码,放入一个消息框,向您显示文件名(或执行您将要执行的操作),部署更新,安装应用程序。然后你应该能够双击文件,它应该选择文件名并执行你让它执行的任何操作。不客气。我很高兴你成功了。这是一个非常酷的功能。如果你是这个意思的话,我已经在ReadArgsParameterFromCommandLine中添加了代码。ClickOnce没有像常规[exe]文件那样接收和处理参数,因此你无法运行[exe]文件并获取参数。如果您只是运行[exe]文件,它不会作为ClickOnce应用程序运行,即没有更新,没有安全检查等。上面显示了当用户双击关联文件时如何传递文件名。我明白了。谢谢当我可以双击它时,我就知道它是否工作了…所以我这样做了吗?你必须将它作为已部署的应用程序运行。因此,添加代码,放入一个消息框,向您显示文件名(或执行您将要执行的操作),部署更新,安装应用程序。然后你应该能够双击文件,它应该选择文件名并执行你让它执行的任何操作。不客气。我很高兴你成功了。这是一个非常酷的功能。我仍然很好奇如何将你的应用程序与一个扩展关联起来——特别是因为ClickOne应用程序一直在移动到不可预知的命名文件夹(即,不能添加到注册表的文件夹)去你的项目的属性页。去出版。转到选项。转到文件扩展名。希望这有帮助。它的实际功能是通过clickonce文件关联库打开,而不是通过实际程序打开。然后,库会告诉您的程序有关该文件的信息。我仍然很好奇如何将您的应用程序与扩展名相关联-尤其是因为ClickOne应用程序不断移动到不可预知的命名文件夹(即,无法添加到注册表的文件夹)中,请转到项目的属性页。去出版。转到选项。转到文件扩展名。希望这有帮助。它的实际功能是通过clickonce文件关联库打开,而不是通过实际程序打开。然后,库会告诉程序有关该文件的信息。