Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/installation/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation 根据“更新版本然后更新日期”规则覆盖文件_Installation_Windows Installer_Advanced Installer - Fatal编程技术网

Installation 根据“更新版本然后更新日期”规则覆盖文件

Installation 根据“更新版本然后更新日期”规则覆盖文件,installation,windows-installer,advanced-installer,Installation,Windows Installer,Advanced Installer,在InstallShield中,它允许我们使用更新的版本然后更新的日期规则覆盖文件。 有人能告诉我在高级安装程序中实现这样的功能是可能的吗? 谢谢大家! 此选项在高级安装程序中不可用,但您可以选择始终覆盖计算机上存在的文件,请参阅。此选项在高级安装程序中不可用,但您可以选择始终覆盖计算机上存在的文件,请参阅。我从一个可能最好的答案开始:不在乎。MSI在这里遵循非常充分的默认规则,如果它们不适合您的情况,您可能不得不改变策略;你的要求不是最佳实践,危险,有矛盾等等 更详细地说: 1如果文件有版本,

在InstallShield中,它允许我们使用更新的版本然后更新的日期规则覆盖文件。 有人能告诉我在高级安装程序中实现这样的功能是可能的吗?
谢谢大家!

此选项在高级安装程序中不可用,但您可以选择始终覆盖计算机上存在的文件,请参阅。

此选项在高级安装程序中不可用,但您可以选择始终覆盖计算机上存在的文件,请参阅。

我从一个可能最好的答案开始:不在乎。MSI在这里遵循非常充分的默认规则,如果它们不适合您的情况,您可能不得不改变策略;你的要求不是最佳实践,危险,有矛盾等等

更详细地说:

1如果文件有版本,则不必关心设置。关注开发构建/CM过程。最好的办法是确保每次编译文件时都将文件版本设置得更高。奇怪的是,很少有公司能实现这个简单的目标

2 Windows installer文件中包含的文件的最后更改日期在MSI中并不重要,这是一个非常好的决定!日期通常是非常糟糕的鉴别器。最有趣的例子是,V1.0的修补程序比V2.0更新-是的,有时需要支持旧版本行:- 所以,忘了日期吧。经验法则是:未版本化的文件通常会被覆盖,并且会出现少数例外情况,而这些例外情况您首先不需要知道

3您必须更详细地告诉我们,如果存在问题,您的问题是什么,或者除了默认行为之外,您还想获得什么??!例如,安装后,您是否在使用相同版本或用户编辑的文件进行覆盖时遇到问题

-

4完整详细信息,仅当感兴趣时才提供:在MSI中,文件覆盖规则对所有文件都是全局的,这对于旧的安装程序/脚本开发人员来说有点可怕,但它可以工作,您必须稍微更改您的居住环境

高级安装程序只是MSI Windows安装程序的GUI包装,所以首先您必须稍微了解MSI

下面是MSI文件在MSDN上覆盖的整个过程,称为文件版本控制规则

和往常一样,MS在MSI文档中做的工作非常准确。这是MSI中最好的东西之一。。内幕笑话


如果你阅读了该链接的所有小节,我认为对大多数人来说,这似乎相当复杂。一旦理解了,它就会像往常一样简单。

我从一个可能最好的答案开始:不在乎。MSI在这里遵循非常充分的默认规则,如果它们不适合您的情况,您可能不得不改变策略;你的要求不是最佳实践,危险,有矛盾等等

更详细地说:

1如果文件有版本,则不必关心设置。关注开发构建/CM过程。最好的办法是确保每次编译文件时都将文件版本设置得更高。奇怪的是,很少有公司能实现这个简单的目标

2 Windows installer文件中包含的文件的最后更改日期在MSI中并不重要,这是一个非常好的决定!日期通常是非常糟糕的鉴别器。最有趣的例子是,V1.0的修补程序比V2.0更新-是的,有时需要支持旧版本行:- 所以,忘了日期吧。经验法则是:未版本化的文件通常会被覆盖,并且会出现少数例外情况,而这些例外情况您首先不需要知道

3您必须更详细地告诉我们,如果存在问题,您的问题是什么,或者除了默认行为之外,您还想获得什么??!例如,安装后,您是否在使用相同版本或用户编辑的文件进行覆盖时遇到问题

-

4完整详细信息,仅当感兴趣时才提供:在MSI中,文件覆盖规则对所有文件都是全局的,这对于旧的安装程序/脚本开发人员来说有点可怕,但它可以工作,您必须稍微更改您的居住环境

高级安装程序只是MSI Windows安装程序的GUI包装,所以首先您必须稍微了解MSI

下面是MSI文件在MSDN上覆盖的整个过程,称为文件版本控制规则

和往常一样,MS在MSI文档中做的工作非常准确。这是MSI中最好的东西之一。。内幕笑话


如果你阅读了该链接的所有小节,我认为对大多数人来说,这似乎相当复杂。一旦理解了,它就会像往常一样简单。

我的新答案,特别是对于相同版本的问题

两种可能的方法:

第一种方法:测试!至少在发布安装程序之前,将安装结果与源代码进行比较。总是一个好的推荐。然后打那些忘记增加版本号的开发者,说MSI要求你有一个干净的版本处理。否则,您的文件不会被e覆盖 现有的旧版本。我已经这样做了。他成功了。 在第一个版本中不需要,但在更新中需要

