我研究了所有网络,以寻找有关如何实现这一目标的线索,但是没有运气。我在Visual Studio 2013中有一个WiX安装程序项目,该项目安装Windows服务(它不包含UI,仅包含控制台),并且由于它正在安装服务,因此必须指定用户,并且该用户的权限将生效。问题在于该用户在我的.WXS文件上进行了硬编码,并且可以在我的DEV和QA堆栈上使用,但是该用户在prod上不存在,因此安装程序无法正常工作。
我想确定WXS文件是否可以使用配置文件的方式定义特定于环境的登录名,或者是否存在类似的内容。
我不想为每个环境设置3个安装项目。
为简单起见,这里是当前的WXS代码:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="Some ID"
Name="TestService"
Language="1033"
Version="1.0.0"
Manufacturer="TestManufacturer"
UpgradeCode="Some Upgrade Code">
<Package Compressed="yes"/>
<Media Id="1" Cabinet="test.cab" EmbedCab="yes"/>
<Property Id="LOGIN">HARD-CODED USER</Property>
<Property Id="PASSWORD">HARD-CODED PASSWORD</Property>
<Directory Name="SourceDir" Id="TARGETDIR">
<Directory Name="ProgramFilesFolder" Id="ProgramFilesFolder">
<Directory Name="TestDir" Id="_1">
<Directory Name="Service.ServiceSub" Id="_2">
<Component Id="_1" Guid="Some Guid">
<File Source="$(var.Service.ServiceSub.TargetPath)" />
<ServiceInstall
Id="TestServicee"
Name="TestService"
DisplayName="Test"
Type="ownProcess"
Start="auto"
ErrorControl="normal"
Description="This is a test"
Account="[LOGIN]"
Password="[PASSWORD]" />
<ServiceControl Id="StopTestService" Name="TestService" Stop="both" Wait="yes" Remove="uninstall" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Feature Id="_1" Level="1">
<ComponentRef Id="_1"/>
</Feature>
</Product>
请告诉我,如果不清楚,我可以扩展信息。感谢您的帮助。
答案 0 :(得分:0)
您是否尝试过在安装程序流程中构造一些UI屏幕以接受用户名/密码输入,以便随后可以将这些值分配给属性并在示例中使用它?
答案 1 :(得分:0)
感谢您的评论,我刚刚创建了3个.bat文件,并使用msiexec将该凭据作为参数传递来安装服务,如下所示:
msiexec /i SampleServiceSetup.msi LOGIN="sampleUsername" PASSWORD="SamplePassword*"
当我需要其他凭据时,只需在cmd中要求它们即可:)