首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在boostrapper中安装Server 2014 Express作为先决条件

在boostrapper中安装Server 2014 Express作为先决条件
EN

Stack Overflow用户
提问于 2018-07-20 19:33:31
回答 1查看 712关注 0票数 1

我正在尝试使用boostrapper (Wix3.11)来设置一个安装,以SQLServer2014Express作为先决条件。

当我用命令行安装setup.exeSQLEXPR_x64_ENU.exe时,它工作得很好。

命令行如下:

代码语言:javascript
复制
SQLEXPR_x64_ENU.exe /q /ACTION=Install /FEATURES=SQL 
       /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="NT AUTHORITY\Network Service"  
       /SQLSYSADMINACCOUNTS="NT AUTHORITY\Network Service" 
       /AGTSVCACCOUNT="NT AUTHORITY\Network Service" 
       /IACCEPTSQLSERVERLICENSETERMS /SECURITYMODE=SQL SAPWD="TestPassWord"

但是,当我试图从助推器上运行它时,它失败了。它总是抛出同样的错误。

错误:操作"Microsoft.SqlServer.Configuration.SetupExtension.ValidateFeatureSettingsAction“在执行过程中抛出一个异常。 Microsoft.SqlServer.Setup.Chainer.Workflow.ActionExecutionException:值不能为空。 参数名称: userName -> System.ArgumentNullException: Value不能为null。

下面是我用来设置安装程序的代码:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> 
      <?define Account = 'NT AUTHORITY\Network Service'?>
      <?define SAPassword = "TestPassWord"?>     
        <Bundle Name="Setup" Version="1.0.0.0" Manufacturer="Company" UpgradeCode="{GUID}">
            <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
        <bal:WixStandardBootstrapperApplication
            LicenseUrl=""
            ThemeFile="HyperlinkTheme.xml"
            LocalizationFile="HyperlinkTheme.wxl"
            SuppressOptionsUI="yes" />
        </BootstrapperApplicationRef>
            <Chain>
          <ExePackage Id ="SQL_express" SourceFile="$(var.PreReqPath)\SQLExpress\SQLEXPR_x64_ENU.exe" Compressed="yes" Vital="no" InstallCommand="/q /ACTION=Install /FEATURES=SQL /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT=$(var.Account) /SQLSYSADMINACCOUNTS=$(var.Account) /AGTSVCACCOUNT=$(var.Account) /IACCEPTSQLSERVERLICENSETERMS /SECURITYMODE=SQL /SAPWD=$(var.SAPassword)" />
            </Chain>
        </Bundle>
</Wix>

我试图将Permachine="Yes"添加到ExePackage行中,但这并没有解决问题。

我也尝试过右键单击安装程序,并作为管理员运行它,但它仍然不能工作。

希望有人能帮我解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-21 22:24:52

已经有一段时间没看过了,但现在似乎没有其他人了。我来试一试:我想您在源代码中使用的是预处理变量,而不是运行时变量。换句话说,"$(var.VariableName)"条目是在构建时 (when your WiX Bundle is compiled - which is sometimes OK)而不是在运行时 (when your WiX Bundle is installed - which is often desired)解析的。

换句话说,我假设您的预处理器变量在编译期间解析为空字符串,这就是为什么您的安装无法工作。对于所有预处理器字段,根本没有指定值。 作为一个测试,也许可以用一些硬编码的值编译包,作为一个"烟度试验“,以确定是否是这样的。

模型

代码语言:javascript
复制
<ExePackage Id ="SQL_express" SourceFile="SQLEXPR_x64_ENU.exe" Compressed="yes" Vital="no" InstallCommand="/q /ACTION=Install /FEATURES=SQL /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT=TestAccount /SQLSYSADMINACCOUNTS=SqlAccount /AGTSVCACCOUNT=SvcAccount /IACCEPTSQLSERVERLICENSETERMS /SECURITYMODE=SQL /SAPWD=SAPassword" />

也许您可以看看Neil的博客,了解如何处理这个问题(我还没有一个完整的示例可供添加):http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html

我想关键是可变元素

代码语言:javascript
复制
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME\My App" />

看起来,您可以在命令行中通过将可覆盖属性设置为yes (该链接的页面底部)来覆盖这些值。我从来没试过这个。看起来这些变量元素使用标准的MSI大括号约定:[InstallFolder]来解析。示例:

代码语言:javascript
复制
<MsiProperty Name="INSTALLLOCATION" Value="[InstallFolder]" /> 

再看Sleightholm的模板用于上述片段的完整上下文。显然,您将使用ExePackage而不是MsiPackage

对于用例,您似乎可以忽略WixVariable元素 (相对于您需要的可变元素 )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51449284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档