【问题标题】:run exe after msi install, I see the launch checkbox but app does not run安装 msi 后运行 exe,我看到启动复选框,但应用程序不运行
【发布时间】:2012-02-14 13:54:51
【问题描述】:

我正在使用此答案 https://stackoverflow.com/a/1681410/22 中的脚本在 MSI 安装程序的末尾插入一个启动应用程序复选框。

一切正常,我得到启动复选框就好了,但是安装程序完成后应用程序没有启动。

不确定这是否是原因,但我的应用确实需要管理员 (app.manifest)

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

安装程序构建输出:

------ Starting pre-build validation for project 'MyAppInstaller' ------ 
------ Pre-build validation for project 'MyAppInstaller' completed ------
------ Build started: Project: MyAppInstaller, Configuration: Release ------
Building file 'C:\path\to\MyAppInstaller.msi'...
Packaging file 'MyApp.exe'...
Packaging file 'Icon.ico'...
Starting post-build events...
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Updating the Control table...
Updating the ControlEvent table...
Updating the CustomAction table...
Updating the Property table...

Done Adding Additional Store

Successfully signed: MyAppInstaller.msi

编辑:

如果我在 Visual Studio 中右键单击安装项目并选择“安装”。安装程序关闭时应用程序运行。

但是,如果我只是双击生成的 MSI。 MSI 关闭后应用将无法打开。

我也尝试将自定义操作更改为此,但我仍然得到相同的结果:

sql = "INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`) VALUES ('VSDCA_Launch', '226', 'TARGETDIR', '[TARGETDIR]\\MyApp.exe')";

更新:

我最终使用了“DJ KRAZE”答案的略微修改版本。在我的 Main 方法中,我检查“frominstaller”参数,然后在新进程中启动应用程序并退出。然后允许安装程序正常继续。然后我使用“/frominstaller”参数在“安装”自定义操作中添加 exe。

if (frominstaller)
{
    Process p = new Process();
    p.StartInfo.FileName = System.Reflection.Assembly.GetExecutingAssembly().Location;
    p.Start();
    Application.Exit();
}

【问题讨论】:

  • 您尝试运行的文件是否已确定安装在目标机器上?
  • 这是构建器安装程序的输出。安装本身在哪里?
  • gbianchi - 我在哪里可以找到?
  • Tom - 是的,我可以在安装后从桌面快捷方式启动它。

标签: c# .net visual-studio installation windows-installer


【解决方案1】:

您是否尝试过您引用的链接中帖子中列出的这些步骤..?

要在安装完成后运行任何应用程序,请右键单击您的安装项目,然后单击自定义操作。然后右键单击提交,添加自定义操作,然后选择您要运行的文件。请注意,它必须已经在您的应用程序文件夹中,这在您的情况下应该不是问题,因为您无论如何都在运行您的程序。只需选择项目的输出即可。

然后,单击这个添加的 .exe,并将 InstallerClass 更改为 false。这很重要,因为否则它将寻找安装程序。

您甚至可以通过将参数添加到 Arguments 属性来将参数传递给您的 .exe

【讨论】:

  • 这不能按预期工作,因为应用程序是从 MSI 进程启动的,并且在应用程序关闭之前安装程序不会完成。
  • 有什么方法可以根据复选框强制关闭或欺骗它
  • 如果我将 exe 添加到 Commit 操作中,MSI 永远不会进入完成屏幕,只会停留在进度屏幕上,直到应用退出。
  • 这很奇怪..您创建的 MSI 项目中没有额外的后期动作或自定义动作..?
  • 得到它的工作,不理想,但它工作:)。请参阅帖子以获取更新。
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 2011-06-04
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多