Edit C:\Windows\System32\migration\AppxUpgradeMigrationPlugin.dll
MZ? ÿÿ ¸ @ ø º ´ Í!¸LÍ!This program cannot be run in DOS mode. $ î7Ê?ªV¤ÎªV¤ÎªV¤Îw©iΨV¤Îw©jκV¤ÎªV¥ÎV¤Îw©oνV¤Îw©k΢V¤Îw©nΫV¤Îw©wÎ?V¤Îw©mΫV¤Îw©hΫV¤ÎRichªV¤Î PE d? [_] ð ", º @ Àt ? @ °? `A PÈ É ð ? à ? 0 Ì À `Ä ? ø .text ¹ º `.data Ð ¾ @ À.pdata ? à  @ @.idata ? Ô @ @.rsrc ? ê @ @.reloc Ì 0 ð @ B 0Æ ? `Æ ? àÆ ? `Ç ? Ç ? PÅ ? r? PÅ 0Æ `Æ àÆ `Ç Ç ÀÇ ÐÇ È @É pÊ Ë PË pË Ì `Ì ðÌ Í ÐØ àØ Ù Ù Ù ?Ú ÐÝ àü p P ?? ?? ? À? @? `? ? ? À? ?? ? ?? ? P? ?? °? ? °? 0¡ P¡ ð¡ ?¢ ¢ @£ У ¤ P¤ °¤ ?¦ ?¨ б à± ð± ² ² ² 0² @² P² `² p² ?² ?² ² 0³ ж p· pâ ã @å Àå °æ Àæ ç 0 ? 0 ` ? p+ °+ à+ ?, °, - p- . ?. Ð. À2 À3 04 05 P5 Ð5 @7 P7 `7 p7 < à> °@ ?H 0I àJ ?M N ?N N ` ?` °` `a ?a Ða pb Àn ðn @o p p 0p ?p °p Àp àp ?q r Àt 0y ?y z | 0? Ð? 0? P? ? À? ? [_] 7 ôÄ ô¸ à=L9o<Ò?{ ÀOyz· p? ?p? ?q? Àp? ðn? @o? 0p? àp? °p? p? Àn? 0y? Õ? ÀÕ? Invalid parameter passed to C runtime function. à À F \ C L S I D A p p I D S M D B V a l F o r c e R e m o v e N o R e m o v e D e l e t e C o m p o n e n t C a t e g o r i e s F i l e T y p e I n t e r f a c e H a r d w a r e M i m e S A M S E C U R I T Y S Y S T E M S o f t w a r e T y p e L i b À Fàâ?¯-±jL?Zתe?RìÌÜ?L©ñ<ÉÑ¡?.RìÌÜ?L©ñ<ÉÑ¡?+ À Fà À F À F?©B/Ê÷B½è?Ez0??â]°CB??ÇË@U?÷?Ъ÷@òFµØÊÔv? ?W i n d o w s . M a n a g e m e n t . D e p l o y m e n t . P a c k a g e M a n a g e r À FRìÌÜ?L©ñ<ÉÑ¡?,eK}??^ÇO¢åi%Ë?SF À F À F# À Fè ? Ø ? P ? ? ? ? ? ° ? È ? Ø ? à ? ø ? ? ? pË ? Í ? ðÌ ? ÐØ ? `Ì ? Ì ? àØ ? Ù ? Ù ? ÐÝ ? ?Ú ? Ù ? б? ?²? ²? ??? p²? 0²? ð±? ?? ?? ?? À?? `²? ??? Ù ? P¤? У? ¤? ?? À?? @?? `?? p? P? ??? @£? ?¢? ¢? ?¦? ?²? P²? ²? ??? @²? ²? à±? ?? ?? ?? À?? `²? ??? Ù ? ð¡? 0¡? P¡? ?? À?? @?? `?? p? P? ??? °¤? °?? °?? ?? ²? 0³? |? |? |? ²? 0³? ?? |? |? |? |? |? |? |? |? |? |? pâ? Ù ? Ù ? ã? Àå? @å? àü ? ç? 0? ? p-? Í ? .? |? |? |? |? |? ?.? p-? Í ? .? °+? à+? ?,? °,? -? p+? `7? P7? @7? |? 04? 05? P5? |? Ð5? `7? P7? @7? À3? 04? 05? P5? À2? Ð.? ?H? Í ? 0I? |? |? |? ?.? ?H? Í ? 0I? <? à>? °@? p7? N? Í ? 0I? |? |? |? ?.? N? Í ? 0I? ?M? N? ?N? àJ? Ða? Í ? pb? |? |? |? |? ?.? Ða? Í ? pb? ?`? °`? `a? ?a? `? { 4 1 9 0 6 f 3 3 - 4 b 5 7 - 4 5 a 4 - b 3 8 d - 7 c 4 9 f e 2 c 1 b 0 c } \ R e q u i r e d C a t e g o r i e s C L S I D \ \ I m p l e m e n t e d C a t e g o r i e s . t l b M o d u l e M o d u l e _ R a w R E G I S T R Y H K C R H K C U H K L M H K U H K P D H K D D H K C C H K E Y _ C L A S S E S _ R O O T H K E Y _ C U R R E N T _ U S E R H K E Y _ L O C A L _ M A C H I N E H K E Y _ U S E R S H K E Y _ P E R F O R M A N C E _ D A T A H K E Y _ D Y N _ D A T A H K E Y _ C U R R E N T _ C O N F I G ? ? ?ÿÿÿÿ? ? ?ÿÿÿÿ ? ?ÿÿÿÿ° ? ?ÿÿÿÿ¸ ? ?ÿÿÿÿÈ ? ?ÿÿÿÿØ ? ?ÿÿÿÿè ? ?ÿÿÿÿ ? ?ÿÿÿÿ8 ? ?ÿÿÿÿ` ? ?ÿÿÿÿx ? ?ÿÿÿÿ¨ ? ?ÿÿÿÿÈ ? ?ÿÿÿÿA P I - M S - W i n - C o r e - L o c a l R e g i s t r y - L 1 - 1 - 0 . d l l RegDeleteKeyExW a d v a p i 3 2 . d l l RegDeleteKeyW A P P I D 3o?AWK¤E³?|Iþ,P a c k a g e R e p o s i t o r y . e d b S - 1 - 1 - 0 A p p x M a n i f e s t . x m l . x m l m i c r o s o f t . s y s t e m . p a c k a g e . m e t a d a t a P a t h A p p x P r o v i s i o n i n g . x m l P a c k a g e R o o t P a c k a g e R e p o s i t o r y R o o t L a s t R e t u r n V a l u e I s U p g r a d e O E M A p p I s L O B A p p I s D e v M o d e A p p A p p x M i g P l u g i n . M i g r a t i o n P l u g i n . 1 % F r i e n d l y N a m e % { A E 2 7 C 1 A 6 - 2 5 F 2 - 4 5 F D - 9 A 2 8 - 0 8 1 B 8 1 F 2 9 E 0 A } A p p x M i g P l u g i n . M i g r a t i o n P l u g i n C u r V e r P r o g I D V e r s i o n I n d e p e n d e n t P r o g I D P r o g r a m m a b l e % M O D U L E T Y P E % % M O D U L E % T h r e a d i n g M o d e l f r e e % A P P I D % % M O D U L E G U I D % F r i e n d l y N a m e A p p x U p g r a d e M i g r a t i o n O b j e c t S Y S T E M \ S e t u p \ U p g r a d e \ A p p x A p p x U p g r a d e M i g r a t i o n P l u g i n . d l l \ m i c r o s o f t . s y s t e m . p a c k a g e . m e t a d a t a \ A u t o g e n T o t a l T i m e T a k e n A p p x M i g r a t i o n P l u g i n v e r s i o n n u m b e r i s % d . % d . % d . % d AppxAllUserStore::GetAllUserStoreFullPath(&allUserStorePath) I f F a i l e d R e t u r n ( % S ) f a i l e d w i t h 0 x % x Common::RegistryKey::Open( HKEY_LOCAL_MACHINE, allUserStorePath.GetChars(), KEY_READ, allUserKey.AddressOf()) L o g g i n g D o w n l e v e l O S ' s A p p x A l l U s e r S t o r e k e y : % w s registryKey->OpenSubKey(subKeyName, KEY_READ, subKey.AddressOf()) familyName->SetLength(familyNameLength) familyName->SetValue(fullName, nameLength) familyNameBuilder.AppendString(cursor) config.GetPackageRepositoryRoot(&repositoryPath) repositoryPathBuilder.AppendChar('\\') repositoryPathBuilder.AppendString(&Common::Deployment::RepositoryFileName) AppxAllUserStore::GetAllUserApplicationsFullPath(&allUserStoreApplicationsPath) Common::RegistryKey::Open( HKEY_LOCAL_MACHINE, allUserStoreApplicationsPath.GetChars(), KEY_READ, allUserApplicationsKey.AddressOf()) AddPackageRegistryKeyToArray(subKey, &(this->allUserPackages)) allUserApplicationsKey->OpenSubKey(subKey, KEY_READ, mainPackageKey.AddressOf()) hr GetFamilyNameFromFullName(subKey, &packageFamilyName) this->lobProvisionedPackageFamilyNameSet.InsertIgnoreDuplicates(packageFamilyName.GetChars()) allUserFrameworkSet->InsertIgnoreDuplicates(subKey) Windows::Foundation::Initialize(WINRT_INIT_MULTITHREADED) G e t M o d u l e F i l e N a m e f a i l e d 0 x % x - - n o t p e r f o r m i n g E O L a n d p r o v i s i o n e d - p a c k a g e c l e a n u p C o u l d n o t o p e n % w s : 0 x % x - - n o t p e r f o r m i n g E O L a n d p r o v i s i o n e d - p a c k a g e c l e a n u p P a c k a g e f a m i l y % w s i s e n d - o f - l i f e d U p l e v e l P r o v i s i o n e d p a c k a g e : % w s f o u n d i n a p p x p r o v i s i o n i n g . x m l I s a L O B a p p this->lobProvisionedPackageFamilyNameSet.InsertIgnoreDuplicates( familyNameBuffer.GetChars()) I s a t o p l e v e l p a c k a g e I s a m a i n o r b u n d l e p a c k a g e I s a r e s o u r c e p a c k a g e I s a f r a m e w o r k p a c k a g e I g n o r i n g p a c k a g e % w s w i t h u n k n o w n p r o p e r t y t y p e % x EnumerateAndCachePackagesInAllUserStore(&allUserFrameworkSet) GetFamilyNameFromFullName(packageFullName, &packageFamilyName) P r o c e s s i n g d o w n l e v e l a l l - u s e r p r o v i s i o n e d p a c k a g e % w s P a c k a g e i s b e i n g e n d o f l i f e d s o i t s p a c k a g e r o o t w i l l b e e x c l u d e d this->excludePackageFullNameSet.InsertIgnoreDuplicates(packageFullName) P a c k a g e i s u p l e v e l p r o v i s i o n e d . P a c k a g e i s L O B a n d w i l l b e c a r r i e d f o r w a r d . P a c k a g e i s n o t u p l e v e l p r o v i s i o n e d o r L O B a n d w i l l b e c a r r i e d f o r w a r d . S i n c e i t ' s d o w n l e v e l p r o v i s i o n e d , b u t n o t u p l e v e l p r o v i s i o n e d i m p l i e s t h i s i s a n O E M p a c k a g e this->oemProvisionedPackageFamilyNameSet.InsertIgnoreDuplicates(packageFamilyName.GetChars()) InsertToHighestVersionMap( packageFullName, &packageFamilyName, &this->combinedProvisionedMap) P r o c e s s i n g d o w n l e v e l a l l - u s e r f r a m e w o r k p a c k a g e % w s ProcessFramework(package) packageManager->FindUsers(packageFullName, userInfoCollection.GetAddressOf()) userInfoCollection->First(userInfoIterator.GetAddressOf()) userInfoIterator->get_HasCurrent(&hasCurrent) userInfoIterator->get_Current(userInfo.GetAddressOf()) userInfo.Get()->get_InstallState(&installStateValue) userInfoIterator->MoveNext(&hasCurrent) packageInfo->get_InstalledLocation(&installedLocation) installedLocation.As(&installedLocationStorageItem) installedLocationStorageItem->get_Path(path.ReleaseAndGetAddressOf()) fullPathDirectoryBuilder.AppendString(this->singleInstanceStore.GetString()) fullPathDirectoryBuilder.AppendChar(L'\\') fullPathDirectoryBuilder.AppendString(packageFullName) Common::DirectoryExists(fullPathDirectory.GetChars(), exists) I n s e r t i n g % w s s i n c e i t w a s b r o u g h t b y a b u n d l e % w s Common::Deployment::GetVersionlessNameFromPackageFullName( packageFullName, &versionlessName) InsertToHighestVersionMap(packageFullName, &versionlessName, &this->resourceMap) B u n d l e m a n i f e s t n o t f o u n d f o r p a c k a g e . T h i s i s e x p e c t e d f o r u p l e v e l p r o v i s i o n e d p a c k a g e s . F a i l e d t o p r o c e s s b u n d l e m a n i f e s t p a c k a g e s : 0 x % x . New(BundleAndMainFullNames, &fullNames) fullNames->bundle.SetValueFromString(packageFullName) fullNames->mainPackage.SetValueFromString(packageFullName) highestVersionMap->Insert(packageLineageName->GetChars(), fullNames.Value()) stringBufferToModify->SetValueFromString(packageFullName) Common::Deployment::GetPackageIDFromPackageMoniker( existingFullName, nullptr, &existingPackageID) Common::Deployment::GetPackageIDFromPackageMoniker( packageFullName, nullptr, ¤tPackageID) E x i s t i n g p a c k a g e % w s i s l o w e r v e r s i o n t h a n % w s s o i t s p a c k a g e r o o t w i l l b e e x c l u d e d this->excludePackageFullNameSet.InsertIgnoreDuplicates(existingFullName) C u r r e n t p a c k a g e % w s i s l o w e r v e r s i o n t h a n t h e e x i s t i n g % w s s o i t s p a c k a g e r o o t w i l l b e e x c l u d e d currentPackage.SetValueFromString(packageFullName) highestVersionMap->Insert(packageLineageName->GetChars(), currentPackage.GetChars()) P a c k a g e % w s i s b e i n g e n d o f l i f e d s o i t s p a c k a g e r o o t w i l l b e e x c l u d e d S t a g e d WritePackageRegistryKey( packageFamilyName.GetChars(), packageFullName, !!(Common::Deployment::IsPackageFullNameBundle(packageFullName)), userSid, this->pluginStagedUserAcquiredKey.Value(), L"Staged") WritePackageRegistryKey( packageFamilyName.GetChars(), packageFullName, isBundle, userSid, this->pluginStagedUserAcquiredKey.Value(), L"Staged") InsertToHighestVersionMap( packageFullName, &versionlessName, &this->frameworkMap) packageInfo->get_Id(&packageId) packageId->get_FullName(packageFullNameAsString.GetAddressOf()) packageInfo->get_IsFramework(&isFrameworkValue) P r o c e s s i n g P a c k a g e % w s IsPackageOnlyStaged(packageManager, packageFullNameAsString, &isOnlyStaged) P a c k a g e i s o n l y s t a g e d a n d n o u s e r h a s i t i n s t a l l e d s o i t s p a c k a g e r o o t a n d b a c k u p m a n i f e s t w i l l b e e x c l u d e d this->stagedOnlyManifestPackageFullNameSet.InsertIgnoreDuplicates(packageFullName) ProcessFramework(packageFullName) ProcessMainOrBundlePackage(packageFullName) ProcessResource(packageFullName) W r i t i n g % w s K e y % w s \ % w s \ % w s packageSubKeyBuilder.AppendString(userSid) packageSubKeyBuilder.AppendChar(L'\\') packageSubKeyBuilder.AppendString(packageFamilyName) packageSubKeyBuilder.AppendString(packageFullName) packageSubKeyBuilder.AppendString(dependencyFullName) registryKey->CreateSubKey( packageSubKey.GetChars(), KEY_READ | KEY_WRITE, subKey.AddressOf()) config.GetInstalledManifestPathFromPackageMoniker( dependencyFullName, &dependencyManifestPath) subKey->SetStringValue( AppxAllUserStore::regValuePath, dependencyManifestPath.GetString()) W r i t i n g % w s K e y % w s \ % w s subKey->SetStringValue( AppxAllUserStore::regValuePath, packagePath) subKey->SetUInt32Value(AppxAllUserStore::regValueIsDevModeApp, 1) config.GetInstalledManifestPathFromBundleFullName( packageFullName, &manifestPath) config.GetInstalledManifestPathFromPackageMoniker( packageFullName, &manifestPath) WritePackageRegistryKeyWithPath( packageFamilyName, packageFullName, userSid, registryKey, keyName, manifestPath.GetString(), isDevMode) W r i t i n g % w s K e y % w s New(Common::StringBuffer, &packageSubKey) packageSubKey->SetValueFromString(packageFullName) stringArray->Add(packageSubKey) Windows::Foundation::ActivateInstance(strActivatableClassId.Get(), &packageManager) everyoneSid.Initialize( Common::Deployment::EveryoneSid.chars, Common::Deployment::EveryoneSid.length) packageManager->FindPackagesByUserSecurityId( everyoneSid, packageInfoCollection.GetAddressOf()) packageInfoCollection->First(packageInfoIterator.GetAddressOf()) packageInfoIterator->get_HasCurrent(&hasCurrent) packageInfoIterator->get_Current(packageInfo.GetAddressOf()) U n a b l e t o d e t e r m i n e w h e t h e r p a c k a g e % w s i s i n s i n g l e i n s t a n c e s t o r e . S k i p p i n g . F a i l e d P r o c e s s i n g p a c k a g e w i t h 0 x % x . I g n o r i n g f a i l u r e t o c o n t i n u e w i t h p r o c e s s i n g packageInfoIterator->MoveNext(&hasCurrent) I f t h e O S d o e s n ' t s u p p o r t p a c k a g e M a n a g e r 2 i n t e r f a c e t h e n n o r e s o u r c e a n d b u n d l e s c a n b e i n s t a l l e d - - n o b u n d l e s a n d r e s o u r c e s t o p r o c e s s . packageManager2.As(&packageManager1) packageManager2->FindPackagesWithPackageTypes( Windows::Management::Deployment::PackageTypes_Bundle, packageInfoCollection.GetAddressOf()) packageManager2->FindPackagesWithPackageTypes( Windows::Management::Deployment::PackageTypes_Resource, packageInfoCollection.ReleaseAndGetAddressOf()) packageInfoCollection->First(packageInfoIterator.ReleaseAndGetAddressOf()) WritePackageRegistryKey( packageFamilyName, packageFullNameElement->GetValue(), isBundle, userSid, this->pluginStagedKey.Value(), L"Staged") WritePackageRegistryKey( packageElement->GetKey(), bundleFullName, isBundle, userSid, this->pluginStagedKey.Value(), L"Staged") WritePackageRegistryKey( packageElement->GetKey(), mainPackageFullName, isBundle, userSid, this->pluginStagedKey.Value(), L"Staged") WriteDependencyMapToStagedPackageKeys(&this->frameworkMap) WriteDependencyMapToStagedPackageKeys(&this->resourceMap) MigXmlWriter::Create(&xmlWriter) config.GetPackageRoot(&packageRoot) config.GetPackageRepositoryRoot(&backupManifestDir) packageRootBuilder.AppendChar('\\') packageRoot.SetLength(packageRootLength) packageRootBuilder.AppendString(package) W r i t i n g o u t t o e x c l u d e d i r e c t o r y % w s i n X M L W r i t e r . F a i l e d t o e x c l u d e d i r e c t o r y % w s i n X M L W r i t e r : 0 x % x backupManifestPathBuilder.AppendString(backupManifestDir.GetString()) backupManifestPathBuilder.AppendString(L"\\") backupManifestPathBuilder.AppendString(package) backupManifestPathBuilder.AppendString(L".xml") W r i t i n g o u t t o e x c l u d e f i l e % w s i n X M L W r i t e r . F a i l e d t o e x c l u d e f i l e % w s i n X M L W r i t e r : 0 x % x C o u l d n o t d e t e r m i n e i f p a c k a g e r e p o s i t o r y e x i s t s : 0 x % x N o t h i n g t o d o w h e n P a c k a g e r e p o s i t o r y d o e s n ' t e x i s t config.GetPackageRoot(&this->singleInstanceStore) F a i l e d t o p r o c e s s A p p x P r o v i s i o n i n g X M L f o r e n d o f l i f e p a c k a g e s 0 x % x . P r o c e e d i n g a s i f A p p x P r o v i s i o n i n g X M L d o e s n o t e x i s t s o u s e r a c q u i r e d a p p s g e t p r o c e s s e d P r o c e s s i n g a l l u s e r s t o r e p a c k a g e s F a i l e d t o p r o c e s s a l l u s e r s t o r e p a c k a g e s w i t h 0 x % x P r o c e s s i n g a l l i n s t a l l e d p a c k a g e s F a i l e d t o p r o c e s s a l l i n s t a l l e d p a c k a g e s w i t h 0 x % x S t a r t i n g A p p x U p g r a d e M i g r a t i o n P l u g i n d u r i n g D i s c o v e r ReadAppXMigrationStores() F a i l e d t o w r i t e o u t m i g r a t i o n X M L w i t h 0 x % x S u c c e s s f u l l y f i n i s h e d p r o c e s s i n g a l l p a c k a g e s d u r i n g A p p x U p g r a d e M i g r a t i o n D i s c o v e r Common::RegistryKey::Open( HKEY_LOCAL_MACHINE, allUserStorePath.GetChars(), KEY_READ | KEY_WRITE, allUserStoreKey.AddressOf()) S - Common::String::CaseInsensitiveStartsWith(subKey, L"S-", &isUserSid) New(Common::StringBuffer, &userSid) userSid->SetValueFromString(subKey) this->userSids.Add(userSid) userSidAsInternalString.Initialize(userSid, static_cast<ULONG>(wcslen(userSid))) packagefamilyNameAsInternalString.Initialize( packageFamilyName, static_cast<ULONG>(wcslen(packageFamilyName))) packageManager2->FindPackagesByUserSecurityIdPackageFamilyNameWithPackageTypes( userSidAsInternalString, packagefamilyNameAsInternalString, Windows::Management::Deployment::PackageTypes_Bundle, packageInfoCollection.GetAddressOf()) packageInfoIterator->get_Current(bundleInfo.GetAddressOf()) bundleInfo->get_Id(&packageId) packageId->get_FullName(packageFullName.GetAddressOf()) bundleFullName->SetValueFromString(packageFullName.GetRawBuffer(nullptr)) B u n d l e % w s i s b e i n g w r i t t e n t o t h e d o w n l e v e l i n s t a l l e d k e y D o w n l e v e l I n s t a l l e d WritePackageRegistryKey( packageFamilyName, packageFullName.GetRawBuffer(nullptr), isBundle, userSid, this->pluginDownlevelInstalledKey.Value(), L"DownlevelInstalled") AppxAllUserStore::GetInboxApplicationsFullPath(&inboxPackagesBuffer) Common::RegistryKey::Open( HKEY_LOCAL_MACHINE, inboxPackagesBuffer.GetChars(), KEY_READ, storeKey.AddressOf()) P r o c e s s i n g D e v M o d e o r I n b o x P a c k a g e % w s f o r u s e r % w s IsInboxPackage(packageFullName.GetRawBuffer(nullptr), &isInboxPackage) . . . P a c k a g e % w s i s i n b o x . N o a c t i o n t o t a k e . . . P a c k a g e % w s i s d e v m o d e . W r i t i n g t o u p g r a d e k e y s packageRoot.SetValueFromString(WindowsGetStringRawBuffer(path, NULL)) packageRootBuilder.AppendChar(L'\\') packageRootBuilder.AppendString(Common::Deployment::ManifestFileName.chars) . . . P a c k a g e ' s r o o t i s % w s WritePackageRegistryKeyWithPath( packageFamilyName, packageFullName.GetRawBuffer(nullptr), userSid, this->pluginDownlevelInstalledKey.Value(), L"DownlevelInstalled", packageRoot.GetString(), isDevMode) U p g r a d e WritePackageRegistryKeyWithPath( packageFamilyName, packageFullName.GetRawBuffer(nullptr), userSid, this->pluginUpgradeKey.Value(), L"Upgrade", packageRoot.GetString(), isDevMode) P r o c e s s i n g P a c k a g e % w s f o r u s e r % w s IsPackageOnlyStaged(packageManager, packageFullName, &isOnlyStaged) . . . P a c k a g e % w s i s o n l y s t a g e d . N o t h i n g t o d o . . . P a c k a g e % w s i s b e i n g e n d o f l i f e d s o i t ' s b e i n g w r i t t e n t o t h e E n d O f L i f e k e y E n d O f L i f e WritePackageRegistryKey( packageFullName.GetRawBuffer(nullptr), userSid, this->pluginEndOfLifeKey.Value(), L"EndOfLife") . . . P a c k a g e % w s i s N O T b e i n g e n d o f l i f e d s o i t ' s b e i n g w r i t t e n t o t h e D o w n l e v e l I n s t a l l e d k e y provisionedInstalledPackageFullNames->InsertIgnoreDuplicates(packageFamilyName) . . . P a c k a g e % w s i s O E M s o n o n e e d t o w r i t e i t s u p g r a d e k e y . . . P a c k a g e % w s i s L O B s o n o n e e d t o w r i t e i t s u p g r a d e k e y . . . P a c k a g e % w s i s a l l - u s e r i n s t a l l e d s o n o n e e d t o w r i t e i t s u p g r a d e k e y G e t t i n g D e p e n d e n c i e s f o r p a c k a g e % w s f a i l e d w i t h 0 x % x ProcessBundleForUser( packageFamilyName, userSid, &bundleFullName) WritePackageRegistryKey( packageFamilyName, fullNameToWrite, isBundle, userSid, this->pluginUpgradeKey.Value(), L"Upgrade") Common::Deployment::GetVersionlessNameFromPackageFullName( dependencyPackage->dependencyPackageMoniker, &versionlessName) D o w n l e v e l I n s t a l l e d WritePackageRegistryKey( packageFamilyName, dependencyPackage->dependencyPackageMoniker, false, userSid, this->pluginDownlevelInstalledKey.Value(), L"Downlevel Installed") WriteDependencyRegistryKey( packageFamilyName, fullNameToWrite, highestVersionDependency, userSid, this->pluginUpgradeKey.Value(), L"Upgrade") AddPackageRegistryKeyToArray(dependencyName, dependencyFullNames) GetFamilyNameFromFullName(mainPackageRegKeyFullName, ®KeyFamilyName) key->OpenSubKey(mainPackageRegKeyFullName, KEY_READ, &appRegKey) searchString.SetValueFromString(fullPathDirectory.GetChars()) searchStringBuilder.AppendChar(L'\\') searchStringBuilder.AppendString(&Common::Deployment::MetadataDirectory) \ * searchStringBuilder.AppendString(L"\\*") searchStringBuilder.AppendString(&RecoveryReader::pckgDepExtension) HRESULT_FROM_WIN32(GetLastError()) userSidBuffer.SetValueFromString(findFileData.cFileName) userSidBuffer.SetLength(userSidBuffer.GetLength() - RecoveryReader::pckgDepExtension.length) RecoveryReader::FillDependencyInfo( wcslen(userSid), userSid, fullPathDirectory.GetLength(), fullPathDirectory.GetChars(), ®isterPackageInfo->dependencyPackages) fullPathFilenameBuilder.AppendString(fullPathDirectory.GetString()) fullPathFilenameBuilder.AppendChar(L'\\') fullPathFilenameBuilder.AppendString(&Common::Deployment::MetadataDirectory) fullPathFilenameBuilder.AppendString(userSid) fullPathFilenameBuilder.AppendString(&RecoveryReader::recoveryExtension) U n a b l e t o d e t e r m i n e W o w D e p e n d e n c i e s - - i g n o r i n g n o n c r i t i c a l e r r o r 0 x % x P r o c e s s i n g a l l P a c k a g e s f o r u s e r % w s F a i l e d P r o c e s s i n g p a c k a g e f o r u s e r w i t h 0 x % x . I g n o r i n g f a i l u r e t o c o n t i n u e w i t h p r o c e s s i n g F a i l e d P r o c e s s i n g i n b o x o r d e v m o d e p a c k a g e f o r u s e r w i t h 0 x % x . I g n o r i n g f a i l u r e t o c o n t i n u e w i t h p r o c e s s i n g provisionedUninstalledPackageFullNames->InsertIgnoreDuplicates(bundleFullName) provisionedUninstalledPackageFullNames->InsertIgnoreDuplicates(mainPackageFullName) WriteAllProvisionedUninstalledPackageKeysToList( provisionedInstalledPackageFullNames, &this->oemProvisionedPackageFamilyNameSet, &provisionedUninstalledPackageFullNames) WriteAllProvisionedUninstalledPackageKeysToList( provisionedInstalledPackageFullNames, &this->lobProvisionedPackageFamilyNameSet, &provisionedUninstalledPackageFullNames) this->pluginAllUserStoreKey->CreateSubKey( userSid, KEY_READ | KEY_WRITE, perUserInstalledKey.AddressOf()) perUserInstalledKey->CreateSubKey( package, KEY_READ | KEY_WRITE, perUserInstalledSubKey.AddressOf()) perUserInstalledSubKey->SetUInt32Value( lastReturnValueRegistryValueName, ERROR_SUCCESS) F a i l e d t o e n u m e r a t e p a c k a g e s f o r t h e u s e r % w s w i t h 0 x % x F a i l e d t o w r i t e o e m u n i n s t a l l e d p a c k a g e s f o r u s e r % w s w i t h 0 x % x Common::RegistryKey::CreateKey( HKEY_LOCAL_MACHINE, pluginAllUserStoreRegistryKeyString, KEY_READ | KEY_WRITE | WRITE_DAC, pluginAppxKey.AddressOf()) CreateSecurityDescriptor(&securityDescriptor) A p p x A l l U s e r S t o r e pluginAppxKey->CreateSubKey( L"AppxAllUserStore", KEY_READ | KEY_WRITE, this->pluginAllUserStoreKey.AddressOf()) this->pluginAllUserStoreKey->CreateSubKey( L"Upgrade", KEY_READ | KEY_WRITE, this->pluginUpgradeKey.AddressOf()) this->pluginAllUserStoreKey->CreateSubKey( L"DownlevelInstalled", KEY_READ | KEY_WRITE, this->pluginDownlevelInstalledKey.AddressOf()) this->pluginAllUserStoreKey->CreateSubKey( L"EndOfLife", KEY_READ | KEY_WRITE, this->pluginEndOfLifeKey.AddressOf()) this->pluginAllUserStoreKey->CreateSubKey( L"Staged", KEY_READ | KEY_WRITE, this->pluginStagedKey.AddressOf()) S t a g e d U s e r A c q u i r e d pluginAppxKey->CreateSubKey( L"StagedUserAcquired", KEY_READ | KEY_WRITE, this->pluginStagedUserAcquiredKey.AddressOf()) A p p l i c a t i o n s pluginAppxKey->CreateSubKey( L"Applications", KEY_READ | KEY_WRITE, this->pluginApplicationsKey.AddressOf()) O r i g i n a l d e p e n d e n c y w a s % w s Common::Deployment::GetVersionlessNameFromPackageFullName( dependencyPackageFullName, &versionlessName) W r i t i n g D e p e n d e n c y K e y % w s mainPackageKey->CreateSubKey( highestVersionDependency, KEY_READ | KEY_WRITE, dependencyKey.AddressOf()) config.GetInstalledManifestPathFromPackageMoniker( highestVersionDependency, &dependencyManifestPath) dependencyKey->SetStringValue( AppxAllUserStore::regValuePath, dependencyManifestPath.GetString()) config.GetInstalledManifestPathFromBundleFullName( bundleFullName, &packageManifestPath) config.GetInstalledManifestPathFromPackageMoniker( mainPackageFullName, &packageManifestPath) N o n e e d t o w r i t e A p p l i c a t i o n s K e y b e c a u s e u p l e v e l p r o v i s i o n e d p a c k a g e % w s i s t h e l a t e s t v e r s i o n packageSubKeyBuilder.AppendString(packageToWrite) W r i t i n g A p p l i c a t i o n s K e y % w s this->pluginApplicationsKey->CreateSubKey( packageSubKey.GetChars(), KEY_READ | KEY_WRITE, mainPackageKey.AddressOf()) mainPackageKey->SetStringValue( AppxAllUserStore::regValuePath, packageManifestPath.GetString()) mainPackageKey->SetUInt32Value(AppxAllUserStore::regValueIsLOBApp, 1) mainPackageKey->SetUInt32Value(AppxAllUserStore::regValueIsUpgradeOEMApp, 1) WriteDependencyRegistryKey( mainPackageKey.Value(), dependencyPackage->dependencyPackageMoniker) F a i l e d t o g e t d e p e n d e n c i e s f r o m t h e f i l e s y s t e m , t r y i n g r e g i s t r y WriteDependencyRegistryKey( mainPackageKey.Value(), dependencyFullNames[i]->GetChars()) F a i l e d t o g e t d e p e n d e n c i e s f r o m t h e r e g i s t r y , n o t w r i t i n g d e p e n d e n c i e s F a i l e d t o w r i t e p r o v i s i o n e d p a c k a g e s t o s t a g e d l i s t w i t h 0 x % x S t a r t i n g A p p x U p g r a d e M i g r a t i o n P l u g i n d u r i n g G a t h e r F a i l e d t o c r e a t e t o p l e v e l r e g i s t r y k e y s 0 x % x F a i l e d t o c r e a t e p e r - m a c h i n e k e y s 0 x % x F a i l e d t o e n u m e r a t e a l l u s e r s w i t h 0 x % x ProcessPackagesForUser(this->userSids.At(i)->GetChars()) S u c c e s s f u l l y f i n i s h e d p r o c e s s i n g a l l u s e r s a n d p a c k a g e s d u r i n g A p p x U p g r a d e M i g r a t i o n G a t h e r Common::RegistryKey::Open( HKEY_LOCAL_MACHINE, allUserStorePath.GetChars(), KEY_READ | KEY_WRITE | WRITE_DAC, allUserStoreKey.AddressOf()) allUserStoreKey->OpenSubKey( L"Applications", KEY_READ | KEY_WRITE | WRITE_DAC, allUserApplicationsKey.AddressOf()) N o P l u g i n k e y f o u n d - - d o w n l e v e l h a d n o a p p s o r D i s c o v e r / G a t h e r f a i l e d . N o A p p l i c a t i o n s P l u g i n k e y f o u n d - - d o w n l e v e l h a d n o O E M a p p s o r n e w e r a l l - u s e r a p p s t o c o p y o v e r New(Common::StringBuffer, &uplevelPackageToDelete) uplevelPackageToDelete->SetValueFromString(subKey) keysToDelete.Add(uplevelPackageToDelete) D e l e t i n g U p l e v e l a l l - u s e r k e y % w s b e c a u s e d o w n l e v e l h a d a h i g h e r v e r s i o n allUserApplicationsKey->DeleteSubKey(keysToDelete[i]->GetChars()) this->pluginApplicationsKey->OpenSubKey(subKey, KEY_READ, packageFamilyKey.AddressOf()) W r i t i n g D o w n l e v e l a l l - u s e r k e y % w s t o u p l e v e l k e y config.GetPackageRoot(&autogenDirectoryPath) pathBuilder.AppendChar(L'\\') pathBuilder.AppendString(packageFullName) pathBuilder.AppendString(autogenDirectorySubPath) key->OpenSubKey(familyName, KEY_READ, packageFamilyKey.AddressOf()) P r e R e g i s t e r i n g S t a g e d p a c k a g e % w s N o a u t o g e n p a t h f o u n d f o r f o r t h i s p a c k a g e . T h i s i s e x p e c t e d f o r p a c k a g e s t h a t w e r e n ' t r e g i s t e r e d d o w n l e v e l I g n o r i n g e r r o r : P a c k a g e % w s f a i l e d t o e n s u r e d e l e t e d A u t o g e n : 0 x % x I g n o r i n g e r r o r : P a c k a g e % w s f a i l e d t o p r e r e g i s t e r : 0 x % x AppxAllUserStore::GetStagedApplicationsFullPath(&allUserStoreStagedPath) Common::RegistryKey::Open( HKEY_LOCAL_MACHINE, allUserStoreStagedPath.GetChars(), KEY_READ | KEY_WRITE | WRITE_DAC, stagedKey.AddressOf()) PreRegisterPackagesInRegistryKey(stagedKey) A p p x D e p l o y m e n t C l i e n t . d l l AppxPreRegisterPackage N o P l u g i n k e y f o u n d - - D i s c o v e r / G a t h e r f a i l e d 0 x % x . P r e r e g i s t e r i n g u p l e v e l i m a g e ' s k e y N o P l u g i n S t a g e d k e y f o u n d - - D i s c o v e r / G a t h e r f a i l e d 0 x % x . P r e r e g i s t e r i n g u p l e v e l i m a g e ' s k e y PreRegisterPackagesInRegistryKey(this->pluginStagedKey) N o P l u g i n S t a g e d U s e r A c q u i r e d k e y f o u n d . A s f a r a s w e k n o w , U s e r h a d n o p a c k a g e s PreRegisterPackagesInRegistryKey(this->pluginStagedUserAcquiredKey) S t a r t i n g A p p x U p g r a d e M i g r a t i o n P l u g i n d u r i n g A p p l y S u c c e s s U n a b l e t o w r i t e a l l u s e r s t o r e k e y s 0 x % x U n a b l e t o p r e r e g i s t e r p a c k a g e s : 0 x % x AppxAllUserStore::GetUpgradeApplicationsFullPath(&upgradePath) Common::RegistryKey::Open( HKEY_LOCAL_MACHINE, upgradePath.GetChars(), KEY_READ | KEY_WRITE, upgradeKey.AddressOf()) upgradeKey->SetUInt64Value(timeElapsedValueName, timeElapsed) S u c c e s s f u l l y f i n i s h e d p r o c e s s i n g a l l p a c k a g e s d u r i n g A p p x U p g r a d e M i g r a t i o n A p p l y S u c c e s s å?ó¨°Ö¶ü PVÀ 0 ? F?7?S·C?wçÛÝ?4FdX¦»_?_J?_ðt½¿:{ k-k>?'O?1<Ä&£?FDmsͳJ?ô?ÍöaT@ ? 0 ? P ? 8? ? ?²?±´º¶? ª 4M O D U L E G U I D I n p r o c S e r v e r 3 2 L o c a l S e r v e r 3 2 M O D U L E T Y P E ¦Á'®ò%ýE?(?ò? ! ! ? ? ? <