自定义操作安装项目中的帮助

时间:2011-03-06 10:03:31

标签: .net setup-project custom-action

请提出您的想法:

在解决方案文件中,我有两个项目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);

    }

提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

说完这一切之后,嵌套安装程序会很痛苦,如果可以帮助它,应该避免使用。