2012-06-06 149 views
0

这应该很简单,但我似乎无法得到它。我有一个安装项目(VS2010),它打包几十个图像文件(以及我的SQLite文件),并在程序安装时将它们复制到用户的计算机上。由于这些图像本质上是“库存”图像,因此如果用户删除它们(在程序内部有功能可以这样做)。然而,在删除了一个或多个这些图像之后,下一次程序启动时,它会给出一个“Windows安装程序”对话框,并删除所有剩余的数据文件!安装文件被删除后,VS安装项目会破坏自我

我认为发生的事情是程序看到丢失的文件,假定安装已损坏,并尝试进入某种恢复/卸载模式。我想知道如何在安装项目中指出需要安装的文件,但可以随时由用户删除。

我已经尝试过几种文件属性的组合,而且似乎没有什么能够完成我想要的功能,这是我的安装程序将它们放在我说的地方,并且再也不用考虑它们。我是否必须重新发明轮子并通过自定义操作来完成此操作?

编辑:传递和重要都被设置为True。将它们设置为False会导致程序在重新启动后重新添加删除的图像!如果我没有得到答案,我可能会采用自定义操作。

回答

2

当使用文件关联或公布的快捷方式时,Windows安装程序会自动检查component key paths是否丢失。如果找不到键路径,则会触发修复以重新安装组件。

您的安装程序修复过程很可能会删除其他文件。

解决方案是不向Windows Installer注册组件。这是通过使用空组件GUID完成的,并且它不受Visual Studio安装项目支持(但它受到大多数其他安装工具的支持)。

另一种解决方案是确保图像文件不是其组件中的关键路径。这也不受Visual Studio支持。

如果要使用安装创作工具,它提供了更多的控制,你可以在这个列表看看:http://en.wikipedia.org/wiki/List_of_installation_software

+0

感谢您的答复!我知道Visual Studio安装项目并不理想(甚至在VS2012中也不会支持),但我承诺在这一点上。这种看起来最适合我的需求是让安装程序将这些文件放在安装目录中,然后编写一个自定义操作将它们复制到用户数据目录中,这样Windows安装程序就不会知道数据中的那些DIR。 再一次,我真的很感谢你的回应,我不确定我会得到一个很好的答案! –

相关问题