请提出您的想法:
在解决方案文件中,我有两个项目PROJECTA和SETUP项目。创建PROJECTA的安装程序后,安装程序“example.msi”包含PROJECTA.exe(或活动输出) )PROJECTA。
安装“example.msi”时,我想在后台运行PROJECTA.exe。
我尝试过自定义控件和安装程序类
如果给出了exe的路径(如下所示),它可以正常工作。但这不是预期的行为,我希望在安装之前将example.msi中的PROJECTA.exe复制到该位置,这样我就可以在安装过程中从那里运行。
如何实现这一目标。
C#语法:
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
string s="C:\\xxx\\PROJECTA.exe";
System.Diagnostics.Process.Start(s);
}
提前谢谢。
答案 0 :(得分:0)
使PROJECTA.exe成为MSI安装,然后将其添加到二进制表中。然后创建一个类型为50的CustomAction,如果它将在UI序列中完成,或者如果它将在exec序列中则键入7。您无法在.NET CA中执行此操作,因为您一次只能运行一个MSI安装程序实例。通过运行嵌套安装程序,您基本上可以共享相同的MSI安装程序引擎实例
说完这一切之后,嵌套安装程序会很痛苦,如果可以帮助它,应该避免使用。