如何将参数从exe文件传递到msi?

Posted

技术标签:

【中文标题】如何将参数从exe文件传递到msi?【英文标题】:How can i pass parameter to from exe file to msi? 【发布时间】:2014-03-14 05:50:36 【问题描述】:

我使用引导程序创建了一个 exe。现在我希望我的安装保持安静。 我可以在以下命令的帮助下使用 msi 文件以静默模式安装它。

 msiexec /i Setup.msi /qn ADDLOCAL=freature

但我想以静默模式安装 mysetup.exe。如何从引导程序将参数传递给 msi,以便安装处于静默模式。 我已经护目镜好几个小时了,但我找不到路。

【问题讨论】:

我没有收到您的问题,请明确您是希望 mysetup.exe 处于静默模式还是 Setup.msi。还是两者都处于静音模式???? 我希望 mysetup.exe 处于静默模式。 那你为什么要从引导程序向 msi 传递参数???是否像您想要以静默模式安装它的命令/标志与您用于 msi (/qn) 的一样?? 是的,我想以静默模式安装我的安装文件。但我不知道该怎么做。 我认为您想要的是用于静默安装的安装程序命令行开关。尝试(命令提示符)mysetup.exe -s 【参考方案1】:

您需要在 Burn 引导程序中定义一个变量。使用你的例子,你需要这样的东西:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="Setup" Version="1.0.0.0" UpgradeCode="YOUR-GUID">

    <Variable Name="ADDLOCAL" bal:Overridable="yes"/>

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
        <bal:WixStandardBootstrapperApplication />
    </BootstrapperApplicationRef>

    <Chain>
        <MsiPackage DisplayName="Setup" Name="Setup.msi" SourceFile="Setup.msi">
            <MsiProperty Name="ADDLOCAL" Value="[ADDLOCAL]" />
        </MsiPackage>
    </Chain>
</Bundle>
</Wix>

现在您可以运行 Setup.exe -q ADDLOCAL=feature 并且 .msi 将传递该变量。

【讨论】:

【参考方案2】:

Wix 标准引导程序仅支持这些标准包开关-> -q、-quiet、-s、-silent = 静默安装 -passive = 仅安装进度条 -norestart = 禁止重启 -forcerestart = 无论如何重新启动(我不知道为什么这仍然是 周围) -promptrestart = 提示是否需要重新启动(默认) -layout = 创建引导程序的本地映像(即下载文件以便 它们可以刻录到 DVD) -l, -log = 记录到特定文件(默认由捆绑开发者控制) -卸载 = 卸载 -repair = 修复(如果未安装,则安装) -package,-update = install(如果没有 -uninstall 或 -repair 则默认)Reference

【讨论】:

谢谢,-q 工作。但我无法从 myexe 安装特定功能 我可以使用命令“msiexec /i Setup.msi /qn ADDLOCAL=feature1”通过 msi 安装特定功能。我想从我的设置文件中获取相同的内容。例如,mysetup.exe -q ADDLOCAL=feature1 我可以这样做吗??

以上是关于如何将参数从exe文件传递到msi?的主要内容,如果未能解决你的问题,请参考以下文章

可执行文件到MSI安装程序

如何传递运行时参数以从批处理文件启动 exe

MSI 安装程序的可执行文件

WiX MSI 和 EXE 作为一个 EXE

有没有办法创建从 pyinstaller --onefile 生成的单个可执行 exe 文件的 MSI 包?

将VS生成的msi文件和exe文件及环境集合为一个exe