|
|
1.1 ! root 1: #include <windows.h> ! 2: #include <stdlib.h> ! 3: #include <direct.h> ! 4: #include "setupapi.h" ! 5: #include "msdetect.h" ! 6: #include "msregdb.h" ! 7: #include "msshared.h" ! 8: ! 9: #include "sample.h" ! 10: ! 11: ! 12: INT installType; ! 13: CHAR szInstallPath[cchMax]; ! 14: CHAR szSrcDir[cchMax]; ! 15: ! 16: ! 17: HANDLE hInst; ! 18: ! 19: ! 20: /* ********************************************************************* */ ! 21: VOID BuildLists() ! 22: { ! 23: int iCursorSav = ShowWaitCursor(); ! 24: ! 25: BuildCopyList(); ! 26: BuildBillboardList(); ! 27: ! 28: RestoreCursor(iCursorSav); ! 29: } ! 30: ! 31: ! 32: /* ********************************************************************* */ ! 33: VOID BuildCopyList() ! 34: { ! 35: ClearCopyList(); ! 36: AddSectionFilesToCopyList("Minimum Files", szSrcDir, szInstallPath); ! 37: ! 38: if (installType == itComplete) ! 39: AddSectionFilesToCopyList("Extra Files", szSrcDir, szInstallPath); ! 40: } ! 41: ! 42: ! 43: /* ********************************************************************* */ ! 44: VOID BuildBillboardList() ! 45: { ! 46: AddToBillboardList("mscuistf.dll", DLG_BOARD1, "FModelessDlgProc", 5); ! 47: AddToBillboardList("mscuistf.dll", DLG_BOARD2, "FModelessDlgProc", 5); ! 48: AddToBillboardList("mscuistf.dll", DLG_BOARD3, "FModelessDlgProc", 5); ! 49: AddToBillboardList("mscuistf.dll", DLG_BOARD4, "FModelessDlgProc", 5); ! 50: ! 51: SetCopyGaugePosition(155, 130); ! 52: } ! 53: ! 54: ! 55: /* ********************************************************************* */ ! 56: VOID Install() ! 57: { ! 58: CHAR rgchT[16]; ! 59: INT iCursorSav; ! 60: ! 61: CopyFilesInCopyList(); ! 62: ! 63: UIStartDlg("mscuistf.dll", DLG_REGINI, "FModelessDlgProc", 0, NULL, ! 64: (LPSTR)rgchT, 16); ! 65: iCursorSav = ShowWaitCursor(); ! 66: ! 67: CreateIniKeyValue("WIN.INI", "Extensions", "smp", SzCat2Str(szInstallPath, ! 68: "SAMPLE.EXE ^.", "smp"), cmoOverwrite); ! 69: ! 70: CreateIniKeyValue("WIN.INI", "Sample", "Path", szInstallPath, cmoOverwrite); ! 71: ! 72: CreateProgmanGroup("Sample 4.0", "", cmoVital); ! 73: ShowProgmanGroup("Sample 4.0", 1, cmoVital); ! 74: ! 75: CreateProgmanItem("Sample 4.0", "Sample Exe", SzCatStr(szInstallPath, ! 76: "sample.exe"), "", cmoOverwrite); ! 77: ! 78: RestoreCursor(iCursorSav); ! 79: UIPop(1); ! 80: } ! 81: ! 82: ! 83: ! 84: ! 85: ! 86: /* **************************************************************** */ ! 87: VOID AskQuit() ! 88: { ! 89: CHAR rgchT[16]; ! 90: ! 91: while (TRUE) ! 92: { ! 93: UIStartDlg("mscuistf.dll", DLG_QUIT, "FQuitDlgProc", HELP_ASKQUIT, ! 94: "FHelpDlgProc", (LPSTR)rgchT, 15); ! 95: ! 96: switch ((WORD)(rgchT[0]+rgchT[1])) ! 97: { ! 98: default: ! 99: continue; ! 100: ! 101: case IDC_QUITEXIT: ! 102: UIPopAll(); ! 103: EndSetupToolkit(); ! 104: exit(0); ! 105: ! 106: case IDC_CANCEL: ! 107: case IDC_QUITCONTINUE: ! 108: break; ! 109: } ! 110: ! 111: UIPop(1); ! 112: return; ! 113: } ! 114: } ! 115: ! 116: /* **************************************************************** */ ! 117: VOID WelcomeDialog() ! 118: { ! 119: CHAR rgchT[16]; ! 120: ! 121: while (TRUE) ! 122: { ! 123: UIStartDlg("mscuistf.dll", DLG_WELCOME, "FInfoDlgProc", ! 124: HELP_APPLICATION, "FHelpDlgProc", (LPSTR)rgchT, 15); ! 125: ! 126: switch ((WORD)(rgchT[0]+rgchT[1])) ! 127: { ! 128: case IDC_CANCEL: ! 129: case IDC_TYPEEXIT: ! 130: AskQuit(); ! 131: continue; ! 132: ! 133: default: ! 134: continue; ! 135: ! 136: case IDC_CONTINUE: ! 137: break; ! 138: } ! 139: ! 140: UIPop(1); ! 141: return; ! 142: } ! 143: } ! 144: ! 145: /* **************************************************************** */ ! 146: VOID InstallTypeDialog() ! 147: { ! 148: CHAR rgchT[16]; ! 149: ! 150: while (TRUE) ! 151: { ! 152: SetSymbolValue("RadioDefault", "1"); ! 153: UIStartDlg("mscuistf.dll", DLG_INSTALLTYPE, "FRadioDlgProc", ! 154: HELP_INSTALLTYPE, "FHelpDlgProc", (LPSTR)rgchT, 15); ! 155: ! 156: switch ((WORD)(rgchT[0]+rgchT[1])) ! 157: { ! 158: case IDC_CANCEL: ! 159: case IDC_TYPEEXIT: ! 160: AskQuit(); ! 161: continue; ! 162: ! 163: default: ! 164: continue; ! 165: ! 166: case IDC_CONTINUE: ! 167: GetSymbolValue("ButtonChecked", rgchT, 15); ! 168: installType = (*rgchT == '1') ? itComplete : itMinimum; ! 169: break; ! 170: } ! 171: ! 172: UIPop(1); ! 173: return; ! 174: } ! 175: } ! 176: ! 177: ! 178: /* **************************************************************** */ ! 179: VOID BlankPathDialog() ! 180: { ! 181: CHAR rgchT[16]; ! 182: ! 183: while (TRUE) ! 184: { ! 185: UIStartDlg("mscuistf.dll", DLG_BLANK, "FInfo0DlgProc", 0, NULL, ! 186: (LPSTR)rgchT, 15); ! 187: ! 188: switch ((WORD)(rgchT[0]+rgchT[1])) ! 189: { ! 190: default: ! 191: continue; ! 192: ! 193: case IDC_BLANKEXIT: ! 194: AskQuit(); ! 195: continue; ! 196: ! 197: case IDC_CANCEL: ! 198: case IDC_BLANKCONTINUE: ! 199: break; ! 200: } ! 201: ! 202: UIPop(1); ! 203: return; ! 204: } ! 205: } ! 206: ! 207: ! 208: /* **************************************************************** */ ! 209: VOID DestIsSrcDialog() ! 210: { ! 211: CHAR rgchT[16]; ! 212: ! 213: while (TRUE) ! 214: { ! 215: UIStartDlg("mscuistf.dll", DLG_DESTISSRC, "FInfo0DlgProc", 0, NULL, ! 216: (LPSTR)rgchT, 15); ! 217: ! 218: switch ((WORD)(rgchT[0]+rgchT[1])) ! 219: { ! 220: default: ! 221: continue; ! 222: ! 223: case IDC_DESTISSRCEXIT: ! 224: AskQuit(); ! 225: continue; ! 226: ! 227: case IDC_CANCEL: ! 228: case IDC_DESTISSRCCONTINUE: ! 229: break; ! 230: } ! 231: ! 232: UIPop(1); ! 233: return; ! 234: } ! 235: } ! 236: ! 237: ! 238: /* **************************************************************** */ ! 239: VOID InvalidPathDialog() ! 240: { ! 241: CHAR rgchT[16]; ! 242: ! 243: while (TRUE) ! 244: { ! 245: UIStartDlg("mscuistf.dll", DLG_INVALIDPATH, "FInfo0DlgProc", 0, NULL, ! 246: (LPSTR)rgchT, 15); ! 247: ! 248: switch ((WORD)(rgchT[0]+rgchT[1])) ! 249: { ! 250: default: ! 251: continue; ! 252: ! 253: case IDC_INVALIDEXIT: ! 254: AskQuit(); ! 255: continue; ! 256: ! 257: case IDC_CANCEL: ! 258: case IDC_INVALIDCONTINUE: ! 259: break; ! 260: } ! 261: ! 262: UIPop(1); ! 263: return; ! 264: } ! 265: } ! 266: ! 267: ! 268: /* **************************************************************** */ ! 269: VOID AppendSlash(LPSTR sz1) ! 270: { ! 271: LPSTR sz2 = sz1; ! 272: ! 273: while (*sz2) ! 274: { ! 275: sz1 = sz2; ! 276: sz2 = AnsiNext(sz1); ! 277: } ! 278: ! 279: if (sz2 != sz1 + 1 || *sz1 != '\\') ! 280: { ! 281: *sz2++ = '\\'; ! 282: *sz2 = '\0'; ! 283: } ! 284: } ! 285: ! 286: ! 287: /* **************************************************************** */ ! 288: VOID StripSlash(LPSTR sz1) ! 289: { ! 290: LPSTR sz2 = sz1; ! 291: ! 292: while (*sz2) ! 293: { ! 294: sz1 = sz2; ! 295: sz2 = AnsiNext(sz1); ! 296: } ! 297: ! 298: if (sz2 == sz1 + 1 && *sz1 == '\\') ! 299: *sz1 = '\0'; ! 300: } ! 301: ! 302: ! 303: /* **************************************************************** */ ! 304: BOOL FInstallPathDialog() ! 305: { ! 306: CHAR rgchT[16]; ! 307: BOOL fRet; ! 308: CHAR sz[cchMax]; ! 309: ! 310: lstrcpy(sz, szInstallPath); ! 311: ! 312: StripSlash(sz); ! 313: SetSymbolValue("EditTextIn", sz); ! 314: SetSymbolValue("EditFocus", "END"); ! 315: ! 316: while (TRUE) ! 317: { ! 318: UIStartDlg("mscuistf.dll", DLG_INSTALLPATH, "FEditDlgProc", ! 319: HELP_INSTALLPATH, "FHelpDlgProc", (LPSTR)rgchT, 15); ! 320: ! 321: if ((WORD)(rgchT[0]+rgchT[1]) == IDC_PATHEXIT) ! 322: { ! 323: AskQuit(); ! 324: continue; ! 325: } ! 326: else if ((WORD)(rgchT[0]+rgchT[1]) == IDC_PATHCANCEL ! 327: || (WORD)(rgchT[0]+rgchT[1]) == IDC_CANCEL ! 328: || (WORD)(rgchT[0]+rgchT[1]) == IDC_BACK) ! 329: { ! 330: fRet = FALSE; ! 331: break; ! 332: } ! 333: ! 334: GetSymbolValue("EditTextOut", sz, cchMax); ! 335: ! 336: if (lstrlen(sz) == 0) ! 337: { ! 338: BlankPathDialog(); ! 339: continue; ! 340: } ! 341: ! 342: if (!FValidDir(sz)) ! 343: { ! 344: InvalidPathDialog(); ! 345: continue; ! 346: } ! 347: ! 348: lstrcpy(szInstallPath, sz); ! 349: AppendSlash(szInstallPath); ! 350: ! 351: if (lstrcmp(szInstallPath, szSrcDir) == 0) ! 352: { ! 353: DestIsSrcDialog(); ! 354: continue; ! 355: } ! 356: ! 357: fRet = TRUE; ! 358: break; ! 359: } ! 360: ! 361: UIPop(1); ! 362: return fRet; ! 363: } ! 364: ! 365: ! 366: ! 367: ! 368: ! 369: ! 370: /* ********************************************************************* */ ! 371: VOID SetupError(int error) ! 372: { ! 373: CHAR rgchT[16]; ! 374: BOOL fLoopForDialog = TRUE; ! 375: static BOOL fInsideSetupError = FALSE; ! 376: ! 377: if (!fInsideSetupError) ! 378: { ! 379: fInsideSetupError = TRUE; ! 380: ! 381: UIPopAll(); ! 382: ! 383: while (fLoopForDialog) ! 384: { ! 385: UIStartDlg("mscuistf.dll", DLG_ERROR, "FInfo0DlgProc", 0, NULL, ! 386: (LPSTR)rgchT, 15); ! 387: ! 388: switch ((WORD)(rgchT[0]+rgchT[1])) ! 389: { ! 390: default: ! 391: continue; ! 392: ! 393: case IDC_CANCEL: ! 394: case IDC_ERROREXIT: ! 395: fLoopForDialog = FALSE; ! 396: break; ! 397: } ! 398: } ! 399: ! 400: UIPop(1); ! 401: } ! 402: ! 403: EndSetupToolkit(); ! 404: exit(0); ! 405: } ! 406: ! 407: ! 408: /* **************************************************************** */ ! 409: INT PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR szCmdLineArgs, ! 410: INT nCmdShow) ! 411: { ! 412: hInst = hInstance; ! 413: ! 414: if (InitSetupToolkit(szCmdLineArgs) > 0) // always should come first ! 415: { ! 416: if (FInitRegDb()) ! 417: { ! 418: SetBitmap("mscuistf.dll", 1); ! 419: SetTitle("Sample 4.0 Setup"); ! 420: ReadInfFile(SzCatStr(szCurDir, "sample.inf")); ! 421: ! 422: lstrcpy(szInstallPath, "C:\\SAMPLE\\"); ! 423: GetSymbolValue("STF_SRCDIR", szSrcDir, cchMax); ! 424: ! 425: WelcomeDialog(); ! 426: ! 427: do { ! 428: InstallTypeDialog(); ! 429: } while (!FInstallPathDialog()); ! 430: ! 431: BuildLists(); ! 432: Install(); ! 433: TerminateRegDb(); ! 434: } ! 435: ! 436: EndSetupToolkit(); ! 437: } ! 438: exit(0); ! 439: return(0); ! 440: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.