注册表未清除桌面应用程序转换的 win32 应用程序的卸载

Registry not clearing on uninstall of a Desktop App Converted win32 App

我使用Desktop App Converter程序成功打包测试了一个win32 App。这个应用程序是一个没有特殊安装程序的独立 EXE,所以我不需要 运行 任何安装程序来制作程序包。

问题:
我发现当应用程序被卸载时,它的注册表没有被清除。我希望清除它以便我可以测试应用程序的 "First run"。我的印象是,与应用程序相关的所有虚拟化数据(应用程序数据和注册表)都应在卸载时自动删除。但这并没有发生。

问题:
1) 我认为注册表没有清除,因为这个应用程序是通过 DAC 作为独立应用程序打包的,并且没有安装程序 运行。所以 DAC 不知道它的注册表使用情况。我是否需要在 AppxManifest 中编写一些代码,以便在卸载时清除注册表和应用程序数据?

2) 在哪里可以找到应用程序的虚拟化 registry.dat,以便我可以自己将其删除以模拟第一个 运行。

谢谢。

首先,我认为您一直在使用一些 "old" 现代化技术。桌面应用程序转换器实际上已被 Microsoft 弃用,取而代之的是 MSIX 打包工具,这让我想到了 new packaging format - MSIX.

这实际上是对您正在构建的当前 APPX 包的升级,与 build/development 过程的差异很小。

要构建 MSIX 程序包,您有多种选择。如果您也有源代码,您可以直接从 Visual Studio 进行。如果没有,您可以使用 multiple other tools。 检查我包含的 link,在那个指南中,我包含了一个关于可用工具的章节。

1) 很奇怪,一般情况下,如果应用卸载成功,这个清理阶段是没有问题的。您确定您看到的注册表不在机器的 "real" 注册表配置单元中,可能是之前测试留下的吗?您是否在干净的虚拟机中测试过该软件包?

Do I need to code something in the AppxManifest so that the registry and appdata clearing takes place on uninstallation?

None 据我所知,这是由 OS.

自动清理的

2) 如您所知,files an registry are redirected。用于注册表存储的 .dat 文件(使用 MSIX 程序包可以有多个 .dat 文件,每个主注册表配置单元一个 )存储在文件夹中:

AppData\Local\Packages\<AppName>.AppData_<GUID>\SystemAppData\...

有时您还应该检查此文件夹的子文件夹。这是您可以找到的内容的屏幕截图: