【问题标题】:Basic MSI installer not replacing deleted files on re install基本 MSI 安装程序不会在重新安装时替换已删除的文件
【发布时间】:2013-11-18 14:19:49
【问题描述】:

我可能会遗漏一些非常简单的东西,但由于某种原因,在重新安装我的基本 MSI 安装程序(Installshield 2009)时没有从已安装目录写入已删除的文件,如果我删除该组件的密钥文件,它会写入整个组件文件,但是我删除的非关键文件没有在重新安装时写入。 我尝试在安装之前设置卸载自定义操作,但这没有用,我目前正在使用删除所有文件自定义操作在设置浏览对话框位置后触发,看起来很难看。

我确信有一种简单的方法可以实现我想要的。

【问题讨论】:

    标签: installation windows-installer


    【解决方案1】:

    在“重新安装”或“修复”时,我不希望删除任何文件。目的是将安装恢复到原始状态。

    使用组件和修复:如果您在一个组件中有多个文件,除非删除密钥文件,否则修复不会恢复其他文件。最佳做法是为每个组件创建一个文件,并将该文件作为该组件的关键路径。

    我也会避免任何形式的“删除所有文件”自定义操作。如果您有要在卸载时删除的文件,请考虑使用 RemoveFile 表。

    编辑添加:如果您有安装程序未安装的文件,而是一些程序本身的工件。无需使用 RemoveFile 表或自定义操作来删除 MSI 本身安装的文件。

    【讨论】:

    • 感谢您回复我的请求,但是我有很多文件,我不希望将每个文件都放在单独的组件中,当然必须有一个设置来简单地清理目标目录,然后再重新-安装产品或安装更新版本。
    • 如果您的文件不是 DLL/exe 类型的文件(例如 .bmp 或其他文件),那么是的,您应该将它们全部组合到一个组件中(每个文件夹)ala:msdn.microsoft.com/en-us/library/windows/desktop/…跨度>
    • 如果您启动安装程序并设置属性 REINSTALLMODE (msdn.microsoft.com/en-us/library/aa371182(v=vs.85).aspx) 您可以拥有比平时更多的安装程序。
    • 我已经转到直接编辑器并将 Reinstallmode 参数从 omus 更改为 amus 没有区别,因为我在重新安装时仍然没有得到非关键文件...
    • 您的日志是否显示 REINSTALLMODE 仍然作为 amus 存在?我认为在重新安装/修复中,除非从命令行设置 REINSTALLMODE,否则它将默认恢复为初始安装时存在的任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多