以下内容不涉及任何专业知识,所有人都可以看懂。
此方法只适用于Windows10及更高版本
1.目的
1.1.防止应用程序在系统中产生垃圾
在容器中运行的程序不能写入实际用户注册表,不能写入AppData文件夹,这些写入操作都会被重定向,例如百度网盘会尝试写入:
C:UsersUserAppDataRoamingbaidu
C:UsersUserAppDataRoamingBaiduYunGuanjia
C:UsersUserAppDataRoamingBaiduYunKernel
C:UsersUserAppDataRoamingPLogs
实际会被转移到
C:UsersUserAppDataLocalPackagesUser.BaiduNetdisk_8wekyb3d8bbweLocalCacheRoamingbaidu
C:UsersUserAppDataLocalPackagesUser.BaiduNetdisk_8wekyb3d8bbweLocalCacheRoamingBaiduYunGuanjia
C:UsersUserAppDataLocalPackagesUser.BaiduNetdisk_8wekyb3d8bbweLocalCacheRoamingBaiduYunKernel
C:UsersUserAppDataLocalPackagesUser.BaiduNetdisk_8wekyb3d8bbweLocalCacheRoamingPLogs
不同的msix容器会转移到不同位置
注册表写入也会被转移。
1.2.流量统计显示更有规则
打开设置->网络和Internet->状态->数据使用量,可以看到不同应用程序使用的数据量,例如百度网盘包括了BaiduNetdisk.exe、BaiduNetdiskHost.exe、YunDetectService.exe等等,这样就会引起一个软件显示很多个数据,很混乱。通过这种方法可以让这些合并成一个,统一显示"百度网盘"。
2.注意事项
2.1.需要用7-Zip来获得百度网盘文件和图标(如果你有别的方法也行)
2.2.需要修改文件扩展名,如果你看不到扩展名,那么需要在这里选择"文件扩展名"
![a0a1a5f2f452692d7711c4b84f1da927.png](https://i-blog.csdnimg.cn/blog_migrate/8b60708c6aad2168878aacf2d90db4ec.png)
2.3.这里假设用户名是"User",把百度网盘作为示例说明,用户名可用根据情况修改,其他软件方法一样
2.4.需要打开开发者模式,设置->更新和安全->开发者选项->开发者模式->开,版本不同可能界面会有些区别,只要打开开发者模式就行
![25cd53fbcbfe4af4285ca6a2573d6cd6.png](https://i-blog.csdnimg.cn/blog_migrate/de9c58fd89e6e1539fea25207192ed5e.png)
3.开始配置
3.1.卸载清理百度网盘(如果已经安装)
3.1.1.卸载
3.1.2.删除文件
C:UsersUserAppDataRoamingbaidu
C:UsersUserAppDataRoamingBaiduYunGuanjia
C:UsersUserAppDataRoamingBaiduYunKernel
C:UsersUserAppDataRoamingPLogs
3.1.3.删除用户注册表项
打开注册表编辑器(按下Win+X->运行,输入"regedit"(不要引号),确定)
删除HKEY_CURRENT_USERSOFTWAREBaidu
3.2.获得百度网盘文件
3.2.1.从官网下载安装包,得到BaiduYunGuanjia_7.0.1.1.exe
3.2.2.右键->7-Zip->打开压缩包,然后点"提取",选择路径(例如"C:UsersUserMyAppxUser.BaiduNetdiskBaiduNetdisk"),然后确定。
3.3.从模板修改AppxManifest.xml
新建文本文档放到"C:UsersUserMyAppxUser.BaiduNetdisk",放入以下内容·,重命名为AppxManifest.xml
这是模板:
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns=" http:// schemas.microsoft.com/a ppx/manifest/foundation/windows10 " xmlns:uap=" http:// schemas.microsoft.com/a ppx/manifest/uap/windows10 " xmlns:rescap=" http:// schemas.microsoft.com/a ppx/manifest/foundation/windows10/restrictedcapabilities " IgnorableNamespaces="uap rescap build" xmlns:build=" http:// schemas.microsoft.com/d eveloper/appx/2015/build ">
<Identity Name="User.Sample" Publisher="CN=User" Version="1.0.0.0" ProcessorArchitecture="x64" />
<Properties>
<DisplayName>Sample</DisplayName>
<PublisherDisplayName>User</PublisherDisplayName>
<Logo>AppxLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="en-us" />
</Resources>
<Applications>
<Application Id="App" Executable="SampleAppSample.exe" EntryPoint="Windows.FullTrustApplication">
<uap:VisualElements DisplayName="Sample" Description="Sample" BackgroundColor="transparent" Square150x150Logo="AppxLogo.png" Square44x44Logo="AppxLogo.png">
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>
我们需要把它改成我们需要的(修改部分已经用加粗标出,括号中的内容是说明,不应该加到文件中)。
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns=" http:// schemas.microsoft.com/a ppx/manifest/foundation/windows10 " xmlns:uap=" http:// schemas.microsoft.com/a ppx/manifest/uap/windows10 " xmlns:rescap=" http:// schemas.microsoft.com/a ppx/manifest/foundation/windows10/restrictedcapabilities " IgnorableNamespaces="uap rescap build" xmlns:build=" http:// schemas.microsoft.com/d eveloper/appx/2015/build ">
<Identity Name="User. BaiduNetdisk(应用程序包的ID可以根据情况更改)" Publisher="CN=Windowsist" Version="1.0.0.0" ProcessorArchitecture=" x86(因为百度网盘是32位的,所以需要改成"x86")" />
<Properties>
<DisplayName> 百度网盘显示名称(应用程序包名称)</DisplayName>
<PublisherDisplayName>User</PublisherDisplayName>
<Logo>AppxLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="en-us" />
</Resources>
<Applications>
<Application Id="App" Executable=" BaiduNetdiskBaiduNetdisk.exe(可执行文件路径,主程序路径)" EntryPoint="Windows.FullTrustApplication">
<uap:VisualElements DisplayName=" 百度网盘显示名称(开始菜单名称)" Description=" 百度网盘说明" BackgroundColor="transparent" Square150x150Logo="AppxLogo.png" Square44x44Logo="AppxLogo.png">
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>
3.4.获得图标文件
右键BaiduNetdisk.exe,7-Zip->打开压缩包->*,打开".rsrc1033ICON",选择容量最大的(最清晰),这里选择"7.ico",选中后点"提取(减号按钮)",选择路径"C:UsersUserMyAppxUser.BaiduNetdisk",然后重命名为"AppxLogo.png"
3.5.安装
打开文件资源管理器,浏览到"C:UsersUserMyAppxUser.BaiduNetdisk",选择文件->打开Windows Power Shell
![8bada1ac4a166148c8920d7f3f223935.png](https://i-blog.csdnimg.cn/blog_migrate/0a19c0c588aa92734ec1f273f0a46f6b.png)
输入"Add-AppxPackage -Register .AppxManifest.xml"(不要引号)
然后开始菜单就会出现"百度网盘"了,打开运行就可以,百度网盘已经在容器中运行了
4.常见问题
4.1.问题:一段时间后发现打不开了
原因:百度网盘自动更新后修改了文件权限,这个权限没有允许它在容器中运行
解决方法:选择文件"C:UsersUserMyAppxUser.BaiduNetdisk",右键->属性->安全->高级,勾选"使用可以从此对象继承的权限项目替换所有子对象的权限项目",选择"是",点"确定",然后就可以正常打开了。
4.2.如果你希望用msix的更多功能(例如提升权限,文件关联,增加服务等等),可以看官方的说明,这里有AppxManifest.xml的全部元素,而且在不断增加
元素层次结构 - Windows UWP applicationsdocs.microsoft.com如果需要打包只读的应用程序包,可以用"MSIX Packaging Tool"(应用商店搜索就有)