我正在使用InstallAware进行构建并支持Web更新。在安装过程中,第一次允许用户选择目标文件夹。系统还提供默认值。
在用户选择自定义文件夹而不是默认文件夹之前,一切正常。在更新模式下,安装程序将应用程序安装在默认目标目录中,而不是用户选择的目录中。作为InstallAware的文档,更新模式将首先卸载应用程序,然后再次安装。因为我以静默方式运行更新,安装程序将获得默认值。
如何将其安装在原始目的地?
答案 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没有它,所以你必须自己做:
请注意,只有win32 DLL,VBScript和WiX Toolset自定义操作才能设置安装程序属性。