1

我有一个非常基本的 Visual Studio 安装项目,除了一项修改。我有两个不同的库,我想根据用户的选择安装它们。我在文件中添加了一个复选框屏幕和条件。他们可以安装任何一个组件或两个组件。这一切都很好。

现在满足我的要求。假设用户安装了 MSI 并且只选择了一个组件。现在,他们需要从同一个 MSI 安装第二个组件。如果他们再次运行 MSI,我可以选择修复或删除。修复只会修复最初安装的组件。如何通过再次显示复选框屏幕为他们提供安装其他组件的选项?

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

4

2 回答 2

1

我不认为 VS Setup 项目支持这一点。从 Installshield 等其他工具创建的 Wix 或 MSI 可以支持这一点。处理此问题的常用方法是创建单独的功能并将不同的组件分配给每个功能。然后,如果 MSI 是使用 WiX 或其他工具构建的,则从添加/删除中将出现更改按钮/选项,您可以通过该按钮获得修复、修改或卸载的选项。然后修改允许您更改功能选择而无需重新安装。

于 2009-08-19T21:31:09.667 回答
1

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

2] 将 BackButton 的文本从原来的“Back”重命名为“Reinstall” --> 在 SuperOrca 中--> 在 Control 表下 --> 更改 Text 属性以重命名 Back to Reinstall

3]选择修复/删除单选按钮启用完成按钮并禁用重新安装按钮。在选择修改单选按钮时启用重新安装按钮并禁用完成按钮 - 在 SuperOrca 中 - > 在 ControlCondition 表下 - > 添加条目以启用/禁用每个组合的“重新安装”和“完成”按钮以进行修复/删除屏幕(在我的案例对话框表单名称为“MaintananceForm”)

4] 现在从 SuperOrca 工具的 ControlEvent 表中找出 BackButton 的控制名称,在我的例子中是“PreviousButton”。现在从表中修改其事件、参数和条件条目。并且这些属性的值必须与 MSI 文件的欢迎屏幕中的“下一步”按钮属性相同,该文件重定向用户以显示可供选择的安装选项。

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

于 2012-01-18T18:19:01.093 回答