Installation 基于模块的软件的设置
我开发了一个分为两部分的Installation 基于模块的软件的设置,installation,wix,setup-project,bootstrapper,Installation,Wix,Setup Project,Bootstrapper,我开发了一个分为两部分的Modulebase软件。 第一部分是服务(基本软件),第二部分是一些可以添加到此服务的模块 立即声明: 我已经为服务(BaseSoftware)创建了Wix设置。但是现在我需要安装模块。每个模块都应该有自己的MSI设置 问题: 在安装模块之前,必须先安装BaseSoftware 解决方案: 我想我可以在模块设置中进行自定义操作,询问系统是否已经安装了BaseSoftware。如果不是,请启动BaseSoftware的设置,然后继续模块设置 但是我真的不知道什么是最佳实践
Modulebase软件。
第一部分是服务(基本软件)
,第二部分是一些可以添加到此服务的模块
立即声明:
我已经为服务(BaseSoftware)创建了Wix设置。但是现在我需要安装模块。每个模块都应该有自己的MSI设置
问题:
在安装模块之前,必须先安装BaseSoftware
解决方案:
我想我可以在模块设置中进行自定义操作,询问系统是否已经安装了BaseSoftware。如果不是,请启动BaseSoftware的设置,然后继续模块设置
但是我真的不知道什么是最佳实践。在您的服务安装程序中,写一个注册表值,指示您的服务已安装-下面是一个将安装目录写入注册表的示例(您应该自定义注册表项)
在模块安装程序中,您可以检查该密钥,如果不存在则失败:
<!-- 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>
"")]]>
请确保在服务安装程序中使用相同的注册表项,写入一个注册表值以指示已安装服务-以下是将安装目录写入注册表的示例(您应该自定义注册表项)
在模块安装程序中,您可以检查该密钥,如果不存在则失败:
<!-- 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>
"")]]>
确保使用相同的注册表项您的解决方案听起来不错,但BaseSoftware安装程序不会创建注册表项,我会按您的方式创建注册表项好的,我发现了问题,它将注册表项写入X64注册表我的示例在我的安装程序中正常运行,但是,我确实使用我的包元素的平台属性将我的安装程序设置为64位:您能提供一个完整的工作示例吗?也许在Github上?我昨天做的东西没有正常工作-你需要wix工具集工具在你的路径上,运行build.cmd生成2个msi-尝试运行模块安装-它将失败。然后完全运行服务安装,然后再次运行模块安装-它将继续运行您的解决方案听起来不错,但BaseSoftware安装程序不创建注册表项,我按您的方式执行。好的,我发现了问题,它将该项写入X64注册表。我的示例在我的安装程序中正常工作,但是,我确实使用我的包元素的平台属性将我的安装程序设置为64位:您能提供一个完整的工作示例吗?也许在Github上?我昨天做的东西没有正常工作-你需要wix工具集工具在你的路径上,运行build.cmd生成2个msi-尝试运行模块安装-它将失败。然后完全运行服务安装,然后再次运行模块安装-它将继续