0

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

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

我怎样才能让它安装在原来的目的地?

4

3 回答 3

4

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

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

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

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

希望这对您有所帮助。

于 2012-11-23T12:34:35.857 回答
1

我将尝试在即将到来的项目中使用来自 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$ (我相信这是名称)变量。

希望有帮助。您可能还想查看他们关于补丁的白皮书,因为这将避免完整的安装程序下载,以及仅包含文件增量的补丁,从而防止完全卸载。

于 2012-03-02T08:03:47.353 回答
0

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

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

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

于 2012-01-04T08:25:03.070 回答