private static void Initialize()
{
VfsDirectory root = new VfsDirectory();
root.AddDirectory("lib").AddDirectory("security").Add("cacerts", new VfsCacertsEntry());
VfsDirectory bin = new VfsDirectory();
root.Add("bin", bin);
root.Add("assembly", new VfsAssembliesDirectory());
AddDummyLibrary(bin, "zip");
AddDummyLibrary(bin, "awt");
AddDummyLibrary(bin, "rmi");
AddDummyLibrary(bin, "w2k_lsa_auth");
AddDummyLibrary(bin, "jaas_nt");
AddDummyLibrary(bin, "jaas_unix");
AddDummyLibrary(bin, "unpack");
AddDummyLibrary(bin, "net");
bin.Add("java", new VfsJavaExe());
bin.Add("javaw", new VfsJavaExe());
bin.Add("java.exe", new VfsJavaExe());
bin.Add("javaw.exe", new VfsJavaExe());
// this is a weird loop back, the vfs.zip resource is loaded from vfs,
// because that's the easiest way to construct a ZipFile from a Stream.
java.util.zip.ZipFile zf = new java.util.zip.ZipFile(RootPath + "vfs.zip");
java.util.Enumeration e = zf.entries();
while (e.hasMoreElements())
{
AddZipEntry(zf, root, (java.util.zip.ZipEntry)e.nextElement());
}
// make "lib/security/local_policy.jar" point to "lib/security/US_export_policy.jar"
// to get the unrestricted crypto policy
VfsDirectory security = (VfsDirectory)((VfsDirectory)root.GetEntry("lib")).GetEntry("security");
security.Add("local_policy.jar", security.GetEntry("US_export_policy.jar"));
Interlocked.CompareExchange(ref VirtualFileSystem.root, root, null);
}