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

Joh*_*ohn 4 .net c# vb.net installer upgrade

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

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

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

Jer*_*son 13

-右单击安装项目
-查看
-Registry
-在左侧,展开HKEY_LOCAL_MACHINE和软件,然后单击制造商节点
-在右侧,右键单击并添加字符串注册表项
-Name注册表项INSTALLDIR
-设置它的价值 [TARGETDIR].

在此输入图像描述

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

在此输入图像描述

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

编辑:

updater应用程序可以使用InstallDir RegistryKey执行这些步骤.参考:如何:使用注册表启动条件指定目标目录

- 右键单击​​Updater的Setup项目
-View
-Launch条件 - 添加SearchKey
搜索
- 将属性
指定为SEARCHFORINSTALLDIR - 将RegKey指定为SOFTWARE\ManufacturerName
-Leave root指向HKLM
- 将值指定为InstallDir

在此输入图像描述


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

在此输入图像描述

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

在此输入图像描述

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

如果要禁用"文件夹文本框"和"浏览"按钮以防止用户更改更新程序安装路径,可以使用Orca.exe.Orca是一个数据库表编辑器,用于创建和编辑Windows Installer程序包和合并模块.然后只需按照此安装项目,修复已安装套件的位置


另一种方法是遵循Aaron Stebner的如何根据注册表值修改基于MSI的设置中的默认安装路径