【问题标题】:VS setup project destroys self when installed files are deletedVS安装项目在安装文件被删除时破坏自我
【发布时间】:2012-06-07 15:09:46
【问题描述】:

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

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

我尝试了几种文件属性的组合,但似乎没有什么能完全满足我的要求,我的安装程序将它们放在我说的地方,不再考虑它们。我是否必须重新发明轮子并通过自定义操作来做到这一点?

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

【问题讨论】:

    标签: visual-studio-2010 c#-4.0 installation vdproj


    【解决方案1】:

    当使用文件关联或公布的快捷方式时,Windows Installer 会自动检查是否缺少 component key paths。如果未找到密钥路径,则会触发修复以重新安装组件。

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

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

    另一个解决方案是确保您的图像文件不是其组件中的关键路径。 Visual Studio 也不支持此功能。

    如果您想使用提供更多控制的设置创作工具,可以查看此列表:http://en.wikipedia.org/wiki/List_of_installation_software

    【讨论】:

    • 感谢您的回复!我知道 Visual Studio 安装项目并不理想(在 VS2012 中甚至不支持),但我现在承诺。似乎最适合我需要的 hack 是让安装程序将文件放在安装目录中,然后编写自定义操作将它们复制到用户数据目录,因此 Windows 安装程序不知道数据中的文件目录再次,我非常感谢您的回复,我不确定我是否会得到一个好的答案!
    猜你喜欢
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多