通过ClickOnce中的方法调用执行新流程

时间:2010-10-22 20:50:32

标签: c# c#-4.0 clickonce

我们公司使用ClickOnce在内部部署我们的主应用程序(AppA)。我正在编写一个帮助应用程序(AppB),理想情况下,它将通过AppA启动。我们计划在AppA的解决方案中包含AppB,然后添加对AppB的引用。

有没有办法通过调用AppB.Program.Main()实际执行类似Process.Start的操作?

然后,为了增加一定程度的复杂性,这会如何影响AppA的ClickOnce部署?

非常感谢能够指出正确方向的任何见解。

感谢。

2 个答案:

答案 0 :(得分:4)

是的,可以做到。我们有一个单击一次调用exe的应用程序。这是代码

        System.Diagnostics.Process Proc = new System.Diagnostics.Process();
        Proc.StartInfo.FileName = "Resources\\des.exe";
        Proc.StartInfo.Arguments = "-D -u -k \"6AAAAA(!\" " + encryptedFileName + " " + newFileName;
        Proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        Proc.StartInfo.CreateNoWindow = true;
        Proc.Start();
        Proc.WaitForExit();

当我们部署它时,我们需要在Resources文件夹中部署des.exe。此外,我们将其部署为完全信任。

答案 1 :(得分:0)

我发现我们的解决方案是通过在“开始”菜单中查找.appref-ms“快捷方式”来查看他们是否已经安装了AppB。如果有,请执行Process.Start()。如果没有,请将它们发送到安装URL。

Private Sub LoadAppBFromClickOnce()
    Dim argsToPass As String = "?arg1=1"

    Dim s As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs), "CompanyName", "AppB.appref-ms")
    If File.Exists(s) Then
        Try
            Process.Start(s, argsToPass)
        Catch ex As Exception
            Throw ex
        End Try
    Else
        MessageBox.Show(String.Format("AppB is not installed.  Please install from {0}.", APPB_INSTALL_URL), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Process.Start("iexplore.exe", APPB_INSTALL_URL)
    End If
End Sub