前面分析安装后,就会调用setup.exe程序运行,在入口函数里处理命令行参数newsetup后,就会调用函数newsetup来运行,下面来仔细地分析这个函数是到底做什么事情。如下:
#001 static VOID
#002 RunNewSetup (HINSTANCE hInstance)
#003 {
#004 HMODULE hDll;
#005 PINSTALL_REACTOS InstallReactOS;
#006
这里进行配置参数初始化,比如注册表里参数,固定文件保存的目录等等。
#007 /* some dlls (loaded by syssetup) need a valid user profile */
#008 InitializeProfiles();
#009
这里加载动态连接库syssetup文件。
#010 hDll = LoadLibrary (TEXT("syssetup"));
#011 if (hDll == NULL)
#012 {
#013 DPRINT("Failed to load 'syssetup'!/n");
#014 return;
#015 }
#016
从动态连接库syssetup里获取安装ReactOS的函数InstallReactOS。
#017 DPRINT("Loaded 'syssetup'!/n");
#018 InstallReactOS = (PINSTALL_REACTOS)GetProcAddress (hDll, "InstallReactOS");
#019
#020 if (InstallReactOS == NULL)
#021 {
#022 DPRINT("Failed to get address for 'InstallReactOS()'!/n");
#023 FreeLibrary (hDll);
#024 return;
#025 }
#026
接着运行动态连接库里函数InstallReactOS。
#027 InstallReactOS (hInstance);
#028
运行完成后,就开始释放动态连接库。
#029 FreeLibrary (hDll);
#030 }