vb.net使用clickonce应用程序打开自定义文件扩展名

时间:2013-12-30 22:27:10

标签: vb.net

我的程序有两个不同的主要功能。 默认情况下 - 使用.appref-ms(桌面快捷方式)打开程序本身会以正常模式打开程序。

我还创建了.TRA扩展名。使用我的程序打开.TRA文件时,它应该以辅助模式打开程序。 我可以看到我的程序已经注册了.tra扩展名,图标都已更改。 如果我将带有.TRA扩展名的文件拖到调试箱中的.exe文件上,它将在第二种模式下按预期打开。但是,只需双击.TRA文件,它仍然以默认模式打开。

代码设置为查看为.TRA扩展名传递的所有命令行:

For i = 0 To System.Environment.GetCommandLineArgs.Length
            Dim _file = System.Environment.GetCommandLineArgs(i)
            Dim format As String = IO.Path.GetExtension(_file)
            If format = ".TRA" Then
                file = System.Environment.GetCommandLineArgs(i)
                openedwithext = True
                Exit For
            End If
        Next i

我错过了什么? 双击我的.TRA文件没有向我的应用程序发送命令行参数,因为我认为它呢? 怎么可以这样做?

提前致谢。

1 个答案:

答案 0 :(得分:0)

因为.appref-ms的工作方式类似于快捷方式,所以命令行参数的使用方式不同。 我通过添加System.Deployment命名空间并在.loaded事件上使用以下代码解决了问题。

        'Are we launching as a click-once?
        If (IsNetworkDeployed) Then
            Try
                Dim urifile As New Uri(AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData(0))
                Dim uristring As String = urifile.ToString
                If uristring.Contains(".TRA") Then
                    file = uristring.Substring(8) 'Substring removes the - file:///
                    openedwithext = True
                End If
            Catch ex As Exception
            End Try
        End If