다른 사용자가 설치한 앱을 제거하는 방법은 무엇입니까?
Windows 8 앱을 디버그하려고 할 때 다른 사용자 계정에 이미 설치된 복사본이 있을 때 이 문제가 계속 발생합니다.
DEP0700 : 앱을 등록하지 못했습니다.다른 사용자가 이미 이 앱의 패키지 버전을 설치했습니다.패키지화되지 않은 버전은 이를 대체할 수 없습니다.충돌하는 패키지는 {{PackageName}}이며 CN=package{CertificateStuff}}에서 게시되었습니다. (0x80073cf9)
때때로 저는 그냥 로그인하거나 다른 사람에게 기기에 로그인하여 앱을 제거하도록 요청할 수 있습니다.또는 응용 프로그램 이름/ID를 변경할 수 있지만 하나는 항상 가능하지 않고 다른 하나는 위험합니다(변경된 응용 프로그램 ID를 소스 제어에 체크인하지 않음).
제거할 방법이 있을 것입니다.아마도 PowerShell 스크립트?
위의 프로세스는 여전히 작동하지만 Windows Update(예, 이상하게도)가 "단계별 패키지" 삭제를 담당하는 경쟁 조건 문제를 해결할 수 있습니다.
Microsoft에 따르면, "다른 해결책" - 그리고 저는 여전히 이 문제를 버그로 간주합니다 -:
문제의 원인:
WU(Windows Update)는 사용자가 가지고 있는 최신 버전의 패키지를 다운로드하여 로컬 시스템으로 "스테이지"하므로 앱을 업데이트하기 위해 상점에 가면 업데이트 프로세스가 최대한 빨라집니다.WU는 결국 설치되지 않은 준비된 패키지를 정리합니다.
"스테이지" 패키지의 결과는 무엇입니까?
준비된 패키지로 인해 특정 패키지를 개발 모드로 설치할 수 없습니다.
스테이징된 패키지는 일부 디스크 공간을 차지하지만 하드 링크로 인해 이러한 영향이 완화됩니다.패키지의 여러 버전 간에 파일이 동일한 경우 appx 배포는 동일한 파일의 두 개의 별도 복사본을 유지하는 대신 파일을 하드 링크합니다.
준비된 패키지는 어떻게 찾을 수 있습니까?
관리자 powershell 프롬프트에서 다음 명령을 사용합니다.
get-appxpackage -all컴퓨터에 있는 모든 패키지를 표시합니다.스테이징된 패키지의 경우 PackageUserInformation에 {S-1-5-18 [알 수 없는 사용자]가 표시됩니다.단계적} 2.파워셸 필터링을 사용하여 모든 준비된 패키지 전체 이름 목록을 가져오려면 다음을 수행할 수 있습니다.
get-appxpackage -all |% {if ($_.packageuserinformation.installstate -eq "Staged"){$_.packagefullname}}"단계" 패키지를 제거하려면 어떻게 해야 합니까?
를 다운로드합니다.
psexec내부 에서, 마크 루시노비치가 했습니다.이러한 명령을 모두 제거하려면 일반 admin/levated 명령 프롬프트(powershell이 아님)에서 실행합니다.
psexec -s powershell -c "get-appxpackage | remove-appxpackage"
윈도우즈 10 1709에서 remove-appxpackage cmdlet이 개선되었으며 옵션으로 -allusers가 추가되었습니다.
따라서 모든 사용자에 대해 앱을 제거하려면 다음 명령이 작동합니다.
Get-AppxPackage -AllUsers [PackageFamilyName] | Remove-AppxPackage -AllUsers
여기서 [PackageFamilyName]은 일반적으로 패키지의 GUID입니다.
주의 / 주의:이 명령은 각 사용자가 개별적으로 앱을 제거한 것처럼 취급하기 때문에 나중에 다시 설치(DISM을 사용하여 패키지를 다시 프로비저닝)하는 것이 매우 어려운 것으로 보입니다.너무 많아서 들어갈 수가...
그래도 안 되면 다음과 같은 방법도 시도해 볼 수 있는데, 저에게는 효과가 있었습니다.참고로 이것은 일반 사용자의 기계가 아닌 내 개발 기계를 위한 것이기 때문에 비개발자에게 어떤 영향을 미칠지 모르겠습니다 :-
c:\Program Files\ 폴더의 소유권을 가져옵니다.Windows Apps 및 C:\ProgramData\Microsoft\Windows\AppRepository - 관리자에게 전체 액세스 권한을 부여합니다.신뢰할 수 있는지 확인설치 관리자에게도 수정 권한이 있습니다.당신은 또한 소유권을 차지하고 있습니다.모르는 경우 이 작업은 해당 폴더의 속성을 통해 수행됩니다.
서비스로 이동하여 윈도우즈 Installer 서비스를 중지합니다.
C:\ProgramData\Microsoft\를 엽니다.Windows\AppRepository\를 선택하고 PackageRepository.edb 파일을 삭제합니다.
윈도우즈 Installer 서비스를 다시 시작합니다.
관리자로 Visual Studio를 시작합니다.
앱 실행을 시도합니다.그건 작동할 거야.
앱을 실행한 후 VS를 사용자 모드로 다시 실행할 수 있습니다.
해결 방법:
다른 것이 당신에게 효과가 없다면(나도 마찬가지였다) 앱 매니페스트에서 패키지 이름을 변경할 수 있습니다(마지막 몇 글자만 다른 문자로 대체).이렇게 하면 더 이상 충돌하는 패키지가 없습니다.
일부 시나리오에서는 패키지 이름을 변경하는 것이 적절하지 않을 수 있지만 문제가 있는 장치에서 디버깅을 마치면 언제든지 패키지 이름을 백업하고 다시 변경할 수 있습니다.
현재 사용자의 앱을 삭제하려면 다음을 시도하십시오.
Get-AppxPackage | where name -eq "APP.NAME" | Remove-AppxPackage
도움이 됐어요.그래서 있습니다.Get-AppxPackage 없이-all
창 10:
먼저 SqliteBrowser3와 같은 SQL 데이터베이스 편집기가 필요합니다.
- 이 조작을 시스템 사용자로 수행합니다(pexec 또는 other 사용)
- 복본만기의 사본을 .
C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd - SqliteBrowser3로 복사본 열기
- "package", "packageuser" 및 "user" 테이블을 편집해야 합니다.이렇게 하려면 "사용자" 테이블에서 고스트 사용자 ID를 메모한 다음 제거해야 합니다.그런 다음, "고스트" "고스트" "아이디" "고스트"에 합니다.
userpackageuser의 입니다. - 죽여라
tasklist /svc /fi "services eq StateRepository" - 의 원본니다합대를 합니다.
StateRepository-Machine.srd백업 후. - 재부팅 후 패키지를 정상적으로 제거할 수 있습니다.
참고: 패키지에 할당된 사용자 항목을 그대로 두어야 합니다.
저는 다음을 해야 했습니다.
get-appxpackage -all > log.txt
notepad log.txt (search for the offending PackageFullName)
remove-appxpackage -allusers -package "PackageFullName"
-allusers 플래그가 없으면 "..."라는 메시지를 받았기 때문에 -allusers 플래그를 추가하는 것이 키였습니다. 이 플래그가 없으면 현재 사용자가 해당 패키지를 설치하지 않았기 때문입니다. Get-AppxPackage를 사용하여 설치된 패키지 목록을 확인하십시오." 오류.
Windows Store 앱을 관리하기 위한 PowerShell cmdlet 세트가 있습니다.관리자로 다음 명령을 실행하면 모든 사용자에 대해 시스템에 설치된 앱을 나열할 수 있습니다.
Get-AppxPackage -AllUsers
하지만 다른 사용자를 위해 앱을 제거하는 방법을 찾지 못했습니다.Remove-AppxPackage현재 사용자에게만 작동합니다.이렇게 하면 앱이 설치된 사용자를 삭제하면 모든 것이 더욱 흥미로워집니다.적어도 Windows 8의 사전 릴리스 버전에서는 그가 설치한 앱을 삭제할 수 없었습니다.최종 릴리스 이후 이러한 상황을 성공적으로 피할 수 있었기 때문에 사용자 계정을 삭제해도 앱이 제거되지 않는 등 문제가 여전히 존재하는지 확인할 수 없습니다.
이는 특히 @Pavel Nazarov의 일부 다른 답변과 유사하지만 다른 사용자에게 적용됩니다.그리고 프로그램을 설치할 필요가 없기 때문에 허용된 답변과 다릅니다.
관리 모드의 Windows Powershell에서 다음을 실행합니다.
get-appxpackage -all | where name -eq "{{ App Name }}" | remove-appxpackage
내겐 안 먹혔지만 다른 사람에겐 먹힐지도...
PowerShell을 Administrator로 시작하고 다음을 실행합니다.
Get-AppxPackage -all | Out-GridView -Passthru | Remove-AppXPackage
그런 다음 올바른 패키지를 선택하면 제거할 수 있습니다.
나에게 효과가 있었던 것
1. Close VS
2. Open Services
3. Stop Appx Deployment Service
4. Open C:\ProgramData\Microsoft\Windows\AppRepository\ and delete the PackageRepository.edb file.
5. Start Appx Deployment Service
6. Start VS & Debug - worked like charm
방금 사용했습니다.get-appxpackage -all | where name -eq "PackageName" | remove-appxpackage -AllUsersWin10 v1903에서 다른 많은 변형을 시도한 후 작동했습니다.제가 그 후에 소포의 존재 여부를 테스트해 보았는데 없어졌습니다.
만약 다른 모든 것이 실패하고 당신이 필사적이라면, 내 경우처럼 (사용자가 삭제되었기 때문에)이것은 조금 위험하지만 저에게는 효과가 있었습니다.
제 사용자가 컴퓨터에서 생성된 마지막 사용자라는 것을 알고 있었습니다.
이 답변은 위의 TAKEOWN에 대한 Auri Rahimzadeh의 답변과 'DB Browser For SQLite'(여기서 다운로드: SQLite 3용 DB Browser)를 사용하여 StateRepository-Machine.srd를 수정하는 intika의 답변을 결합한 것으로, 유일한 차이점은 다음과 같습니다.PackageUser에서 User 3(이전에 삭제한 사용자의 ID) 값을 4(나, 마지막으로 생성한 사용자)로 변경했습니다.
사용자 테이블을 확인하고 사용자의 경우 어떤 가치가 적용되는지 확인하십시오!
제 경우에는 다음을 사용해야 했습니다.Get-AppxProvisionedPackage -online와는 반대로Get-AppxPackage그리고 그에 상응하는 사용.Remove-AppxProvisionedPackage -PackageName YourPackageNameHere -Online -AllUsers
이것은 저에게 효과가 있었습니다.
- Powershell을 관리자로 엽니다.
- 패키지 이름 및 패키지가 설치된 사용자와 함께 이 명령을 실행합니다.
Get-AppxPackage - 이름 "MyPackageBlah" - 사용자 "blahdy"
- 출력 정보의 PackageFullName에서 값을 복사합니다.
이름 : 마이패키지블라
게시자: CN=BLAH
건축 : X64
리소스 ID:
버전: 1.0.34.0
패키지 전체 이름 : MyPackageBlah_1.0.34.0_x64_ww4kfnrsedz6
IsFramework: False
패키지 패밀리 이름 : MyPackageBlah_ww4kfnrsedz6
게시자 ID: ww4kfnrsedz6
IsResourcePackage: False
IsBundle: False
개발 모드: False
비이동식: 거짓
종속성: {Microsoft.UI.Xaml.2.6_2.62107.6002.0_x64_8wekyb3d8bbwe,
마이크로소프트.NET. 네이티브.Framework.2.2_2.2.29512.0_x64__8wekyb3d8bbwe,
마이크로소프트.NET. 네이티브.런타임.2.2_2.2.28604.0_x64_8wekyb3d8bbwe,
마이크로소프트.VCLibs.140.00_14.0.30035.0_x64__8wekyb3d8bbwe}
Is Partial Staged: False
SignatureKind : 개발자
상태: 확인
- 이 명령 실행
Remove-AppxPackage - 패키지 "MyPackageBlah_1.0.34.0_x64_ww4kfnrsedz6" - 모든 사용자
이제 Visual Studio에서 앱을 실행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/13865930/how-to-uninstall-an-app-that-another-user-installed
'programing' 카테고리의 다른 글
| Android TextView에서 maxLength를 프로그래밍 방식으로 설정하는 방법은 무엇입니까? (0) | 2023.08.15 |
|---|---|
| 파일 수 x개 유지 및 다른 모든 파일 삭제 - Powershell (0) | 2023.08.15 |
| 배열을 코드로 인쇄 (0) | 2023.08.15 |
| Android ListView 행을 추가 또는 제거하는 애니메이션 방법 (0) | 2023.08.15 |
| 특정 파이썬 버전으로 콘다 환경을 만드는 방법은 무엇입니까? (0) | 2023.08.10 |