InstallShield LE:自定义卸载

Posted

技术标签:

【中文标题】InstallShield LE:自定义卸载【英文标题】:InstallShield LE: Customizing uninstall 【发布时间】:2012-01-27 06:09:19 【问题描述】:

我编写了一个可以更改系统设置的免费实用程序。一些用户错误地认为他们可以通过卸载该实用程序来撤消更改。当他们尝试卸载时,我想向他们显示一条消息,告诉他们必须使用该实用程序才能撤消更改,并让他们选择继续或取消卸载。我该怎么做呢? 我在 Visual Studio 2010 中使用 InstallShield LE。

【问题讨论】:

【参考方案1】:

通常的方法是使用卸载自定义操作。它可以提示用户并返回0继续或1602取消。

此自定义操作需要是接收安装句柄的 win32 DLL。 EXE 或 .NET 自定义操作只能返回 0 表示成功或任何其他值表示致命错误(不支持用户退出)。

很遗憾,InstallShield LE 不支持 DLL 自定义操作(它需要付费版本)。因此,一种解决方案是使用不同的设置工具来提供对自定义操作的更多控制:http://en.wikipedia.org/wiki/List_of_installation_software

另一种解决方案是在您的 MSI 中手动添加自定义操作,方法是使用 Orca 对其进行编辑。

【讨论】:

如何构建自定义 DLL,然后使用 Orca 添加它:codeproject.com/KB/install/msicustomaction.aspx 这里有更多关于编写自定义操作 DLL 的信息:simple-talk.com/dotnet/visual-studio/… CodeProject 链接讨论了“消息框如何最终隐藏在 MSI 对话框后面”。这看起来像是一个可能的解决方案:geekswithblogs.net/Bretshawn/archive/2010/02/19/… 调试自定义动作:网上有各种相关文章;这是一个:davidmoore.info/developedia/debugging/…

以上是关于InstallShield LE:自定义卸载的主要内容,如果未能解决你的问题,请参考以下文章

卸载自定义操作 (InstallShield) 期间删除文件时出错

如何让 InstallShield LE 自动卸载现有安装?

重大更新时的 InstallShield 自定义操作

使用 Installshield 和用户对话框卸载 MSI 时的特权提升

JavaScript 不能在 InstallShield Express 中运行?

卸载期间自定义操作不起作用