强制.msi跳过删除某些文件

时间:2015-03-27 07:23:42

标签: windows-installer major-upgrade installscript-msi

我想让.msi在升级时不删除某些文件。我看到我可以添加要删除的文件,但我没有找到任何信息,如何对.msi说“不要删除它(升级时)”。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

这是一次重大升级,对吗?这是一个包含您需要的所有文件的全新MSI文件。所以只需确保它们也在新的MSI文件中。这就是每个人的所作所为。如果您的旧MSI包含文件A,B,C和D,并且您希望升级到"保持" A,B,C使它们不被移除,将它们放入升级中。为安全起见,请确保它们具有相同的组件ID。我怀疑你对这些事情的运作方式有一些假设我们不知道。

答案 1 :(得分:1)

我成功实现了这一目标。

我创建了两个自定义操作:一个用于备份,另一个用于检索备份。

   <CustomAction Id="BackupCurrentUserConfig"
         BinaryKey="Utility"
         DllEntry="BackupUserConfig"
         Execute="firstSequence" />
   <CustomAction Id="RetrieveUserConfigFromBackup"
         BinaryKey="Utility"
         DllEntry="RetrieveUserConfig" />

我按照以下方式安排了它们:

   <InstallUISequence>
      ...
      <Custom Action="BackupCurrentUserConfig" Before="ExecuteAction"></Custom>
   </InstallUISequence>

   <InstallExecuteSequence>
      ...
      <Custom Action="VM_RetrieveUserConfigFromBackup" After="InstallFiles"></Custom>         
   </InstallExecuteSequence>