升级应用程序时安装到相同路径

时间:2012-07-13 16:14:57

标签: c# .net vb.net installer upgrade

我有一个应用程序,我正在实现自动更新。我有一个程序检查的Web服务,如果需要升级它,下载并运行新的安装程序(Visual Studio 2005安装项目),之后程序重新启动。一切都很好。

但是,如何确保安装程序中的安装路径默认为用户最初安装程序的路径?

例如,如果用户将其从程序文件更改为C:\ SomeFolder,我如何让安装程序检测到并将其安装路径更改为C:\ SomeFolder而不是程序文件?或者,如果用户选择将其安装为“当前用户”而不是“所有用户”?

1 个答案:

答案 0 :(得分:12)

- 右键单击​​“设置项目” - 查看
-Registry
- 在左侧,展开HKey_Local_Machine和软件,然后单击制造商节点
- 在右侧,右键单击并添加String注册表项
- 将注册表项命名为InstallDir
- 设置其值[TARGETDIR]

enter image description here

安装程序后,您可以看到InstallDir regkey包含该位置。您的更新程序应用程序可以使用相同的路径。

enter image description here

通常,“Just Me”和“Everyone”之间的唯一区别是创建的快捷方式的位置。您可以在安装期间运行Process Monitor并亲自查看。

修改

updater应用程序可以使用InstallDir RegistryKey执行这些步骤。参考:How to: Use a Registry Launch Condition to Specify a Target Directory

- 右键单击​​Updater的安装项目
- 查看
- 启动条件
- 添加搜索RegistryKey
- 将物业指定为SEARCHFORINSTALLDIR
- 将RegKey指定为SOFTWARE \ ManufacturerName
- 留下指向HKLM的根 - 将值指定为InstallDir

enter image description here

- 添加启动条件
- 将条件指定为SEARCHFORINSTALLDIR
-Leave InstallUrl和Message

enter image description here

- 右键单击​​“设置项目” - 查看
- 文件系统
- 选择应用程序文件夹
- 按F4查看应用程序文件夹的属性
- 将DefaultLocation指定为[SEARCHFORINSTALLDIR]

enter image description here

现在,当您为Updater构建安装程序包并运行它时,它将为您提供安装路径的InstallDir regkey中的值。

如果您要禁用“文件夹文本框”和“浏览”按钮以阻止用户更改更新程序安装路径,您可以使用Orca.exe。 Orca是一个数据库表编辑器,用于创建和编辑Windows Installer程序包和合并模块。然后,只需按照此setup project, fixing the location of installed kit

即可

另一种方法是遵循Aaron Stebner的How to modify the default install path in an MSI-based setup based on a registry value