Windows installer Visual Studio安装项目如何标记非必需文件?MSI修复工具

Windows installer Visual Studio安装项目如何标记非必需文件?MSI修复工具,windows-installer,setup-project,visual-studio-setup-proje,visual-studio-setup,Windows Installer,Setup Project,Visual Studio Setup Proje,Visual Studio Setup,我有一个VisualStudio安装项目,其中包括许多安装图标。我遇到的问题是这些图标被删除 如果我通过文件系统删除其中一个图标,MSI修复工具将启动并阻止我删除此图标。(坏) 我需要能够安装这些图标作为默认的图标集,但能够在安装后永久删除它们,而无需启动MSI修复工具 我需要做什么才能安装一组文件,但以后可以不受干扰地删除。(非必需文件)使用该工具解决这个问题并不容易。问题是这个工具按照广告的方式创建每个快捷方式,并且每个文件都是它自己组件的密钥文件。它确实为您设置了这些不需要的弹性调用 有很

我有一个VisualStudio安装项目,其中包括许多安装图标。我遇到的问题是这些图标被删除

如果我通过文件系统删除其中一个图标,MSI修复工具将启动并阻止我删除此图标。(坏)

我需要能够安装这些图标作为默认的图标集,但能够在安装后永久删除它们,而无需启动MSI修复工具


我需要做什么才能安装一组文件,但以后可以不受干扰地删除。(非必需文件)

使用该工具解决这个问题并不容易。问题是这个工具按照广告的方式创建每个快捷方式,并且每个文件都是它自己组件的密钥文件。它确实为您设置了这些不需要的弹性调用

有很多方法可以在后期构建步骤中攻击MSI来关闭广告和其他属性,但老实说,我最好的建议是切换到工具集,如Windows Installer XML或InstallShield Limited Edition。您可以使用WiX编写合并模块并使用它,如下所示:


我花了整整一年的时间(2006-2007)与这个工具搏斗,我希望我能找回它

FWIW,我认为您希望在MSI不修复文件的情况下删除这些文件的设计目标是错误的。Windows Installer是一个声明式安装框架,它“拥有”所需的应用程序安装状态,并将始终对其进行维护。这真的没有切实可行的办法


您可以做的是设计应用程序,使“库存”图标位于一个文件夹中,您的应用程序在第一次运行时将其复制到另一个文件夹中,并从那里使用它们。MSI永远不知道这个其他文件夹,因此如果您为文件提供服务(添加/编辑/删除),MSI不会干预。但是,您永远不能删除库存图标,因为MSI将为您修复它。

支持的方法记录在组件表中:

在ComponentId下,它表示可以将其设置为null,以便Windows不会删除或修复该组件。VisualStudio不支持这一点,因此在使用(例如)Windows SDK中的Orca构建MSI后,您需要对其进行编辑。对于不希望修复的文件,将ComponentId设置为null,如果不明显,请查看文件表,查找将引用组件表的文件名和关联组件名


您需要手动或在卸载时使用自定义操作删除文件

如果有人需要更多的澄清,我随时准备,并将尽我所能回答。