2

我有一个 ClickOnce 部署的应用程序,我想从 VBScript 启动,类似于在以下示例中启动 Microsoft Word:

Dim word
Set word = CreateObject("Word.Application")
word.Visible = True

问题是我不知道将什么参数传递给CreateObject函数来启动我的应用程序。我在哪里可以找到安装在我的 PC 上的应用程序的主列表/调用以启动它们的快捷方式?

4

2 回答 2

2

ClickOnce 根本就不是那样安装的。它们通常没有 COM 挂钩(用于 CreateObject),并且安装在用户配置文件(不是该机器的配置文件)的隔离部分中。不要忘记,您还可以通过 ClickOnce(来自不同位置)一次获得同一应用程序的多个副本/版本。

一种选择(在 3.5/VS2008 中)可能是使用新的文件关联的东西......将您的应用程序与“.foo”文件相关联,创建一个空的“.foo”文件并启动它。那可能行得通。查看 VS2008 中的 Publish=>Options 对话框。

否则 - 基本上,如果您想要这种类型的使用,我怀疑您将需要使用 msi(即常规安装程序;而不是 ClickOnce)将您的应用程序注册为 COM 库 (dll)。请注意,.NET 不是一个好的 COM 服务器 (exe),因此不能直接与 Word 进行比较。如果你想要一个 .NET COM 服务器,那么“服务组件”是你最好的选择——但这些在 UI 上并不大。

有关信息,隔离区域位于“%userprofile%\Local Settings\Apps\2.0”附近,但这只是为了让您可以看到它。不要尝试从那里运行它。

于 2008-10-27T15:46:54.673 回答
1

谢谢(你的)信息。这让我意识到我可以使用 .Net 可执行文件而不是 vbscript 来启动我的应用程序。

    Dim program As New Process

    'Try to run a .Net click-once application
    Try
        Dim shortcut As String = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)
        shortcut = shortcut + "specific\shorctut\path\shortcut.appref-ms"
        program .StartInfo.FileName = lpsShortcut
        program .Start()
    Catch
        'If not go to the web site for a fresh install
        Try
            .Diagnostics.Process.Start("IExplore.exe", "http://url/program.application")
        Catch ex As Exception
            'Log or Email alert here...
        End Try
    End Try
于 2008-11-05T17:15:51.880 回答