但是我该如何确保安装程序中的安装路径默认与用户最初安装程序时的路径相同呢?
例如,如果用户将其从“Program Files”更改为“C:\SomeFolder”,我该如何让安装程序检测到并将其安装路径更改为“C:\SomeFolder”,而不是“Program Files”?或者如果用户选择为“当前用户”而不是“所有用户”进行安装,又该怎么办呢?
-右键单击安装程序项目
-查看
-注册表
-在左侧,展开HKey_Local_Machine和Software,然后单击制造商节点
-在右侧,右键单击并添加字符串注册表键
-命名注册表键为InstallDir
-将其值设置为[TARGETDIR]
。
安装程序完成后,您可以看到InstallDir regkey包含位置信息。您的升级程序也可以使用此路径。
通常,“只有我”和“所有人”之间唯一的区别是创建的快捷方式的位置。您可以在安装过程中运行Process Monitor并自行查看。
编辑:
使用以下步骤可以使用InstallDir RegistryKey进行更新程序应用。参考:如何:使用注册表启动条件指定目标目录
-右键单击Updater的安装程序项目
-查看
-启动条件
-添加搜索RegistryKey
-将属性指定为SEARCHFORINSTALLDIR
-将RegKey指定为SOFTWARE\ManufacturerName
-将root指向HKLM
-将值指定为InstallDir
-添加启动条件
-将条件指定为SEARCHFORINSTALLDIR
-保留InstallUrl和Message
-右键单击安装程序项目
-查看
-文件系统
-选择应用程序文件夹
-按F4查看应用程序文件夹的属性
-将DefaultLocation指定为[SEARCHFORINSTALLDIR]
现在,当你为更新程序构建安装包并运行它时,它将为你提供InstallDir注册表键的值,以便得到安装路径。
如果你希望禁用“文件夹文本框”和“浏览”按钮,以防止用户更改更新程序的安装路径,你可以使用Orca.exe。Orca 是一个数据库表格编辑器,可用于创建和编辑 Windows Installer 包和合并模块。然后只需按照这个设置项目,修复已安装套件的位置
你还可以按照 Aaron Stebner 的如何基于注册表值修改 MSI 安装程序中的默认安装路径进行操作。
""[TARGETDIR]\MyApp.exe""
,因为现在只有[TARGETDIR]。 - Jeremy Thompson