5

我创建了一个 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 项目中更改此位置。请帮助我找到解决此问题的方法。

4

2 回答 2

4

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

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

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

于 2017-05-30T11:47:04.050 回答
2

这是一个XY 问题,所以这个答案可能与所问的问题没有明确的关系。

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

UWP 提供了几种启动应用程序的方法:

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

协议

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

别名

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

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

(默认)= <路径\到\你的\exe >

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

于 2017-06-01T12:58:46.383 回答