【问题标题】:Wix Hide cmd line windowWix 隐藏命令行窗口
【发布时间】:2012-11-23 19:57:36
【问题描述】:

我正在开发一个 MSI 安装程序,其中包含一个 tool.exe 文件作为 <Binary> 元素。在安装过程中的某个时刻,我需要运行 tool.exe。 所以我有一个自定义操作来执行它:

<CustomAction Id="RunToolExe"
                      BinaryKey="ToolExe"
                      ExeCommand=" -r 240 -name appservice"
                      Execute="immediate"
                      Return="check"
                    />

然后我安排在&lt;InstallExecuteSequence&gt;

问题:自定义操作运行时,安装过程中命令行窗口快速闪烁。这对用户来说有点不舒服。有没有办法隐藏这个屏幕?

我不能使用 WixQuietExecCA,因为我无法在 Wix 中引用 Binary tool.exe。

【问题讨论】:

    标签: c# installation wix wix3.5


    【解决方案1】:
    <CustomAction Id="SettoolEXEPATH" Property="EXEPATH" Value="&quot;[INSTALLDIR]tool.exe&quot; <additional commands> Execute="immediate"/>
    
    <CustomAction Id="EXEPATH" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>       
    

    您可以像上面的示例一样使用 WixQuietExecCA,并相应地安排自定义操作。第一个动作 SettoolEXEPATH 将属性 EXEPATH 设置为 tool.exe 的路径,该属性名称用作 WixQuietExecCA 的自定义动作 ID,它充当命令行参数。

    【讨论】:

    • 问题是我不想在计算机中安装“Tool.exe”二进制文件。我只想执行它。
    • @Sanketh P B 提出的解决方案可能会破坏您的注册表。我正在从命令行编译我的安装程序,并且“DllEntry="CAQuietExec"' 行使我的注册表处于无法修复的状态,因为安装程序安装良好,但没有在退出时需要文件。在最终重新创建我的虚拟机之前,我花了几个小时试图解决这个问题。我应该有还原点,但我当然没有(我的 VM 的基本设置有问题)。在我最终放弃之前,这浪费了我几个小时的时间。小心!
    • @Shadoninja :使用 WixCAQuieExec 不会损坏任何注册表。这完全取决于您在该操作中运行的可执行文件。
    【解决方案2】:

    您是否尝试在此page 上这样做,以静默模式运行 CA

    查看RemoveFiles的链接

    【讨论】:

    • 是的,我以前使用过 WixQuietExecCA,但我的问题是我想嵌入一个二进制文件 (.exe) 并在安装过程中执行它,但我不希望 ".exe" 文件安装在一个文件夹中。
    • 在您完成安装后,在安装顺序的正确位置删除它。
    • 所以我必须将 .exe 作为 元素安装在 内。在 InstallFinalize 操作之前,我应该执行一个像 "del [InstallDir]\tool.exe" 这样的 cmd 行?
    • 查看我添加到 removeFiles 的链接
    • 但是 RemoveFiles 动作是在 InstallFiles 动作之前执行的,所以没有办法在不改变这两个动作的顺序的情况下部署文件,执行它然后删除它。我看到的唯一选择是使用“命令行删除文件”等自定义操作删除文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2015-09-13
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多