Skip to content

Commit 8d28445

Browse files
Update BuildMetadataHandler.cs: Added check for folder existence (#9)
in some cases (no applications were added to the image when it was built like the rebuilt 18875 image) these two directories may not exist
1 parent e127838 commit 8d28445

File tree

1 file changed

+43
-41
lines changed

1 file changed

+43
-41
lines changed

src/MobilePackageGen.Common/BuildMetadataHandler.cs

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)