msi安装后运行exe,我看到启动复选框,但app没有运行

时间:2012-01-19 21:59:32

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

我正在使用此答案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”参数在“Install”自定义操作中添加exe。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

您甚至可以通过将参数添加到Arguments属性

来将参数传递给.exe