我正在使用 InstallAware 进行构建并支持 Web 更新。在安装过程中,首次允许用户选择目标文件夹。系统还提供默认值。
一切正常,直到用户选择他的自定义文件夹而不是默认文件夹。在更新模式下,安装程序将应用程序安装在默认目标目录而不是用户选择的目录中。作为 InstallAware 的文档,更新模式将首先卸载应用程序,然后再次安装。因为我在静默模式下运行更新,安装程序将获得默认值。
我怎样才能让它安装在原来的目的地?
我正在使用 InstallAware 进行构建并支持 Web 更新。在安装过程中,首次允许用户选择目标文件夹。系统还提供默认值。
一切正常,直到用户选择他的自定义文件夹而不是默认文件夹。在更新模式下,安装程序将应用程序安装在默认目标目录而不是用户选择的目录中。作为 InstallAware 的文档,更新模式将首先卸载应用程序,然后再次安装。因为我在静默模式下运行更新,安装程序将获得默认值。
我怎样才能让它安装在原来的目的地?
幸运的是,InstallAware 默认实现了非常简单的方法来实现此功能。
您可以跟踪设置“LOADOLDDATA”InstallAware 预定义编译器变量的各种安装参数。
如果设置为 TRUE,则设置引擎将从旧版本的设置中加载特征定义和其他保存的数据(另请参阅 IA 文档中的加载特征选择命令以获取更多详细信息)。通常,此数据仅在相同版本的安装程序之间加载,当使用相同的已安装应用程序版本进行维护或卸载操作时。对于此编译器变量的任何其他值,都会保留此正常行为。
或者,如果您希望在不同版本的设置之间迁移参数状态,可以在脚本代码中使用“保存功能选择”和“加载功能选择”。
希望这对您有所帮助。
我将尝试在即将到来的项目中使用来自 InstallAware 的 Web 更新;我的可行性研究的一部分包括这份白皮书,尽管来自 7.0 版,我假设它仍然相关: http: //www.installaware.com/installaware_web_updates.pdf
对于您的问题,最重要的是,第 14 页指出:
确定更新客户端的位置
对于所有用户安装,请查看以下注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
对于 Just Me 安装,请查看以下注册表项:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
在这两种情况下,请读取 UninstallString 字符串值的数据。此字符串的典型值为: "C:\Documents and Settings\\Application Data\\.exe" REMOVE=TRUE MODIFY=FALSE 在应用程序中解析此字符串以删除命令行参数 REMOVE=TRUE MODIFY=FALSE作为围绕主字符串的双引号。指示更新客户端(以及您的安装程序)位置的最终字符串应采用以下形式:C:\Documents and Settings\\Application Data\\.exe
您需要读取该键值并将该值分配给 MSI 代码中的 $TARGETDIR$ (我相信这是名称)变量。
希望有帮助。您可能还想查看他们关于补丁的白皮书,因为这将避免完整的安装程序下载,以及仅包含文件增量的补丁,从而防止完全卸载。
大多数设置创作工具都包含一种机制,该机制检索原始安装路径并在升级期间使用它。我猜 InstallAware 没有,所以你必须自己做:
请注意,只有win32 DLL、 VBScript 和 WiX Toolset 自定义操作可以设置安装程序属性。