【问题标题】:WiX 3.7: How to add or update a dialog during uninstall?WiX 3.7:如何在卸载过程中添加或更新对话框?
【发布时间】:2013-10-09 08:39:02
【问题描述】:

我需要添加一个对话框,该对话框会在完全卸载(不是重大升级)期间在确认(“您确定要卸载此产品吗?”)对话框后立即弹出。此对话框将提示用户回答问题并根据响应设置将在条件中用于 RemoveRegistryKey 元素的属性(即,仅当用户选择删除注册表项的选项时,它才会删除注册表项)。

我知道如何将对话框添加到安装序列(我正在使用修改后的 WixUI_InstalLDir 序列,我在安装过程中添加了我需要的自定义对话框),但我找不到任何可以解释如何将自定义对话框添加到卸载序列。如果我可以修改卸载确认对话框会更好,这样用户会看到一个对话框而不是两个。一个关键是能够设置一个可以在组件条件中使用的属性。

这可能吗?有没有示例如何做到这一点?

【问题讨论】:

    标签: wix windows-installer uninstallation wix3.7


    【解决方案1】:

    这违反了 Microsoft 设计准则。添加/删除程序使用静默 UI 参数调用卸载,并且从不处理 UI 序列。

    您可以在卸载期间创作 UI 的唯一位置是“更改”或“维护”UI 体验,他们选择修复 |改变 |删除和删除做你的用户界面。但是您必须锁定“删除”按钮并强制它们通过此路径。还意识到他们可以从命令行调用 msiexec /x /qb。

    归根结底,微软做出这一选择是为了让用户的卸载过程变得简单易行。至于删除注册表项,微软会说你应该在卸载时保留用户数据。

    【讨论】:

    • 感谢克里斯托弗的解释。所以,确认提示来自添加/删除程序,而不是来自 MSI,因为如果它在静默模式下运行,我不希望看到任何对话框,包括确认提示,对吧? (咆哮:由于您可以在任何模式下使用静默开关运行安装程序,按照相同的逻辑,微软也不应该在初始安装期间允许任何 UI。我不认为 MSI 开发人员检测到静默安装会出现什么问题,并且在卸载过程中禁止任何 UI,就像在安装过程中一样。嘘,微软。)
    • 正确。初始提示来自 ARP,然后静默调用 MSI。您可以使用 ARPSYSTEMCOMPONENT 属性抑制 ARP 条目,然后使用您自己的调用实现您自己的条目,但这是他们设想的默认最佳实践故事。可以把它想象成从 iPhone 中删除应用程序。按X,它就消失了。不带我去我的网站....等等等等。
    • 这个逻辑的唯一问题是,在卸载应用程序时,将配置保存在注册表或配置文件中的人不知道是删除应用程序数据还是保留它。想想任何媒体查看器应用程序,例如 VLC、MPC-HC、编解码器包。用户可能希望暂时卸载应用程序,而不会丢失配置数据,或删除数据。如果没有办法询问用户,保留数据会更安全,但这会导致注册表和文件系统膨胀,其中包含不需要的条目文件。对于注册表清理应用程序来说是好事,但对其他人来说却是坏事。再次感谢您的回答。
    • 是否保留用户数据是一个有趣的问题。当用户在不同的计算机上使用他的配置文件时,您无法决定是否删除设置。您不知道该软件是否安装在其他计算机上,以及他是否需要在不同的计算机上进行该设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    相关资源
    最近更新 更多