@@ -191,59 +191,28 @@ public static void GetAdditionalContent(IEnumerable<IDisk> disks, string destina
191191 {
192192 // PreInstalled Partition
193193 // Extracted APPX, Licenses
194-
195- string [ ] LicenseFiles = [ .. fileSystem . GetFiles ( "AppData" , "*.xml" , SearchOption . TopDirectoryOnly ) ] ;
196-
197- foreach ( string LicenseFile in LicenseFiles )
194+ if ( fileSystem . DirectoryExists ( "AppData" ) && fileSystem . DirectoryExists ( "WindowsApps" ) )
198195 {
199- Logging . Log ( $ "Extracting { Path . GetFileNameWithoutExtension ( LicenseFile ) } license file..." ) ;
196+ string [ ] LicenseFiles = [ .. fileSystem . GetFiles ( "AppData" , "*.xml" , SearchOption . TopDirectoryOnly ) ] ;
200197
201- string destFolder = Path . Combine ( destination_path , "PreInstalled" , "Licenses" ) ;
202-
203- if ( ! Directory . Exists ( destFolder ) )
198+ foreach ( string LicenseFile in LicenseFiles )
204199 {
205- Directory . CreateDirectory ( destFolder ) ;
206- }
200+ Logging . Log ( $ "Extracting { Path . GetFileNameWithoutExtension ( LicenseFile ) } license file...") ;
207201
208- string destFile = Path . Combine ( destFolder , Path . GetFileName ( LicenseFile ) ) ;
202+ string destFolder = Path . Combine ( destination_path , "PreInstalled" , "Licenses" ) ;
209203
210- if ( ! File . Exists ( destFile ) )
211- {
212- using Stream PreInstalledFileStream = fileSystem . OpenFile ( LicenseFile , FileMode . Open , FileAccess . Read ) ;
213- FileAttributes Attributes = fileSystem . GetAttributes ( LicenseFile ) & ~ FileAttributes . ReparsePoint ;
214- DateTime LastWriteTime = fileSystem . GetLastWriteTime ( LicenseFile ) ;
215-
216- using ( Stream outputFile = File . Create ( destFile ) )
217- {
218- PreInstalledFileStream . CopyTo ( outputFile ) ;
219- }
220-
221- File . SetAttributes ( destFile , Attributes ) ;
222- File . SetLastWriteTime ( destFile , LastWriteTime ) ;
223- }
224- }
225-
226- string [ ] AppFolders = [ .. fileSystem . GetDirectories ( "WindowsApps" , "*" , SearchOption . TopDirectoryOnly ) ] ;
227- foreach ( string AppFolder in AppFolders )
228- {
229- Logging . Log ( $ "Extracting { Path . GetFileName ( AppFolder ) } app files...") ;
230-
231- string [ ] AppFiles = [ .. fileSystem . GetFiles ( AppFolder , "*" , SearchOption . AllDirectories ) ] ;
232- foreach ( string AppFile in AppFiles )
233- {
234- string destFolder = Path . Combine ( destination_path , "PreInstalled" , "Apps" , string . Join ( "\\ " , AppFile [ 12 ..] . Split ( "\\ " ) [ ..^ 1 ] ) ) ;
235204 if ( ! Directory . Exists ( destFolder ) )
236205 {
237206 Directory . CreateDirectory ( destFolder ) ;
238207 }
239208
240- string destFile = Path . Combine ( destFolder , Path . GetFileName ( AppFile ) ) ;
209+ string destFile = Path . Combine ( destFolder , Path . GetFileName ( LicenseFile ) ) ;
241210
242211 if ( ! File . Exists ( destFile ) )
243212 {
244- using Stream PreInstalledFileStream = fileSystem . OpenFile ( AppFile , FileMode . Open , FileAccess . Read ) ;
245- FileAttributes Attributes = fileSystem . GetAttributes ( AppFile ) & ~ FileAttributes . ReparsePoint ;
246- DateTime LastWriteTime = fileSystem . GetLastWriteTime ( AppFile ) ;
213+ using Stream PreInstalledFileStream = fileSystem . OpenFile ( LicenseFile , FileMode . Open , FileAccess . Read ) ;
214+ FileAttributes Attributes = fileSystem . GetAttributes ( LicenseFile ) & ~ FileAttributes . ReparsePoint ;
215+ DateTime LastWriteTime = fileSystem . GetLastWriteTime ( LicenseFile ) ;
247216
248217 using ( Stream outputFile = File . Create ( destFile ) )
249218 {
@@ -254,6 +223,39 @@ public static void GetAdditionalContent(IEnumerable<IDisk> disks, string destina
254223 File . SetLastWriteTime ( destFile , LastWriteTime ) ;
255224 }
256225 }
226+
227+ string [ ] AppFolders = [ .. fileSystem . GetDirectories ( "WindowsApps" , "*" , SearchOption . TopDirectoryOnly ) ] ;
228+ foreach ( string AppFolder in AppFolders )
229+ {
230+ Logging . Log ( $ "Extracting { Path . GetFileName ( AppFolder ) } app files...") ;
231+
232+ string [ ] AppFiles = [ .. fileSystem . GetFiles ( AppFolder , "*" , SearchOption . AllDirectories ) ] ;
233+ foreach ( string AppFile in AppFiles )
234+ {
235+ string destFolder = Path . Combine ( destination_path , "PreInstalled" , "Apps" , string . Join ( "\\ " , AppFile [ 12 ..] . Split ( "\\ " ) [ ..^ 1 ] ) ) ;
236+ if ( ! Directory . Exists ( destFolder ) )
237+ {
238+ Directory . CreateDirectory ( destFolder ) ;
239+ }
240+
241+ string destFile = Path . Combine ( destFolder , Path . GetFileName ( AppFile ) ) ;
242+
243+ if ( ! File . Exists ( destFile ) )
244+ {
245+ using Stream PreInstalledFileStream = fileSystem . OpenFile ( AppFile , FileMode . Open , FileAccess . Read ) ;
246+ FileAttributes Attributes = fileSystem . GetAttributes ( AppFile ) & ~ FileAttributes . ReparsePoint ;
247+ DateTime LastWriteTime = fileSystem . GetLastWriteTime ( AppFile ) ;
248+
249+ using ( Stream outputFile = File . Create ( destFile ) )
250+ {
251+ PreInstalledFileStream . CopyTo ( outputFile ) ;
252+ }
253+
254+ File . SetAttributes ( destFile , Attributes ) ;
255+ File . SetLastWriteTime ( destFile , LastWriteTime ) ;
256+ }
257+ }
258+ }
257259 }
258260 }
259261 }
@@ -482,4 +484,4 @@ public static (string cabFileName, string cabFile) GetPackageNamingForINF(string
482484 return ( cabFileName , cabFile ) ;
483485 }
484486 }
485- }
487+ }
0 commit comments