installation - 在“添加/删除程序”中隐藏卸载程序?

标签 installation windows-installer uninstallation

我正在使用 Visual Studio 2005 创建 Windows 安装程序项目。

是否有一个选项可以使我的项目在“添加/删除程序”中没有卸载选项?

我的一位客户要求我这样做。原因如下:因为安装程序是现有程序的补丁。卸载后,该程序不再工作,因为修补的文件被卸载。我们没有找到恢复被替换文件的方法(我们无法使用此安装程序做到这一点),而是想知道是否可以禁用卸载。

最佳答案

您只需使用 Orca 在安装程序的属性表中设置 ARPSYSTEMCOMPONENT=1 (据我所知,不能直接在 Visual Studio 中完成)

当程序安装依赖项并且您不希望用户手动卸载依赖项时,通常会使用此方法,他们需要使用您提供的特定卸载脚本或其他内容。

就我个人而言,我会将补丁编写为补丁并防止补丁被卸载。

我还建议您获取 The Definitive Guide to Windows Installer 的副本这会给你一些关于如何、为什么以及在哪里应该使用诸如此类的技巧的解释。不仅可以让您很好地理解 Windows 安装程序的基础知识,而且从长远来看还可以帮助您设计出更好的安装程序。书中的所有示例都使用 Visual Studio + Windows Installer SDK. 中的免费工具。

编辑:用户仍然可以完全控制通过 MSIEXEC 进行卸载,通过您提供的自定义卸载快捷方式,这只是隐藏“添加/删除程序 (ARP)”中的条目

编辑2:添加属性的示例 VBS(如果您想将其作为自动构建过程的一部分)

Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase ("test.msi", 1)

Set view = database.OpenView ("INSERT INTO Property(Property.Property, Property.Value) VALUES('ARPSYSTEMCOMPONENT', '1')")
view.Execute

Set database = Nothing
Set installer = Nothing

关于installation - 在“添加/删除程序”中隐藏卸载程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/463030/

相关文章:

installation - MSI 安装程序错误 2810 中断安装,但还是让它顺利完成

visual-studio - 安装 VS Ultimate 后卸载 VS Express 是否安全?

r - 安装 RWeka 时遇到问题

Java server jvm 在windows 32位系统上的安装

为在另一台服务器上注册域的站点安装 SSL 证书

visual-studio-2012 - 使用 Wix 生成 MSI

c# - 如何在 Web 安装项目中创建新的应用程序池?

android - 卸载 Android 应用程序时,应用程序启动器图标不会从主屏幕中删除

ruby-on-rails - 如何从 Rails 应用程序中卸载 Cucumber?

c# - 如何向用户显示安装程序