【问题标题】:Change Installation Location of UWP app from Installshield从 Installshield 更改 UWP 应用程序的安装位置
【发布时间】:2017-10-29 22:49:46
【问题描述】:

我创建了一个 WPF 桌面应用程序并使用 Installshield 生成 MSI 版本。我创建了一个 MSI 设置来将我的应用程序安装在 C:\MyApp\ 位置,而不是使用程序文件。它按预期工作正常。

然后我使用相同的 InstallShield 项目生成并测试了一个 UWP 应用程序。 Installshield 2016 支持桌面桥集成来执行此操作 - http://learn.flexerasoftware.com/IS-WBNR-InstallShield-2016-Whats-New

我注意到 UWP 应用安装在默认位置 (C:\Program Files\WindowsApps),而不是使用 Installshield 中定义的位置。

我想从我的 InstallShield 项目中更改此位置。请帮助我找到解决此问题的方法。

【问题讨论】:

  • 为什么需要控制位置?您不能以正常方式从 UWP 应用程序包中调用可执行文件,因此除了存储问题(Jay Zuo 的回答解决)之外,几乎没有理由关心包的位置。你需要AppExecutionAlias之类的东西吗?
  • 谢谢@MichaelUrman。我想根据某些条件从外部(从另一个应用程序/驱动程序)调用我的应用程序。所以我希望应用程序路径是恒定的和静态的。它不应该是 UWP 应用程序中的自动生成路径(C:\Program Files\WindowsApps\Product-name_1.0.0.1_x86__SOME_KEY\VFS\AppVPackageDrive)。我们可以在 Installshield 中使用 AppExecutionAlias 吗?

标签: wpf uwp windows-store-apps installation-path installshield-2016


【解决方案1】:

对于 UWP 应用,我们无法在安装时更改其安装位置。

如您所知,默认情况下 UWP 应用将安装在 C:\Program Files\WindowsApps 中。您可以在设置系统存储更改新内容的保存位置中的默认安装位置。
您可以从“新应用将保存到”下的下拉菜单中选择一个驱动器,然后点击应用。将在您选择的驱动器中创建一个名为“WindowsApps”的新文件夹。并且任何新的 UWP 应用程序都将安装在此文件夹中。请注意,Windows 10 只会将新应用程序安装到当前选择的位置。现有应用不会移动到新位置。

如果您想更改单个应用的安装位置,您需要前往设置应用和功能,然后点击移动 按钮。
但是,这仅在您安装应用程序后可用,并且只能将应用程序移动到另一个驱动器。无法将安装位置指定到其他文件夹,例如 C:\MyApp\ 等。

【讨论】:

  • 感谢@JayZuo 的回复。我从您的回答中了解了安装路径的用法和限制。但是我想根据某些条件从外部(从另一个应用程序/驱动程序)调用我的应用程序。所以我希望应用程序路径是恒定的和静态的。它不应该是 UWP 应用程序中的自动生成路径(C:\Program Files\WindowsApps\Product-name_1.0.0.1_x86__SOME_KEY\VFS\App‌​VPackageDrive)。我们可以在 Installshield 中使用 AppExecutionAlias 还是我们有任何替代方法?
  • @RajkumarG 是的,AppExecutionAlias 是您可以尝试的一种方法。另一种方法是使用协议。欲了解更多信息,请参阅Start your app in different ways
【解决方案2】:

这有点像XY question,所以这个答案可能与所提出的问题没有明确的关系。

知道 UWP 应用程序包的位置至少没有帮助。作为开发人员探索系统很好,但对于已发布的应用程序几乎没用。相反,您需要另一种方式来启动您的应用。

UWP 提供了多种方式来start your app

其中前两个需要修改您的 AppxManifest。由于 InstallShield 没有把它放在前面和中心,它提供了填充清单的这些部分的替代方法。 (第三个需要修改调用这个应用程序的代码,所以我不会进一步讨论。)

协议

要从 InstallShield 填充协议处理程序,只需添加 protocol handler to the registry。在构建 AppxManifest 时,InstallShield 将读取此注册并将其转换为清单的协议条目。

别名

要从 InstallShield 填充 AppExecutionAlias,只需为每个相关入口点添加一个 App Paths registry keyApp Paths 注册表项安装到 HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths,您应该使用以下格式作为别名:

HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\alias.exe>

(默认)= path\to\your\exe>

为简单起见,您的路径可能应该使用属性引用 ([ProgramFilesFolder]Company Name\Product Name\executable.exe) 或组件引用 ([$componentid] - 通常是 executable.exe 或 NewComponent23)。在构建 AppxManifest 时,InstallShield 将读取此注册并将其转换为清单的别名条目。

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 1970-01-01
    • 2018-04-27
    • 2018-09-13
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多