基于模块的软件的设置

时间:2018-02-13 09:17:24

标签: installation wix setup-project bootstrapper

我开发了一个Modulebase Software分为两部分 第一部分是Service(BaseSoftware),部分是some Modules,可以添加到此服务中。

立即声明:
我已经为服务创建了Wix安装程序(BaseSoftware)。但现在我需要安装模块。每个模块都应该有自己的MSI-Setup。

问题:
在我安装模块之前,必须安装BaseSoftware。

解决方案:
我以为我可以在模块设置中进行自定义操作,如果已经安装了BaseSoftware,则会询问系统。如果不只是启动BaseSoftware的安装程序,然后继续安装模块。

但我真的不知道什么是最佳做法。

1 个答案:

答案 0 :(得分:2)

在您的服务安装程序中,编写一个指示您的服务已安装的注册表值 - 这是一个将安装目录写入注册表的示例(您应该自定义密钥)

    <Component Id="ServiceRegistryKeys" Directory="InstallLocation" Permanent='yes'>
        <RegistryKey Root="HKLM" Key="SOFTWARE\My Company\My Service">
            <RegistryValue Type="string" Name="InstallPath" Value="[INSTALLDIR]" KeyPath="yes" />
        </RegistryKey>
    </Component>

在模块安装程序中,您可以检查该密钥,如果不存在则失败:

    <!-- Require Service to be installed already -->
    <Property Id="SERVICEPATH">
        <RegistrySearch Id="ServicePath" Root="HKLM" Key="SOFTWARE\My Company\My Service" Name="InstallPath" Type="raw" />
    </Property>
    <Condition Message='The Service is not installed. Please install the Service first, and then this module.'><![CDATA[Installed OR (SERVICEPATH <> "")]]></Condition>

确保使用相同的注册表项