2010-07-02 49 views
41

这可能是一个愚蠢的问题,我的谷歌搜索只是今天没有运行。Visual Studio安装程序>如何在安装程序结束时启动应用程序

我有一个应用程序,我添加了一个Visual Studio安装程序>安装向导项目。我想知道如何添加一个按钮或复选框,可以在成功安装后启动应用程序。这将位于MSI安装程序包的最后一页。我正在使用Visual Studio 2010 Ultimate。

我需要这样做,当应用程序执行自动更新时,它会自动启动安装程序。我只需要安装程序在更新后重新启动应用程序。

这可能很简单,但对于我的生活我无法弄清楚。在此先感谢您的帮助。

+1

我建议使用Cheeso的解决方案[这里](http://stackoverflow.com/a/1681410/2009197)。 – Baddack 2015-12-04 21:44:06

回答

77

要运行的任何应用程序安装完成后,

  1. 你的设置项目单击鼠标右键,单击自定义操作。
  2. 然后右键单击提交,添加自定义操作,然后选择您想要运行的文件。 (请注意,它必须已经存在于您的应用程序文件夹中,因为您仍然在运行程序,所以这不应该成为问题
  3. 只需选择项目的输出
  4. 然后点击此将它们添加到Arguments属性添加.exe和改变InstallerClass为false。这是至关重要的,因为它会寻找否则安装程序。
  5. 你甚至可以将参数传递到您的.exe
+0

优秀..一个问题,主应用程序会被视为'ApplicationName(Active)'的主要输出? – 2010-07-02 20:55:07

+0

是的,这是正确的 – sbenderli 2010-07-02 20:56:18

+0

完美,非常感谢你! – 2010-07-02 20:57:22

2

尝试检查出这篇博文: http://blogs.msdn.com/b/astebner/archive/2006/08/12/696833.aspx

我无法证明它是否适用于2010年;我仍然坚持使用2008年,直到我的TFS服务器升级。另外,我使用WiX作为我的安装程序。但是,这只是一个自定义操作,所以我认为它应该仍然受支持。

希望这会有所帮助!

(顺便说一下,在练习时我使用Google找到这一点,您的问题显示了谷歌的第一页上这个问题。)

+0

heh。它并没有给我“其他人回答”顶部的弹出窗口。我建议使用sbenderli的解决方案。比博客文章简单得多。 – 2010-07-02 20:57:12

+0

谢谢!我正在考虑研究WiX,因为我已经阅读了一些关于它的好东西。 – 2010-07-02 20:57:51

6

在Visual Studio 2010在这里很容易...

第1步:将一个新的安装程序类添加到您希望在安装后运行的应用程序项目中,并将其称为您喜欢的项目。

第2步:将以下代码添加到您刚刚添加的replcaing MyApplication.exe安装程序类与您的名称。

Public Overrides Sub Commit(ByVal savedState As System.Collections.IDictionary) 

    MyBase.Commit(savedState) 
    System.Diagnostics.Process.Start(System.IO.Path.GetDirectoryName(Me.Context.Parameters("AssemblyPath")) + "\MyApplication.exe") 

End Sub 

编译和去...

+0

完成窗体MSI安装后,我的原始文件(设计和编码)也显示在安装位置。我已经使用visual studio 2010开发了这个应用程序。安装程序创建成功,但安装后MSI发生了这个问题。请帮帮我。提前致谢。 – dilipkumar1007 2017-08-02 07:51:20

0

添加另一种答案,因为没有以前的答案的地址在原岗位的复选框或按钮的问题。

通过右键单击用户界面视图中的开始按钮,您可以将一个固定对话框中的一个添加到您的安装项目中,如CheckBoxes(A)。添加后,右键单击对话框将其向上移动。您只需要一个复选框来询问运行该程序的问题,从而消除其他问题。默认属性名称是CHECKBOXA1,因此将条件添加到触发代码的自定义操作CHECKBOXA1 = 1表示已检查。

3

就我而言,我一直在为此奋斗一段时间,解决方案就在那里。 直接使用自定义动作提供给应用程序主输出的解决方案对我来说并不好,因为安装应用程序会一直保留,直到您离开主应用程序。 因此,可以使用下一种方法解决问题:

  1. 将Install类添加到您的项目;
  2. 在新的类中,重写Commit方法,就像Jarrod说的above

    System.Diagnostics.Process.Start(System.IO.Path.GetDirectoryName(this.Context.Parameters["AssemblyPath"]) + @"\MyApplication.exe");

  3. 现在的技巧:转到安装程序项目中的“自定义操作”窗格,并将项目的主要输出添加到“提交”和“安装”文件夹。不要在属性中改变任何东西。它会像那样工作。默认情况下,它会在前一点获得插入代码的安装程序类;
  4. 构建您的安装程序包并进行安装。你应该注意到应用程序将在最后开始;
  5. 只需关闭安装成功的警告,然后继续。

要了解更多有关这方面的信息,请点击this

PS:我是用VS2017和Framework 2.0制作的。

+0

嗨@Artur,我也这么做了。问题在于,在安装过程中在最后一个屏幕点击“确定”按钮之前,应用程序已启动。应用程序只启动,只有当我点击确定按钮。请帮助我们。 – dilipkumar1007 2017-05-16 05:54:12

+1

Hi @ dilipkumar1007。你尝试覆盖OnAfterInstall方法吗?我不确定。如果你有任何结果,请分享。 _Update:Nop ...行为是一样的... _ – 2017-05-17 09:34:21

+0

Hi @ dilipkumar1007。在我最后回答之后,我做了一些搜索,并且我认为我最终得到了你需要的行为。我已经使用[this link](https://blogs.msdn.microsoft.com/astebner)中的步骤尝试了fire.eagle aproach [below](http://stackoverflow.com/a/3169056/7927227)/2006/08/12/mailbag-how-can-i-customize-an-msi-in-the-visual-studio-setupdeployment-project /)。在我的情况下,我不得不删除PostBuildEvent脚本中的所有引号。 (...) – 2017-05-17 11:22:40

相关问题