private static List <WixObject> GenerateFileSystemObjects(Dictionary <TempFolderObject, WixObject> lookupDict, TempFolder root, string appRegistryFolder) { WixDirectory targetDir = new WixDirectory("SourceDir", null, appRegistryFolder); TempFolder windowsVolumeFlag = PopulateWixDir_Rec(lookupDict, root, targetDir, appRegistryFolder); if (windowsVolumeFlag == null) { return new List <WixObject>() { targetDir } } ; else { var wixFolder = lookupDict[windowsVolumeFlag]; return(new List <WixObject>() { targetDir, new WixSetDirectory(wixFolder.Id, "[WindowsVolume]" + windowsVolumeFlag.Name) }); } }
private static TempFolder PopulateWixDir_Rec(Dictionary <TempFolderObject, WixObject> lookupDict, TempFolder currFolder, WixDirectory currWixFolder, string appRegistryFolder) { foreach (var file in currFolder.Files) { WixFile wfile = new WixFile(currWixFolder.GetPath(), file.Name, file.Source, appRegistryFolder); currWixFolder.AddFile(wfile); lookupDict.Add(file, wfile); } TempFolder windowsVolumeFlag = null; foreach (var folder in currFolder.Folders) { if (folder.Empty) { continue; } if (folder.Name != @"%windowsvolume%") { WixDirectory wfolder = new WixDirectory(folder.Name, currWixFolder.GetPath(), appRegistryFolder); currWixFolder.AddDirectory(wfolder); lookupDict.Add(folder, wfolder); windowsVolumeFlag = PopulateWixDir_Rec(lookupDict, folder, wfolder, appRegistryFolder); } else { var nextFolder = folder.Folders.First(); // WixDirectory wfolder = new WixDirectory(nextFolder.Name, currWixFolder.GetPath(), appRegistryFolder); // currWixFolder.AddDirectory(wfolder); //lookupDict.Add(nextFolder, wfolder); PopulateWixDir_Rec(lookupDict, folder, currWixFolder, appRegistryFolder);//we're skipping ahead in our recursive search but returning a flag. windowsVolumeFlag = nextFolder; } } return(windowsVolumeFlag); }
public void AddDirectory(WixDirectory obj) { Objects.Add(obj); }