首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ExePackage中将[安装文件夹]作为参数传递

如何在ExePackage中将[安装文件夹]作为参数传递
EN

Stack Overflow用户
提问于 2022-06-16 14:56:04
回答 1查看 44关注 0票数 0

我正在创建一个调用可执行文件的WIX包。在该调用中,我试图将安装文件夹作为参数传递,但由于某种原因,这似乎不起作用。

包裹:

代码语言: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"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

    <Bundle Name="$(var.Department) $(var.ProductName)"
            Version="!(bind.packageVersion.Database.CLI.Verify)"
            Manufacturer="$(var.Company) $(var.Department)"
            UpgradeCode="5fc4dc21-0202-4e28-b8a4-b87f972ae32e"
            DisableRemove="yes" 
            DisableModify="yes"
            IconSourceFile="Database.ico">

        <util:RegistrySearchRef Id='VerifyDotnetVersion' />

        <Variable Name="InstallFolder" Type="string" Value="c:\$(var.Company)"/>

        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
            <!-- LicenseUrl intentionally empty. -->
            <bal:WixStandardBootstrapperApplication LicenseUrl=""
                                                    LogoFile="Database.png"
                                                    SuppressOptionsUI="no"
                                                    SuppressRepair="yes"/>
        </BootstrapperApplicationRef>
        
        <Chain>
            <PackageGroupRef Id="SqlServer2019ExpressLocalDB" />
            <PackageGroupRef Id="Database.CLI"/>
        </Chain>
    </Bundle>

    <Fragment>
        <util:FileSearch Id='VerifyDotnetVersion'
                         Variable="DotnetVersion"
                         Path="dotnet.exe"
                         Result="version" />
        <bal:Condition Message="This installer requires at least dotnet version 6.">
            DotnetVersion >= v6
        </bal:Condition>
    </Fragment>
</Wix>

而调用ExePackage的部分是:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

    <Fragment>
        <PackageGroup Id="Database.CLI">

            <ExePackage Id="Database.CLI.Verify"
                        DisplayName="Check whether SqlLocalDb has been installed."
                        SourceFile="$(var.SourceFile)"
                        InstallCommand="verify"
                        UninstallCommand="remove"
                        Vital="yes"
                        Compressed="no"
                        PerMachine="yes"
                        Permanent="no">
                <ExitCode Value="0" Behavior="success" />
                <ExitCode Value="1" Behavior="error" />
                <ExitCode Value="5" Behavior="error" />
                <ExitCode Value="31" Behavior="error" />
                <ExitCode Value="183" Behavior="success" />
                <ExitCode Value="574" Behavior="error" />
                <ExitCode Value="3010" Behavior="forceReboot" />
            </ExePackage>

            <ExePackage Id="Database.CLI.Attach"
                        DisplayName="Attach database to the SqlLocalDb instance."
                        SourceFile="$(var.SourceFile)"
                        InstallCommand="attach Target=&quot;[INSTALLFOLDER]\$(var.Department)\$(var.ProductName)&quot;"
                        Vital="yes"
                        Compressed="no"
                        PerMachine="yes">
                <ExitCode Value="0" Behavior="success" />
                <ExitCode Value="1" Behavior="error" />
                <ExitCode Value="5" Behavior="error" />
                <ExitCode Value="31" Behavior="error" />
                <ExitCode Value="183" Behavior="success" />
                <ExitCode Value="574" Behavior="error" />
                <ExitCode Value="3010" Behavior="forceReboot" />
            </ExePackage>

        </PackageGroup>
    </Fragment>
</Wix>

当我查看日志时,我把它看作是参数:[7A60:546C][2022-06-16T16:44:15]i301: Applying execute package: Database.CLI.Attach, action: Install, path: C:\ProgramData\Package Cache\0FD93FB1FD9BBE5B46CC123351ECE9DBCEC54E9D\Database.CLI.exe, arguments: '"C:\ProgramData\Package Cache\0FD93FB1FD9BBE5B46CC123351ECE9DBCEC54E9D\Database.CLI.exe" attach Target="\Analytics\Database"',但是我缺少了[INSTALLFOLDER]的内容,所以我所期望的应该是类似于Target="c:\temp\Analytics\Database“。

我在这里错过了什么?

附注:在启动用于静默安装的安装包时也可以提供INSTALLFOLDER吗?就像Database.Setup.exe InstallLocation=c:\temp

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-16 19:12:03

刻录变量是区分大小写的,所以使用[InstallFolder]而不是[INSTALLFOLDER]

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

https://stackoverflow.com/questions/72647873

复制
相关文章

相似问题

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