2011-03-06 96 views
0

请把你的想法:帮助中的自定义操作安装项目

在一个解决方案文件,我有两个项目PROJECTA和安装项目。创建PROJECTA安装程序后,安装程序“example.msi”包含PROJECTA的PROJECTA.exe(或活动输出 )。

安装“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

这没有意义,也不是推荐的方法。如果您的应用程序需要某些功能,则正确的方法是在自定义操作(EXE或DLL)中移动该功能。通过这种方式,自定义操作在安装过程中使用,并仅执行安装操作,而您的应用程序安装在目标机器上,并用作应用程序。 – 2011-03-07 07:41:44

回答

0

使PRO​​JECTA.exe成为MSI安装,然后将其添加到您的二进制表。然后创建一个类型50的CustomAction,如果它将在UI序列中完成,或者如果将要在exec序列中输入7,则创建类型为50的CustomAction。您无法在.NET CA中执行此操作,因为您只允许一次运行1个MSI安装程序实例。通过运行嵌套安装程序,您基本上共享相同的MSI安装程序引擎实例

说完所有这些之后,嵌套安装程序可能会很痛苦,如果可以帮助它,应该避免。

相关问题