【问题标题】:how to run RemoveFiles after InstallFinalize in Installshield 2010?如何在 Installshield 2010 中的 InstallFinalize 之后运行 RemoveFiles?
【发布时间】:2012-01-23 09:41:28
【问题描述】:

我使用 Installshield 2010,一个基本的 MSI 项目。

有没有办法在 InstallFinalize 之后使用 RemoveFiles 操作从 RemoveFile 表中删除文件?

我在安装程序的组件中包含一些文件。我使用这些文件来配置其他文件,在 InstallFinalize 之后我想删除它们。

我阅读了有关 RemoveFiles 操作的信息,我注意到该操作在 InstallFiles 之前运行。

是否可以更改或撤回操作?怎么样?

感谢您的宝贵时间!

【问题讨论】:

    标签: installation windows-installer installshield installshield-2010


    【解决方案1】:

    如果您有仅在执行安装程序期间需要的临时文件,请将它们放在支持文件视图而不是组件视图中。

    InstallShield 有一个表 ( ISSetupFile ) 和相关的自定义操作,它们会将这些文件提取到临时目录并将其分配给 [SUPPORTDIR] 属性。它也会在安装结束时为您清理。

    这样您就不会与 MSI 在安装过程中试图让其安装和卸载某些东西作斗争。

    【讨论】:

    • 还取决于您“配置”文件时所做的工作,它们可能是 MSI 中采用更简单设计的其他方式。
    • 感谢克里斯托弗!我成功地使用了支持文件视图,这解决了我的问题。我想用一个特定的证书签署一些文件,并用一个外部程序对它们进行一些更改,我认为我不能用更简单的设计来做到这一点。
    • 我担心你说的是证书。这是敏感文件吗?任何了解 MSI 的人都可以使用 Orca 从 ISSetupFile 表中提取证书。我不知道你的整个故事,但你可能想重新考虑它是如何完成的。也许您将其从安装程序中排除并纳入应用程序首次运行的情况。可能是一个 C++ EXE,其中包含被提取和删除的已加密资源,以更好地保护文件。
    【解决方案2】:

    不,您不能在 InstallFinalize 之后移动 RemoveFiles 操作。正如 MSDN 文档所述,它必须在 InstallFiles 操作之前安排。

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa371199(v=vs.85).aspx

    我建议使用自定义操作来执行清理。

    【讨论】:

    • 自定义操作,例如运行批处理文件来删除文件?如果 installshield 有一个,我虽然可以使用预定义的功能......
    • 是的,类似的。但是您可以通过自定义操作做更多事情:msdn.microsoft.com/en-us/library/windows/desktop/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多