我有一个正在实施自动更新的应用程序。我有一个程序检查的 Web 服务,如果它需要升级它下载并运行新的安装程序(Visual Studio 2005 安装项目),之后程序重新启动。一切都很好。
但是如何确保安装程序中的安装路径默认与用户最初安装程序的路径相同?
例如,如果用户将其从程序文件更改为 C:\SomeFolder,我将如何让安装程序检测到这一点并将其安装路径更改为 C:\SomeFolder 而不是程序文件?或者如果用户选择为“当前用户”而不是“所有用户”安装它?
我有一个正在实施自动更新的应用程序。我有一个程序检查的 Web 服务,如果它需要升级它下载并运行新的安装程序(Visual Studio 2005 安装项目),之后程序重新启动。一切都很好。
但是如何确保安装程序中的安装路径默认与用户最初安装程序的路径相同?
例如,如果用户将其从程序文件更改为 C:\SomeFolder,我将如何让安装程序检测到这一点并将其安装路径更改为 C:\SomeFolder 而不是程序文件?或者如果用户选择为“当前用户”而不是“所有用户”安装它?
-右击Setup Project
-View -Registry
-
在左侧,展开HKey_Local_Machine和Software并单击Manufacturer节点
-在右侧,右键单击并添加字符串注册表项
-命名注册表项InstallDir
-设置其值 [TARGETDIR]
。
安装程序后,您可以看到 InstallDir regkey 包含该位置。您的更新程序应用程序可以使用相同的路径。
通常,“Just Me”和“Everyone”之间的唯一区别是创建的快捷方式的位置。您可以在安装期间运行 Process Monitor 并亲自查看。
编辑:
更新程序应用程序可以通过这些步骤使用 InstallDir RegistryKey。参考:如何:使用注册表启动条件指定目标目录
-右键单击更新程序的安装项目 -查看 -
启动条件-添加
对 RegistryKey 的搜索
-将属性指定为 SEARCHFORINSTALLDIR
-
将 RegKey 指定为 SOFTWARE\ManufacturerName -
让根指向 HKLM
-将值指定为 InstallDir
- 添加启动条件
- 将条件指定为 SEARCHFORINSTALLDIR -
保留 InstallUrl 和消息
-右键单击安装项目-查看-
文件系统-
选择应用程序文件夹
-按F4查看应用程序文件夹的属性-指定默认位置为[
SEARCHFORINSTALLDIR
]
现在,当您为更新程序构建安装程序包并运行它时,它将为您提供安装路径的 InstallDir regkey 中的值。
如果您希望禁用“文件夹文本框”和“浏览”按钮以防止用户更改更新程序安装路径,您可以使用Orca.exe。Orca 是一个数据库表编辑器,用于创建和编辑 Windows Installer 包和合并模块。然后只需按照这个设置项目,固定安装套件的位置
另一种方法是遵循 Aaron Stebner 的How to modify the default install path in an MSI-based setup based on a registry value