我有一个 ClickOnce 部署的应用程序,我想从 VBScript 启动,类似于在以下示例中启动 Microsoft Word:
Dim word
Set word = CreateObject("Word.Application")
word.Visible = True
问题是我不知道将什么参数传递给CreateObject
函数来启动我的应用程序。我在哪里可以找到安装在我的 PC 上的应用程序的主列表/调用以启动它们的快捷方式?
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”附近,但这只是为了让您可以看到它。不要尝试从那里运行它。
谢谢(你的)信息。这让我意识到我可以使用 .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