C# msi安装后运行exe,我看到启动复选框,但应用程序未运行

C# msi安装后运行exe,我看到启动复选框,但应用程序未运行,c#,.net,visual-studio,installation,windows-installer,C#,.net,Visual Studio,Installation,Windows Installer,我正在使用此答案中的脚本在MSI安装程序的末尾插入启动应用程序复选框 一切都正常,我得到了启动复选框只是罚款,但应用程序不会启动时,安装程序完成 不确定这是否是原因,但我的应用确实需要管理员(app.manifest) 编辑: 如果我在VisualStudio中右键单击安装项目并选择“安装”。安装程序关闭时,应用程序将运行 但是,如果我只是双击生成的MSI。MSI关闭后,应用程序将不会打开 我还尝试将自定义操作更改为此,但仍然得到相同的结果: sql = "INSERT INTO `Custom

我正在使用此答案中的脚本在MSI安装程序的末尾插入启动应用程序复选框

一切都正常,我得到了启动复选框只是罚款,但应用程序不会启动时,安装程序完成

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

编辑:

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

但是,如果我只是双击生成的MSI。MSI关闭后,应用程序将不会打开

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

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

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

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

您是否尝试过在您引用的链接中列出的这些步骤

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

然后,单击这个added.exe,并将InstallerClass更改为false。这是至关重要的,因为它将寻找一个安装程序,否则


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

您试图运行的文件是否确实已安装在目标计算机上?这是builder安装程序的输出。。装置本身在哪里?gbianchi-我在哪里可以找到它?Tom-是的,我可以在安装后从桌面快捷方式启动它。这无法按预期工作,因为应用程序是从MSI进程启动的,安装程序在关闭应用程序之前不会完成。是否有什么方法或方法可以根据复选框强制关闭或欺骗它如果我将exe添加到提交操作,MSI从来没有到达完成的屏幕,只是在应用程序退出之前一直坐在进度屏幕上。这很奇怪。。而且在您创建的MSI项目中没有额外的post acticon或自定义操作..?开始工作了,不理想,但可以工作:)。更新请参见帖子。
sql = "INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`) VALUES ('VSDCA_Launch', '226', 'TARGETDIR', '[TARGETDIR]\\MyApp.exe')";
if (frominstaller)
{
    Process p = new Process();
    p.StartInfo.FileName = System.Reflection.Assembly.GetExecutingAssembly().Location;
    p.Start();
    Application.Exit();
}