第二种方法:始终将属性模式与e一起使用。这意味着始终仅使用文件版本文件级别规则覆盖现有文件。例如,您将MSI硬编码属性模式与值emus。这仍然允许您覆盖它,例如在维修时,它应该是vemus。更清楚的是,只在命令行中设置此属性,然后需要setup.exe或其他引导程序

第二种方法更舒适,但现在您失去了一个非常干净的文件版本处理。 如果您在公司的两个不同设置产品中有一个共享文件,版本为1.0,它确实较旧,它将覆盖版本为1.0的较新文件

如果您没有共享文件,它就可以工作。但是您现在确实依赖于安装更新过程的版本管理,因此更重要的是,要确保产品1.1而不是文件不能安装在更新的产品版本1.2或2.0上

第三种方法后来添加:

如果您只在MSI中进行主要升级,例如没有补丁,并且您依赖于在安装新版本之前卸载旧版本的策略,例如InstallShield中的默认策略,那么通常情况下,在没有共享文件等情况下,您将不会再次出现过多安装文件的情况。如果这样做,不要使用MS的合并模块,除非你是专家


没有更好的选择。

我给出了新的答案,特别是对于相同版本的问题

两种可能的方法:

第一种方法:测试!至少在发布安装程序之前,将安装结果与源代码进行比较。总是一个好的推荐。然后打那些忘记增加版本号的开发者,说MSI要求你有一个干净的版本处理。否则,您的文件不会覆盖现有的旧版本。我已经这样做了。他成功了。 在第一个版本中不需要,但在更新中需要

第二种方法:始终将属性模式与e一起使用。这意味着始终仅使用文件版本文件级别规则覆盖现有文件。例如,您将MSI硬编码属性模式与值emus。这仍然允许您覆盖它,例如在维修时,它应该是vemus。更清楚的是,只在命令行中设置此属性,然后需要setup.exe或其他引导程序

第二种方法更舒适,但现在您失去了一个非常干净的文件版本处理。 如果您在公司的两个不同设置产品中有一个共享文件,版本为1.0,它确实较旧,它将覆盖版本为1.0的较新文件

如果您没有共享文件,它就可以工作。但是您现在确实依赖于安装更新过程的版本管理,因此更重要的是,要确保产品1.1而不是文件不能安装在更新的产品版本1.2或2.0上

第三种方法后来添加:

如果您只在MSI中进行主要升级,例如没有补丁,并且您依赖于在安装新版本之前卸载旧版本的策略,例如InstallShield中的默认策略,那么通常情况下,在没有共享文件等情况下,您将不会再次出现过多安装文件的情况。如果这样做,不要使用MS的合并模块,除非你是专家


没有更好的选择。

这些实际上是Windows安装程序规则,而不是InstallShield规则。而且,这并不是对过程的准确描述。有关更多信息,请参阅:在MSI问世之前,更新版本然后更新日期至少是InstallShield V3.x/V5.x/V6.x/V7.x的一条规则:-80/90年代的东西。我不确定,如果它们因某些遗留脚本项目类型而幸存下来,我当然不会使用它们:-请参阅下面的答案。这些实际上是Windows安装程序规则而不是InstallShield规则。而且,这并不是对过程的准确描述。有关更多信息,请参阅:在MSI问世之前,更新版本然后更新日期至少是InstallShield V3.x/V5.x/V6.x/V7.x的一条规则:-80/90年代的东西。我不确定,如果它们在某些遗留脚本项目类型中幸存下来,我当然不会使用它们:-请参阅下面的答案。有没有办法在高级安装程序中模拟此功能?e、 g.编写一个自定义脚本来完成这项工作?恐怕不行,用高级安装程序构建的MSI包遵循上面Christopher链接的文件版本控制规则文章,您不能修改。有没有办法在高级安装程序中模拟此功能?e、 g.编写一个自定义脚本来完成这项工作?恐怕不行,使用高级安装程序构建的MSI包遵循上面由Christopher链接的文件版本控制规则文章,您无法修改。3我担心的问题是,以前的开发人员可能会忘记在编辑文件(例如DLL文件)后更新文件的版本。如果他是f
尽管如此,我仍然可以比较文件的修改日期以确定是否覆盖。正如我所说,文件日期太弱。同事用outlook发送文件:日期已更改。将文件放在服务器上,如果您将其复制回去,时间有时会发生变化。NTFS和FAT具有不同的时间分辨率,如果涉及Linux服务器,这一点更为正确。当我做补丁时,Windows会对夏天感到困惑。如果你多年来开始收集所有这些场景,那就太多了,有些场景很奇怪,有些场景至少是确定的,但并不广为人知。3我担心的问题是,以前的开发人员可能会忘记在编辑(例如DLL文件)后更新文件的版本。如果他不这样做,我仍然可以比较文件的修改日期,以确定是否覆盖。正如我所说,文件日期太弱。同事用outlook发送文件:日期已更改。将文件放在服务器上,如果您将其复制回去,时间有时会发生变化。NTFS和FAT具有不同的时间分辨率,如果涉及Linux服务器,这一点更为正确。当我做补丁时,Windows会对夏天感到困惑。如果你开始收集多年来,所有这些场景,这是很多,有些是奇怪的,有些至少是确定的,但并不广为人知。谢谢你的友好回复。这些评论真的帮了我很大的忙。谢谢你的回复。这些评论对我帮助很大。