问题标签 [uninstallation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
10989 浏览

windows-installer - 有人得到了 MSIINV.EXE 的副本吗?

有人有 MSIINV.EXE(MSI Inventory 工具)的副本吗?以前可用的站点已关闭(http://www.huydao.net/)。我正在尝试卸载某些组件以强制 Visual Studio 安装程序重新安装它们。我很抱歉,因为这不是一个严格的编程问题,但我认为任何安装了一些 Visual Studio 测试版的人也可能遇到了这个问题。

0 投票
4 回答
7432 浏览

registry - 使用程序卸载键中的 EstimatedSize 值在“添加/删除程序”列表中正确显示程序大小

在为我开发的应用程序创建卸载程序注册表项期间,我尝试使用 EstimatedSize 值,不幸的是,我指定的值没有出现在我的程序条目旁边的“添加/删除程序”列表中。我试图找到使用此值的正确程序,但无济于事。有人对这个问题有任何经验吗?您的帮助将不胜感激。

Divo让我走上了正确的道路,所以我想我会发布有关如何正确显示 EstimatedSize 值的分步说明。

  1. 创建具有所有相关属性的注册表项,包括 EstimatedSize。此值将复制到注册表中的 ARPCache 键中
  2. 在 ARPCache 文件夹中找到注册表项,删除 SlowInfoCache 二进制值,并将 Changed 值设置为 1。
  3. 下次打开添加/删除程序列表时,您将看到您在 EstimatedSize 条目中指定的值,而不是 Windows 生成的任意值。
0 投票
1 回答
3132 浏览

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

我需要实现以下目标: MSI 的卸载应该显示一个用户对话框,基于该对话框 Windows Installer 知道如何准确删除软件(在这种情况下:用户必须选择是否也删除数据库)。

运行时,卸载过程也会触发自定义操作。所有这些操作都需要管理权限。

所以我需要让“程序和功能”在“删除”上显示完整的 UI,或者在点击“更改”然后删除时显示管理权限的身份验证对话框。

我该怎么做呢?

0 投票
7 回答
309925 浏览

windows - 当系统上没有可执行文件时如何卸载 Windows 服务?

当系统上没有可执行文件时,如何卸载 Windows 服务?我无法运行installutil -u,因为系统上没有可执行文件。我仍然可以在“服务”控制台中看到该服务的条目。

出现这种状态的原因可能是因为msi包中的一个问题没有正确移除服务,但是一旦服务处于这种状态,我该如何修复呢?

0 投票
2 回答
10081 浏览

visual-studio-2008 - Visual Studio 2005 -> 2008/10 服务安装程序项目升级问题

我已经升级了一个 [.vdproj MSI generator project built into VS2008] System.Configuration.Install.Installer with a ServiceProcessInstallerand a ServiceInstallerfrom Visual Studio 2005 to 2008. 安装程序类没有后果的自定义(即,不尝试启动或停止服务或注册儿童)

RemovePreviousVersions设置为true,我正在更改Versionand ProductCode。这会在安装过程中触发错误:

“错误 1001:指定的服务已存在”

谷歌搜索产生的东西(但直到现在还没有):-谷歌“指定的服务已经存在”
我迄今为止看到的最有用的一个是http://forums.msdn.microsoft.com/en-US/winformssetup /thread/b2d1bd22-8499-454e-9cec-1e42c03e2557/ 但这并不能回答基本问题:-

鉴于用户可以选择:
a) 相同的安装位置
或 b) 不同的安装位置,
为了确保卸载旧服务并安装新服务,明智地做出的最小代码更改是什么?或者,对于将具有相同名称(即签名)的相同服务的 v1.0.1 升级到 v1.0.2 的基本场景,是否需要更改代码来解决此问题

(AIUI 强命名只有在旧安装程序中有重要的卸载步骤而新安装程序中没有时才会发挥作用。)

我在 VS 2008 中生成了一个新的安装程序,但效果并不好。

目前,我的解决方法是停止更新Versionand ProductCode,当用户被告知他们已经安装了一个版本时,强制用户手动卸载。

附录感谢divo 的探测:虽然可能可行的最简单的黑客攻击是说“如果调用安装步骤并且它是升级,请先调用服务的卸载步骤”,但我想要一个正式的官方祝福答案!(例如,在升级期间重命名服务时,简单的 hack 如何应对?)

0 投票
1 回答
252 浏览

registry - 我的卸载过程如何正确处理还原注册表项?

有时需要在应用程序安装期间修改 Windows 注册表设置。我最近对卸载时不恢复这些设置的应用程序感到沮丧。当我对此进行更多思考时,我突然想到可能没有一种好的(或有效的)方法来保存和恢复注册表设置。以以下事件序列为例:

  1. 应用程序 A 拥有文件扩展名的打开操作.abc
  2. 应用程序 B 已安装,并劫持文件扩展名的 Open 操作.abc
  3. 应用程序 A 已卸载。
  4. 应用程序 B 已卸载。

