【问题标题】:Stopping display of custom dialog boxes in WiX uninstall在 WiX 卸载中停止显示自定义对话框
【发布时间】:2009-10-07 09:05:44
【问题描述】:

我有一个 WiX 安装程序项目,它利用自定义对话框询问参数以更新 web.config 文件并在安装时运行数据库脚本。一切正常,应用程序已安装并正常运行。

但是,当我卸载软件时也会显示自定义对话框,当然不需要(因为我没有更新 web.config 文件)。

有没有办法在卸载应用程序时抑制自定义对话框?

(我还应该在卸载时删除我安装的 sql procs,但这不属于这个问题)。

【问题讨论】:

    标签: wix installation


    【解决方案1】:

    您的问题的解决方案是使用条件 (Not REMOVE="ALL") 来调节自定义操作。这将使操作在全新安装和维护安装时运行,而不是在卸载时运行。如果您不需要在维护安装时运行,而只需在全新安装时运行,您可以将条件设​​置为:(Not Installed AND Not(REMOVE="ALL"))。 MSI 属性的完整列表和简要说明在这里:http://msdn.microsoft.com/en-us/library/aa370905(VS.85).aspx

    MSI 文件中的排序和自定义操作逻辑非常复杂。尽可能避免自定义操作确实值得。

    还有更多 - 所有 MSI 文件都内置了对静默安装的支持。这意味着可以跳过整个 GUI 序列,并且无需用户交互即可安装 MSI 文件。这是通过 SMS / SCCM 或其他部署机制进行企业部署的关键功能。在静默模式下运行安装程序时显示自定义对话框违反了此基本 MSI 功能。您可以通过基于属性 UILevel 正确调节对话框的显示来解决此问题:http://msdn.microsoft.com/en-us/library/aa372096(VS.85).aspx。只是为了让事情变得有趣和令人困惑,Microsoft 在安装过程中定义了 4 个级别的 GUI,从完全静默到各种选项(例如仅进度条等)……有关详细信息,请参阅链接。

    我可以在这里添加很多关于 MSI 序列、条件、自定义操作和类似内容的详细信息,但它不会回答您的问题。请添加任何后续问题。

    【讨论】:

    • 我是 Wix 的新手。我不明白你的意思。我没有安装自定义操作,我正在定义一个 UI 元素来显示自定义屏幕以获取数据以更新 web.config。然后我使用属性(例如 [DATABASENAME])更新 web.config 中的 connectionString,使用 WiXUtilExtension 中的 util:XmlFile ... 命令。
    • 是为了显示我的自定义 UI 元素。
    • 我试图就静默安装提出的主要观点是,如果未显示 GUI,则除非您将 DATABASENAME 的值传递给 msiexec.exe,否则不会设置该值命令行:msiexec.exe /i MyPackage.msi DATABASENAME="mydbserver" /qn
    【解决方案2】:

    Wix sn-p 显示自定义操作的创建并将其插入到 InstallExecuteSequence:

    <!--Custom Action Sample Section-->
    <Binary Id='VBScriptCustomAction.vbs' SourceFile='VBScriptCustomAction.vbs'/>
    <CustomAction Id='test' BinaryKey='VBScriptCustomAction.vbs' VBScriptCall='Hello' Return='ignore'/>
    
    <InstallExecuteSequence>
      <Custom Action="test" Sequence='4111'><![CDATA[NOT REMOVE~="ALL"]]></Custom>
    </InstallExecuteSequence>
    <!-- End of Custom Action Sample Section-->
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 2015-09-27
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      相关资源
      最近更新 更多