将Xamarin.Forms UWP应用升级到MAUI,如何保留原应用数据目录?
解决MAUI应用升级Xamarin.Forms UWP应用时包目录哈希不一致的问题
那个随机字符是Windows根据应用发布者身份信息生成的哈希值,用来区分同一ApplicationId但不同发布者的应用。要让系统识别MAUI应用为原Xamarin应用的更新,必须保证发布者身份完全一致,步骤如下:
1. 获取原Xamarin.Forms UWP应用的发布者信息
- 直接查看原Xamarin项目的UWP部分的
Package.appxmanifest文件,找到<Publisher>节点的内容,比如CN=你的发布者名称 - 或者用PowerShell命令查询已安装的原应用:
查看输出中的Get-AppxPackage -Name "你的ApplicationId"Publisher字段值,这就是关键的身份标识。
2. 在MAUI项目中配置相同的发布者信息
- 打开MAUI项目的Windows平台配置文件
Platforms/Windows/Package.appxmanifest,确保其中的<Publisher>节点值和原应用完全一致,不能有任何拼写或格式差异 - 核心:使用和原应用相同的代码签名证书:
- 找到原Xamarin项目打包时使用的.pfx证书文件(如果是自签名证书,可能在原项目目录或用户的证书存储中)
- 右键MAUI项目→属性→Windows→打包→点击"选择证书",导入原证书并输入正确的密码
3. 验证配置并部署
- 构建MAUI的Windows包后,用PowerShell验证发布者信息是否匹配:
Get-AppxPackage -Path "MAUI包路径\AppxManifest.xml" - 部署MAUI应用后,系统会自动使用和原Xamarin应用相同的Packages目录,原数据会被保留,且被识别为合法更新
注意事项
- 如果原应用使用的是Visual Studio默认的临时自签名证书,需要先导出原证书(在原Xamarin项目的打包设置中导出),再导入到MAUI项目使用,避免生成新的临时证书导致哈希不一致
- 不要尝试手动修改系统生成的Packages目录名称,这会导致应用运行异常
内容的提问来源于stack exchange,提问作者Sparky
相关产品推荐
相关产品推荐

