pub struct Selection {
pub crt: String,
pub sdk: String,
pub files: Vec<Wanted>,
pub cabs: Vec<Wanted>,
}Expand description
Which files an MSVC sysroot for a set of architectures is made of.
Fields§
§crt: StringThe Visual C++ release the CRT came from, such as 14.44.35220.
sdk: StringThe Windows SDK release, such as 10.0.26100.15.
files: Vec<Wanted>Every file, sorted by package and then by name so that two runs agree about the order.
cabs: Vec<Wanted>The cabinets the Windows SDK publishes, sorted by name, which is where the bytes the
installers in Selection::files describe actually are.
All of them rather than the ones a target needs, because that is not a question this module
can answer: an installer is a database and the cabinet it wants is a row in it. A caller that
has read one looks the name up with Selection::cab and downloads what comes back.
Implementations§
Source§impl Selection
impl Selection
Sourcepub fn parse(text: &str, chips: &[Chip]) -> Result<Self, MsvcError>
pub fn parse(text: &str, chips: &[Chip]) -> Result<Self, MsvcError>
Choose what to download out of an installer manifest.
chips is which architectures to get libraries for. The headers are shared, so a selection
for four architectures is eight library packages and one of everything else.
§Errors
When the document does not parse, when it has no Visual C++ or no Windows SDK in it, and when a package or an installer the selection needs is not among its files.
Sourcepub fn cab(&self, name: &str) -> Option<&Wanted>
pub fn cab(&self, name: &str) -> Option<&Wanted>
The cabinet an installer named, or None for a name the Windows SDK does not publish.
The two documents spell it differently and neither spelling is wrong. An installer’s own
table says d60d1d4a1b5da9e4d41b0bcb0b1dcb14.cab, because that is what it calls the file it
wants, and the manifest says Installers\d60d1d4a1b5da9e4d41b0bcb0b1dcb14.cab, because that
is where the Visual Studio installer would put it. So the comparison is on the last component
and it ignores case, which costs nothing and is what a Windows file name means.
Sourcepub fn size(&self) -> u64
pub fn size(&self) -> u64
How many bytes the files are, which is what a person is told before accepting.
The files and not the cabinets. A cabinet is downloaded only once an installer has named it, so a total that included all 149 of them would be several times what a run actually moves, and one that included none of them would be short by most of the Windows SDK. What is honest before anything has been read is the number this gives and a sentence saying the cabinets come after, which is what the caller prints.