在第 3 步,如果应用程序 A 足够聪明,它将检测到它不再拥有 Open 操作,因此将跳过任何恢复它的尝试。

在第 4 步,应用程序 B 是否可以采取任何有效的操作?

  • 什么都不做会使 Open 操作指向已删除的可执行文件。
  • 恢复指向应用程序 A 的指针同样是一个已删除的可执行文件。
  • 不允许询问用户,因为这通常被认为超出了典型用户的技术技能。如果您不同意,请在步骤 1 和 2 中替换您认为超出用户回答范围的不同注册表更改。
  • 删除该动作同样需要用户稍后做出不知情的决定,或者使某些功能对用户不可用。

这只是我可以设想的许多糟糕情况之一,其中没有明显的唯一“正确”解决方案。我的下一个项目将需要在安装期间更改注册表,我想知道卸载的最佳或推荐做法。不幸的是,我被当前商业软件包中不良的卸载实践所困扰,所以我知道这里没有关于最佳实践的共识,要么做很多工作才能做到这一点,要么就是注册表中的设计缺陷, 或两者。

这对我来说是一个非常现实的编程问题。我将其标记为主观,因为我不确定是否有任何一刀切的正确答案。请随意不同意。

0 投票
4 回答
386 浏览

installation - .NET 程序不断安装旧版本

我在使用 .NET 程序时遇到了一个相当烦人且耗时的问题。我们的客户都使用我们在 Visual Studio 2005 中编写的软件(运行 .NET framework 3.5)。该应用程序是一个安装项目,它从另一个项目中获取其文件。问题是,每当我进行代码更改并将新版本上传到服务器时,某些电脑不会得到更改。以下是我们为升级所做的步骤:

  1. 使用添加/删除程序卸载旧软件。
  2. 重新启动机器。
  3. 访问我们的网站并运行 setup.msi 文件。
  4. 安装新软件。
  5. 运行应用程序。

问题是当他们运行应用程序时,他们仍然得到旧版本。它只发生在某些没有特定模式的电脑上。我很肯定这不是互联网缓存,因为一位同事直接通过 ftp 将 msi 文件复制到那里。我们通过将安装目录(包括清单、部署、exe 和所有这些东西)复制到他们的 PC 上来解决这个问题。这似乎有效,但它不应该是必要的。我难住了。我什么都试过了。我不能重复这个问题——设置对我来说很好;即使我有旧版本,它也会升级它。Windows 是否以某种方式缓存设置或我应该知道的事情?请帮助:) 谢谢!

0 投票
1 回答
1952 浏览

windows - 如何在 Vista x64 上卸载 Intel C++ Compiler (ICC) 11?

我为 x86 和 x64 目标安装了 ICC 11.0.066 的组合包,带有所有选项(IPP、TBB、MKL)。尝试从“控制面板”>“程序和功能”运行卸载程序会立即出现错误并显示对话框:

启动了另一个卸载实例。
完成后请稍等...

这发生在还卸载了 VTune(成功)后,但在重新启动后无法自行解决,等等。

如何强制英特尔编译器自行卸载和清理?

0 投票
4 回答
10277 浏览

installshield - InstallShield:卸载时删除已安装的文件

在安装时,我将一些文件复制到“System32”文件夹中。卸载时这些文件不会被删除。为什么?

0 投票
2 回答
750 浏览

linux - 你如何在 *nix 中卸载?

我仍然无法理解的一件事是在 *nix 环境中卸载程序的经验法则。大多数时候,我很乐意让睡狗躺着,而不是卸载我不再需要的软件。但有时我会遇到几个 Apaches、svn 等。

到目前为止,这是我所知道的处理这个问题:

1) 如果您使用 apt-get 或 yum 安装,则有一个卸载命令。应用程序文件夹中很少有卸载脚本,例如uninstall.sh

2) 要确定从命令行调用哪个特定安装,请使用“type -a”命令

3)使用“sudo find / | grep”来查找其他可能安装的东西(据我所知,类型只查找PATH变量中的东西)

4)在 PATH 中添加/更改事物的顺序以使所需的应用程序版本排在第一位,或者为 .bashrc 添加别名

5)删除我不再想要的东西。如果应用程序仅安装在一个文件夹中,这很容易,但如果有多个文件夹,则很棘手。我听说过的一个技巧是运行具有时间范围的查找,以查找在安装发生时发生更改的所有文件 - 这大致显示了更改和添加的内容。

你有什么要补充/更正的吗?