【问题标题】:Install to same path when upgrading application升级应用程序时安装到同一路径
【发布时间】:2012-07-13 12:44:00
【问题描述】:

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

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

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

【问题讨论】:

  • 如果用户选择仅为当前用户安装,其他用户将不得不安装新副本,因为所有文件和注册表项都进入用户的配置文件。与 All Users 安装相反,这些设置对系统的其他用户不可见。

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


【解决方案1】:

-右键单击设置项目
-查看
-注册表
- 在左侧,展开 HKey_Local_Machine 和 Software 并单击 Manufacturer 节点
- 在右侧,右键单击并添加字符串注册表项
-将注册表项命名为 InstallDir
- 设置它的值[TARGETDIR]

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

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

编辑:

更新程序应用程序可以通过这些步骤使用 InstallDir RegistryKey。参考:How to: Use a Registry Launch Condition to Specify a Target Directory

-右键单击更新程序的设置项目
-查看
-启动条件
- 添加对 RegistryKey 的搜索
- 将属性指定为 SEARCHFORINSTALLDIR
- 将 RegKey 指定为 SOFTWARE\ManufacturerName
- 让根指向 HKLM
- 将值指定为 InstallDir

-添加启动条件
- 将条件指定为 SEARCHFORINSTALLDIR
-留下InstallUrl和消息

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

现在,当您为更新程序构建安装程序包并运行它时,它将为您提供安装路径的 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

【讨论】:

  • 那么当我运行它时我会将目标导向器传递给 MSI 吗?像 Process.Start("Updater.msi", "TARGETDIR=" & InstallDir)?因为这是我自己提出的解决方案,除了我使用应用程序的当前目录。使用注册表是更好的解决方案吗?
  • 嗨@John,请检查我的编辑 - 最好比较差异并仔细检查您现在没有 ""[TARGETDIR]\MyApp.exe"" 作为它的 [TARGETDIR]。
  • 哇...非常彻底。谢谢!
  • 如果注册表值为空或不存在怎么办?例如,第一次安装的“InstallDir”值不存在,所以我希望“文件夹文本框”有一个默认位置。我该怎么办?
  • 您想要填写安装文件夹位置,但您没有 InstallDir regkey?也许以另一种方式找到 Exe,这可能会有所帮助:stackoverflow.com/questions/26613336/…
猜你喜欢
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 2012-06-25
  • 1970-01-01
相关资源
最近更新 更多