InstallAware将原始targetdir保持在更新模式

时间:2012-01-04 06:14:26

标签: installer installaware

我正在使用InstallAware进行构建并支持Web更新。在安装过程中,第一次允许用户选择目标文件夹。系统还提供默认值。

在用户选择自定义文件夹而不是默认文件夹之前,一切正常。在更新模式下,安装程序将应用程序安装在默认目标目录中,而不是用户选择的目录中。作为InstallAware的文档,更新模式将首先卸载应用程序,然后再次安装。因为我以静默方式运行更新,安装程序将获得默认值。

如何将其安装在原始目的地?

3 个答案:

答案 0 :(得分:4)

幸运的是,InstallAware默认实现了非常简单的方法来实现这一功能。

您可以跟踪设置“LOADOLDDATA”InstallAware预定义编译器变量的各种安装参数。

如果设置为TRUE,则安装引擎将从旧版本的安装程序加载功能定义和其他已保存数据(另请参阅“加载功能选择”命令以获取IA文档中的更多详细信息)。通常,当为维护或卸载操作使用相同的已安装应用程序版本时,此数据仅在相同版本的安装程序之间加载。对于此编译器变量的任何其他值,将保留此正常行为。

或者,如果您希望在不同版本的设置之间迁移参数状态,可以在脚本代码中使用“保存功能选择”和“加载功能选择”。

希望这会对你有所帮助。

答案 1 :(得分:1)

我将尝试在即将开展的项目中使用InstallAware的Web更新;我的可行性研究的一部分包括本白皮书,虽然从版本7.0开始,我认为它仍然相关:http://www.installaware.com/installaware_web_updates.pdf

对于您的问题,最重要的是,第14页指出:


  

确定更新客户端的位置

     

对于All Users安装,请查看以下注册表项:   HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载\    

     

对于Just Me安装,请查看以下注册表   键:   HKEY_CURRENT_USER \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载\    

     

在这两种情况下,请读取UninstallString字符串值的数据。一个   此字符串的典型值为:“C:\ Documents and Settings \\ Application Data \\。exe”REMOVE = TRUE MODIFY = FALSE在您的字符串中解析此字符串   应用程序删除命令行参数REMOVE = TRUE   MODIFY = FALSE以及主字符串周围的双引号。   最后一个字符串,指示更新客户端的位置(如   以及您的安装程序)应该是这种形式:C:\ Documents and   设置\\ Application Data \\。exe


您需要读取该键值并将值分配给MSI代码中的$ TARGETDIR $(我相信这是名称)变量。

希望有所帮助。您可能还想查看patching上的白皮书,因为这样可以避免完整的安装程序下载,以及仅包含文件delta的补丁,从而阻止完全卸载。

答案 2 :(得分:0)

大多数设置创作工具都包含一种机制,用于检索原始安装路径并在升级期间使用它。我猜InstallAware没有它,所以你必须自己做:

  • 写一个找到旧安装路径的custom action
  • 此自定义操作应将安装文件夹属性设置为旧路径
  • 自定义操作必须在CostFinalize操作
  • 之前运行

请注意,只有win32 DLL,VBScript和WiX Toolset自定义操作才能设置安装程序属性。