Windows installer 使用参数从合并模块内安装Windows服务

Windows installer 使用参数从合并模块内安装Windows服务,windows-installer,advanced-installer,Windows Installer,Advanced Installer,我想在合并模块中安装服务。服务开始名和密码应由用户配置 我的安装程序配置如下 module.msm 我的模块具有IdC68FD1DE_B6A0_4BC1_A7BB_D7DBF65F2DB7,并定义了两个属性SERVICE_PASSWORD和SERVICE_USER,它们都具有未定义的默认值。 我添加了两个“带有格式化的属性集”自定义操作,并将这些属性配置为目标。 我还配置了服务安装时的属性 setup.exe 我的安装程序加载合并模块,并在module.msm上设置属性SERVICE_PASSW

我想在合并模块中安装服务。服务开始名和密码应由用户配置

我的安装程序配置如下

module.msm 我的模块具有Id
C68FD1DE_B6A0_4BC1_A7BB_D7DBF65F2DB7
,并定义了两个属性SERVICE_PASSWORD和SERVICE_USER,它们都具有未定义的默认值
。
我添加了两个“带有格式化的属性集”自定义操作,并将这些属性配置为目标。
我还配置了服务安装时的属性

setup.exe 我的安装程序加载合并模块,并在module.msm上设置属性SERVICE_PASSWORD和SERVICE_USER

执行时,我发现错误
服务'Service.exe'无法安装。验证您是否有足够的权限安装系统服务。
,我检查了日志,发现以下重要条目:

MSI(c)(88:DC)[10:36:57:178]:属性更改:添加服务\u密码属性。它的值是“password”

MSI(c)(88:DC)[10:36:57:178]:属性更改:添加服务和用户属性。其值为“.\user”

MSI(70:04)[10:38:18:771]:执行操作:ServicePassword.C68FD1DE_B6A0_4BC1_A7BB_D7DBF65F2DB7

MSI(70:04)[10:38:18:781]:属性更改:添加[SERVICE_PASSWORD]属性。它的值是“password”

MSI(70:04)[10:38:18:781]:执行操作:ServiceUser.C68FD1DE_B6A0_4BC1_A7BB_D7DBF65F2DB7

MSI(70:04)[10:38:18:791]:属性更改:添加[服务用户]属性。它的值是“用户”

MSI(70:04)[10:38:29:391]:执行op:ServiceInstall(名称=服务,显示名称=服务,ImagePath=“C:\Program Files\company\product\service.exe”,ServiceType=16,StartType=2,ErrorControl=1,依赖项=,StartName=未定义,密码=***,说明=,)

当我有一个工作属性时,它会说修改而不是添加

MSI(64:9C)[12:06:03:108]:属性更改:修改SERVERNAME.ABB6A92E_9A58_4320_981C_149C0F4EE78A属性。其当前值为“defaultserver”。它的新值:“targetserver”

似乎将正确的值传递给了我的合并模块,但没有使用。
其他以这种方式参数化的合并模块正在工作,但属性不用于安装服务。那么,要让它正常工作,我还缺少什么呢?

这听起来很愚蠢,但我要确保服务startname确实是大写的service\u用户。“未定义”似乎表示它是一个尚未定义的属性。\user帐户是否具有作为服务运行的权限?顺便说一句,您不会将数据传递给合并模块。合并模块在生成时合并到MSI中。在那之后它就不存在了。这只是一组组合的表数据。属性名称是正确的,与权限无关。错误在于设置属性的自定义操作是在安装步骤上调用的,并且在Windows Installer序列中的InstallServices之后执行。我会回答我的问题,并在我有时间的时候补充细节。谢谢大家。