我正在使用 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/