1

我有一个Visual Studio安装项目是非常基本的,除了一个修改。我有两个不同的库,我希望根据用户的选择进行安装。我添加了一个复选框屏幕和条件的文件。他们可以安装组件或两个组件。这一切工作正常。自定义修复选项在MSI

现在为我的要求。假设用户安装了MSI并仅选择了一个组件。现在,他们需要从相同的MSI安装第二个组件。如果他们再次运行MSI,我可以选择修复或删除。修复只会修复最初安装的组件。我怎样才能让他们选择通过再次显示复选框屏幕来安装其他组件?

如果此功能在VS安装项目中不可用,是否还有其他位置? WiX也许?

回答

1

我不认为VS安装项目支持这一点。从其他工具(如Installshield)创建的Wix或MSI可以支持此功能。处理这种情况的通常方法是创建单独的功能并为每个功能分配不同的组件。然后,如果MSI是使用WiX或其他工具构建的,那么通过添加/删除将会出现更改按钮/选项,通过它您可以选择修复,修改或卸载。修改,然后让您更改您的功能选择,而无需重新安装。

+0

那就是我想的。我知道Visual Studio安装项目的功能非常有限。 – Web 2009-08-20 13:40:44

1

您需要使用免费的MSI编辑器,如ORCA或SuperORCA。微软用于在他们的服务包中提供ORCA工具。不知道他们是否继续如此。 SuperORCA工具,你可以在http://www.pantaray.com/msi_super_orca.html找到。现在,当我有类似的任务来实现以下是我的方法。我用SuperOrca打开我的MSI文件。在修复/删除MSI对话框屏幕中,为“修改”添加一个单选按钮 - 在SuperOrca - >在单选按钮表格 - >添加条目修改单选按钮

2]将BackButton的文本重命名为“重新安装”它的原始“返回” - >在超级滚动 - >在控制表下 - >更改文本属性重命名返回到重新安装

3]选择修复/删除单选按钮启用完成按钮并禁用重新安装按钮。在选择修改单选按钮启用重新安装按钮并禁用完成按钮 - 在SuperOrca - >在ControlCondition表 - >添加条目启用/禁用“重新安装”和“完成”按钮为每个修复/大小写对话框的表单名称是“MaintananceForm”)

4]现在来自SuperOrca工具ControlEvent表找出BackButton的conrol名称,在我的例子中是“PreviousButton”。现在修改它的事件,参数&表中的条件条目。这些属性的值必须与MSI文件的“欢迎”屏幕中的“下一步”按钮属性相同,这会重定向用户以显示要选择的安装选项。

注:这对我来说工作得很好。但是,当您再次选择安装选项并单击下一步时,它不会强制安装选定的选项。相反,它修复了MSI。我尝试从Windows \ Installer文件夹中删除条目,以便MSI不会选择兑现安装版本,但没有运气。如果有人正在回答如何强制MSI通过MSI安装向导重新安装,请告诉我。