我开发了一个Modulebase Software
分为两部分
第一部分是Service(BaseSoftware)
,部分是some Modules
,可以添加到此服务中。
立即声明:
我已经为服务创建了Wix安装程序(BaseSoftware)。但现在我需要安装模块。每个模块都应该有自己的MSI-Setup。
问题:
在我安装模块之前,必须安装BaseSoftware。
解决方案:
我以为我可以在模块设置中进行自定义操作,如果已经安装了BaseSoftware,则会询问系统。如果不只是启动BaseSoftware的安装程序,然后继续安装模块。
但我真的不知道什么是最佳做法。
答案 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>
确保使用相同的注册表项