【问题标题】:How to prevent Installshield from removing files?如何防止 Installshield 删除文件?
【发布时间】:2010-07-28 06:36:35
【问题描述】:

我正在使用 Installshield 2008 Primer Edition 开发一个包,项目类型是 Installscript MSI 项目。

我面临的问题是在安装过程中我正在将一些文件安装到以下位置C:\Program Files\Company\SystemFiles 从这个位置我复制并添加一组文件到 System32 文件夹中,它包含DLL 和 OCX 文件,已使用 Installscript 复制到 System32 文件夹中。

因此,在卸载过程中,已安装的文件将从 System32 中删除,因为需要相同 DLL 集的其他依赖应用程序已停止工作。

我已联系 Installscript 将文件从 ProgramFiles 复制到 System32 文件夹,而不是使用内置选项,因为我们在升级过程中遇到问题,以避免我使用 Installscript。

即使我已经尝试了几种解决方法,例如在文件复制到 System32 后使用安装脚本设置文件属性,如 FILE_ATTR_SYSTEM,它设置系统属性,但在卸载过程中仍然会删除文件。

知道如何将文件属性设置为 PERMANENTSHARED;这会有帮助吗?如果有帮助,那么我该如何使用 Installscript 进行设置?

【问题讨论】:

    标签: installshield-2008


    【解决方案1】:

    我有两个想法 1)我认为您可以使用 SHARED 选项,因为这不会在卸载时删除文件。

    2)另外,当我遇到类似问题时,我所做的是将所有必需的文件放在安装目录本身中,以便在卸载时只删除已安装的文件。(我知道这不是最好的解决方案)

    (注意:我在大约 6 年前从事 Install shield 工作,所以只记得某些事情)

    【讨论】:

    • 感谢 Raghu 的帮助 :) 。我检查了共享选项,问题仍然存在......
    【解决方案2】:

    您还可以从安装脚本禁用日志记录。这将使安装程序“忘记”它安装了特定的文件组或功能。

    您应该确保在复制要永久保留在系统上的文件后再次启用日志记录。

    如果您在禁用日志记录后不记得启用它,您的卸载过程可能无法正常工作。

    语法如下: 禁用(记录);

    //在此处添加复制永久文件的代码 启用(记录);

    【讨论】:

      【解决方案3】:

      我知道这是一个老问题,但我刚刚遇到了这个问题。似乎是一个普遍的问题。一个好的解决方案是将文件暂存到私有目录,主要是程序文件,然后使用自定义操作进行复制和注册(ocx 等)。 Installshield 会记住它复制的内容,因此它倾向于删除它们。不要打扰其他任何事情,例如日志记录(我的建议)。设置自定义操作的条件,使其在卸载期间不运行。 虽然以前我做了另一个只有程序员习惯做的奇怪实现。将文件打包为资源并创建我自己的代码来提取和部署(Process Explorer 这类工具所做的事情)。有某些用例保证了这种实现。但这又是复杂的,显然是在重新发明轮子。除非您精通 C/C++ 和 Windows API,否则这将是困难的。我仍然建议您远离这种实现,因为它也被认为是一种“恶毒行为”。然而,到目前为止,我从未收到反恶意软件产品的警告。

      【讨论】:

        【解决方案4】:

        对于 InstallScript 项目: 要防止在卸载过程中删除特定组件中的文件: 1-从组织文件夹中选择组件视图。 2-选择包含您不想在卸载期间删除的文件的组件。 3-将右窗格中的“卸载”属性更改为“否”的值。

        对于 MSI 项目: 要防止在卸载过程中删除特定组件中的文件: 1-从组织文件夹中选择组件视图。 2-选择包含您不想在卸载期间删除的文件的组件。 3-将右窗格中的“永久”属性更改为“是”。

        【讨论】:

          猜你喜欢
          • 2014-10-09
          • 2013-06-05
          • 1970-01-01
          • 2020-07-30
          • 1970-01-01
          • 2019-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多