2013-09-23 24 views
0

除了部署几个文件(放在.MSI机柜本身中)之外,MSI还需要生成一个在Visual C++中开发的自定义exe文件。这个自定义可执行产卵需求是通过在MSI安装程序中实现一个自定义脚本来实现的。即使MSI的自定义脚本成功生成自定义可执行文件,由于目标系统上缺少必要的系统库,操作系统无法运行该exe文件。安装VC++ Redistributable Kit正在目标系统上部署必要的系统库,因此该工具包应作为目标系统中的已安装应用程序提供,以便自定义exe可以正确执行。 由于此VC++ Redist套件是此自定义可执行文件的先决条件,因此我们正在考虑在产生自定义exe文件之前从MSI安装程序本身安装此VC++ Redist套件。我们通过用于产生自定义可执行文件的相同自定义脚本成功地产生了VC++ Redist Kit。完成MSI执行后,我们可以在“添加/删除程序”列表中看到此VC++ Redist套件。但问题是,即使安装了此工具包,自定义可执行文件也不会识别该工具包的存在,因此自定义可执行文件仍无法运行。 您可以引导我们在MSI部署期间安装应用程序,并在安装完成后立即使安装的应用程序处于活动状态(无需等待直至完成MSI执行),以便MSI安装程序的其他子进程能够识别应用存在?从MSI安装VC++可分发工具包

+0

几乎无法诊断这个问题的不幸事件。总是倾向于用/ MT来构建这些helper exe程序,所以你不在乎。 –

回答

0

要安装MSI的可再发行组件,建议使用use merge modules。就像你所做的那样,这比自定义动作更稳定。

要让新安装的应用程序识别可再发行组件,请确保使用延迟自定义操作在安装过程结束时或非常接近时启动它,以便合并模块在系统中注册的DLL可用。

有没有办法(推荐)从MSI软件包中提前在机器上使用可重新分配。您可以将它们作为先决条件安装,然后再启动主MSI,并使用引导程序,但这意味着您将EXE作为输出软件包,捆绑了必备软件和主MSI软件包。

+0

我尝试在最后启动自定义操作。但事情没有奏效。我正在使用MakeMSI来构建安装程序。 –

+0

您是否将自定义操作设置为执行延期? http://msdn.microsoft.com/en-us/library/windows/desktop/aa368268(v=vs.85).aspx –

+0

是的,我做了推迟的行动。 –