• 使用PowerShell管理Windows8应用



    引子(?):

       我从消费者预览版开始使用的win8,大概是因为我年龄不大的缘故,我很快熟悉了这个操作系统并习惯了使用windows8的Modern App。我之前使用过一个叫Windows8 Modern UI小应用删除卸载管理器的应用软件对我的windows8 app进行管理(破解,离线部署之类的),之前感觉还不错,但是直到我后来升级到windows8.1后,我再次使用此软件后,被处理过的软件就打不开了。百度后发现,这是应用程序损坏的情况。

       于是这就验证了那个软件对新系统是不兼容的吧,我也就不敢再用那个软件了。但是那个软件已经照成我的app损坏了一大半,运行闪退甚至没图标之类,我试着使用自带的卸载,最后图标消失,但是重新安装是不可以安装的,实际检测我是没有卸载干净。那么,如何修复呢?

    PowerShell使用:

       根据网上的说法,我可以使用win8.1附带进去的PowerShell进行管理以对app进行手动卸载,操作是这样的:

    • 打开PowerShell
    • 使用get-appxpackage指令获取已安装appx列表
    • 复制所需卸载的appx的完整包名称(PackageFullName
    • 使用指令remove-appxpackage [完整包名称] 卸载
       如果你觉得这个描述不是很清楚,你可以参考这篇文章来进行操作。不过那个文章存在少许错误,这里顺带说一下:

    • 你可以通过右键左下角的win图标或者按Winkey+X打开菜单并选择启动PowerShell,当然如果你的菜单里没有此选项,请右键任务栏,点击属性并在“导航选项卡”勾选边角导航的第三个选择框(一看就知道了)。
    • 使用get-appxpackage可以获取已经安装的应用列表,当然,直接使用appxpackage指令也可以,效果一样
    • PowerShell中,复制的操作方法是先用鼠标左键选中需要复制的内容,然后再内容附近点鼠标右键即可,Ctrl+C没效果...粘贴的话在输入指令那一行右键就可以了
       执行完毕后所卸载的程序就被完整卸载了,这时去应用商店重新下载就好了。于是为了实现离线部署,我又了解了一下PowerShell中appxpackage的其他用法:

    1、Add-AppxPackage
    用途:安装一个appx程序包。
    语法:Add-AppxPackage [–DependencyPath <依赖的包路径>]
    举例:Add-AppxPackage D:\AppxSource\MyAppx.appx
    
    2、Add-AppxProvisionedPackage
    用途:设置应用程序到计算机。
    举例:Add-AppxProvisionedPackage -Online -FolderPath D:\Appx
    说明:将应用程序设置到计算机,所有的用户都将默认安装此APPX包。
    
    3、Get-AppxPackage
    用途:获取应用程序清单
    举例:
    Get-AppxPackage -AllUsers #获取所有用户安装的APPX包
    Get-AppxPackage -Name Package1 -User domain\username #获取指定域下面的指定用户的指定包
    
    4、Get-AppxPackageManifest
    用途:获取应用程序包的详细信息
    举例:
    Get-AppxPackageManifest -Package Package1
    
    5、Remove-AppxPackage
    用途:卸载一个appx程序包。
    语法:Remove-AppxPackage <包名>
    举例:Remove-AppxPackage MyAppx
    
    6、Remove-AppxProvisionedPackage
    用途:移除计算机对包的设置
    举例:Remove-AppxProvisionedPackage -Online -PackageName MyAppxPkg
    说明:移除之后,新建用户不再安装此包,但已经安装此包的用户,不会被删除。

    后续(?):

       于是我就又可以部署离线appx了。之后我突然有想法要写一个方便卸载appx的小应用,之后却发现有这样的问题,执行需要使用管理员身份才能进行操作,而程序获取了管理员权限后,程序启动的进程就不是当前用户而是管理员用户去启动进程了。(可以在任务管理器中查看到进程的用户名是管理员)。这时,卸载操作会卸载所属进程(管理员)账户上的appx应用,那么这样无法达到管理效果。

       至于这个问题,目前没有找到解决方案,找到后我会来补全的。。。

       顺便,csdn的文章审核真是让我感觉到不方便呢。。

  • 相关阅读:
    swoole 入门
    Centos7安装Percona5.7
    clone github报Permission denied (publickey) 解决方案
    yii2-swiftmailer入门
    Yii 2.0 数据库操作总结
    面向对象简单示例
    面向对象与面向过程
    Tkinter之部件3种放置方式pack、grid、place
    Tkinter之variable用法
    Tkinter之Menu
  • 原文地址:https://www.cnblogs.com/blumia/p/4282112.html
Copyright © 2020-2023  润新知