2012-05-22 270 views
2

这是我第一次尝试使用Windows安装程序来构建安装程序包(我们的客户不希望使用Wix,我已广泛使用它)。目前,我有一个按预期构建和工作的MSI。但是,我需要为我编写的用于其他机器上的程序所需的SDK添加一个安装程序。我已经将第二个安装程序(也是MSI)添加为自定义操作,该操作根据是否在安装过程中勾选复选框来执行。问题是,当第二个安装程序执行时,出现错误,系统上已经安装了一个安装程序,安装无法继续。我怎样才能解决这个问题?自定义操作设置为在安装期间运行。如何在MSI安装程序中搭载MSI安装程序

在此先感谢您解决此问题的任何帮助。

+0

你用什么工具创作MSI?这将有助于给你一个具体的答案。 –

+0

我正在使用安装项目在VS2010中构建这个(对不起,这就是我说的Windows Installer时的意思)。 –

+0

看看Codeplex'ISWIX'上的我的FOSS标准。您可以使用它来创作wxs合并模块(文件和文件夹设计器),然后在wxs产品中使用该模块。这允许客户拖放更改,但仍需要学习wix才能进行其他更改。基本上覆盖了90%。 –

回答

1

安装项目因其创作过程中的限制和质量而臭名昭着。 MSFT已经将它们从Visual Studio 11中删除,并用InstallShield Limited Edition替换它们。

最好的办法是查看安装项目使用的setup.exe引导程序。查看驱动它们的XML格式,并使您的SDK安装程序成为一个简单的静默安装程序,可以在调用您正在使用的主MSI之前由此基础结构驱动。

InstallShield(安装先决条件和套件安装程序)和WiX(烧伤)对于这种情况都是更强大的工具。

2

您不能同时安装两个MSI软件包,更具体地说,您不能在另一个MSI软件包的InstallExecuteSequence期间启动另一个MSI。但是,如果您在用户界面序列中触发自定义操作,这是可行的。

+0

通过在UI序列中触发它意味着什么?我试图在安装阶段和提交阶段运行自定义操作。我唯一的其他两个选择是回滚和卸载 –

+2

这是一个坏主意。首先,假设你的工具可以创作它不能做到的东西,那么你会限制对无提示安装的支持,因为在/ QN或/ QB期间没有处理UI序列。它在/ QR中处理,但这是一个完整的黑客。您必须对输出MSI进行大量的构建后操作才能注入您需要安装项目不支持的创作。 –