0

Problem:
I have a User Requirement in which a file would not be installed if a Prerequisite application is absent on users machine. But after installing my product, when user would install that Prerequisite application, he would run my installer and choose repair to install that missing file and its related registry entries.

My expectations:
I know Repair would only repair those files that would already been installed by first installation. But isn't there any workaround about this???

Any here and there with AddLocal???

4

3 回答 3

1

您可以在组件标签内使用条件。例子:

<Component Id="RepairOrReinstallOnly" Guid="YourGUID" Transitive="yes">
    <Condition>
        INSTALLED AND (NOT UPGRADINGPRODUCTCODE)
    </Condition>
    ...
</Component>

这样,组件应仅在维修、修改和重新安装时安装。

但它不会在第一次安装时安装(INSTALLED 为假)或进行重大升级(UPGRADINGPRODUCTCODE 为真)。

于 2012-02-09T17:21:06.177 回答
0

我认为这是不可行的,因为当 Windows Installer 缓存您的 .msi 时,会删除 .cab 文件。这意味着除非用户保留原始安装程序,否则最初跳过的源文件将不可用。做出这样的假设有点牵强。

我的建议是要么始终安装该文件,要么尝试让您的应用程序管理可选文件的部署。我发现,每当您尝试在安装程序中执行非标准操作时,管理起来都会变得更加复杂,并且更难以防止细微问题的蔓延。

于 2012-02-09T23:35:18.587 回答
0

所以你有一个包含 2 个程序的应用程序。当我们运行安装程序时,它只安装程序 1,不安装程序 2,因为没有安装必备程序。

现在,当您安装必备程序并想要未安装的程序 2 时,应在再次运行安装程序时安装它。

在安装程序上,有 3 个选项。添加/删除功能、修复和卸载。您可以转到添加/删除功能并选择程序 2 并安装它。

您需要对安装程序做出条件,即如果未安装 pre-req,则无法安装程序 2。因此,当您第一次尝试安装并选择程序 2 或完全安装时,它会告诉您无法安装,因为 pre-req 不存在。它只会安装程序 1。再次运行安装程序时,它将显示添加/删除功能选项。

于 2012-02-09T12:51:22.987 回答