首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSIS没有以正确的方式解析魔术变量吗?

NSIS没有以正确的方式解析魔术变量吗?
EN

Stack Overflow用户
提问于 2014-02-18 05:41:06
回答 2查看 332关注 0票数 0

我尝试在NSIS中安装MS SQL2008 R2,所以我使用以下代码片段:

代码语言:javascript
复制
SetOutPath "$TEMP\Unit\DimIns\binary\SQLSVR"
File /r "..\..\shared-binaries\download.unit.hu\MsSQLServer2008R2\SQLSVR-x86\"
SetOutPath "$TEMP\Unit\DimIns\"ExecDos::exec "$OUTDIR\binary\SQLSVR\setup.exe /QUIET  /IACCEPTSQLSERVERLICENSETERMS /ConfigurationFile=$OUTDIR\binary\SQLSVR\dimsqlsetup.ini /ACTION=Install" "" "$OUTDIR\MsSQLServer2008R2.log"

但它会失败。并输出以下错误消息:

代码语言:javascript
复制
The following error occurred:
The action type 'ExecuteWorkflowAction' is not valid for the WorkflowIdentity element.      The only valid action type is ExecuteWorkflowAction.

Error result: -2068709375
Result facility code: 1202
Result error code: 1

Please review the summary.txt log for further details
The following error occurred:
The action type 'ExecuteWorkflowAction' is not valid for the WorkflowIdentity element.      The only valid action type is ExecuteWorkflowAction.

Error result: -2068709375
Result facility code: 1202
Result error code: 1

Please review the summary.txt log for further details
Microsoft (R) SQL Server 2008 R2 Setup 10.50.4000.00

Copyright (c) Microsoft Corporation.  All rights reserved.

但是如果我显式地给出路径

代码语言:javascript
复制
ExecDos::exec "C:\Users\UNIT-TEST\AppData\Local\Temp\Unit\DimIns\binary\SQLSVR\setup.exe /QUIET  /IACCEPTSQLSERVERLICENSETERMS /ConfigurationFile=C:\Users\UNIT-TEST\AppData\Local\Temp\Unit\DimIns\binary\SQLSVR\dimsqlsetup.ini /ACTION=Install" "" "C:\Users\UNIT-TEST\AppData\Local\Temp\Unit\DimIns\MsSQLServer2008R2.log"

或者从CMD运行它

代码语言:javascript
复制
C:\Users\UNIT-TEST\AppData\Local\Temp\Unit\DimIns\binary\SQLSVR\setup.exe /QUIET  /IACCEPTSQLSERVERLICENSETERMS /ConfigurationFile=C:\Users\UNIT-TEST\AppData\Local\Temp\Unit\DimIns\binary\SQLSVR\dimsqlsetup.ini /ACTION=Install

然后安装程序将正确安装MS SQL。因此,我无法想象NSIS会以错误的方式解决$TEMP$OUTDIR问题。这是可能的吗?问题出在哪里?

如果我将$TEMP$OUTDIR的内容写到控制台日志中,它看起来像是存储了正确的路径。

EN

回答 2

Stack Overflow用户

发布于 2014-02-18 13:56:46

我不喜欢你命令的语法。使用以下语法:

代码语言:javascript
复制
 nsExec::ExecToStack [OPTIONS] '"PATH" param1 param2 paramN'

确保所有参数和路径都被正确处理。

您的路径中可能存在空间,这可能会导致问题。

票数 1
EN

Stack Overflow用户

发布于 2014-02-19 06:06:50

您是否尝试过为所有路径添加额外的引号?

代码语言:javascript
复制
ExecDos::exec '"$OUTDIR\binary\SQLSVR\setup.exe" /QUIET /IACCEPTSQLSERVERLICENSETERMS /ConfigurationFile="$OUTDIR\binary\SQLSVR\dimsqlsetup.ini" /ACTION=Install' "" "$OUTDIR\MsSQLServer2008R2.log"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21839809

复制
相关文章

相似问题

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