我有一个Visual Studio安装项目,其中包含许多安装图标。我遇到的问题是这些图标被删除。
如果我通过文件系统删除其中一个图标,则MSI修复工具会启动并阻止我删除此图标。 (BAD)
我需要能够将这些图标安装为默认的图标集,但是能够在安装后永久删除它们而不启动MSI修复工具。
我需要做些什么来安装一组文件,但以后可以不受干扰地删除。(非必要文件)
答案 0 :(得分:0)
使用该工具解决这个问题并非易事。问题是这个工具创建了所宣传的每个快捷方式,每个文件都是它自己组件的密钥文件。它确实为您提供了这些不受欢迎的重复性调用。
有一些方法可以在后置步骤中破解MSI以关闭广告和其他属性,但老实说,我最好的建议是切换到Windows Installer XML或InstallShield Limited Edition等工具集。您可以使用WiX编写合并模块并像以下一样使用它:
http://blog.iswix.com/2011/03/redemption-of-visual-studio-deployment.html
我花了整整一年的时间(2006-2007)与这个工具作斗争,我希望我能把它拿回来。
答案 1 :(得分:0)
FWIW,我相信你的设计目标是希望在没有MSI的情况下删除文件而修复它们是错误的。 Windows Installer是一个声明性安装框架,它“拥有”所需的应用程序安装状态,并始终可以维护它。实际上没有切实可行的方法。
您可以做的是设计您的应用程序,以便“库存”图标位于一个文件夹中,并且您的应用程序在首次运行时将它们复制到另一个文件夹并从那里使用它们。 MSI从不知道这个其他文件夹,所以如果你服务文件(添加/编辑/删除),MSI不会干扰。但是,您永远不能删除股票图标,因为MSI会为您修复它。
答案 2 :(得分:0)
支持的方法在组件表中记录:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa368007(v=vs.85).aspx
在ComponentId下,它表示可以将其设置为null,以便Windows不会删除或修复该组件。 Visual Studio不支持此功能,因此您需要在使用(例如)Windows SDK中的Orca构建MSI之后对其进行编辑。对于您不想修复的文件,将ComponentId设置为null,如果不明显,请查看File表中的文件名以及将引用Component表的相关组件名称。
您需要在卸载时手动删除文件或使用自定义操作删除文件。