home *** CD-ROM | disk | FTP | other *** search
/ Phoenix Heaven Sunny 2 / APPARE2.BIN / oh_towns / install / _kakeibo.c < prev    next >
Text File  |  1995-06-20  |  5KB  |  176 lines

  1. /*************************************************************************
  2. *    家計簿インストール
  3. *************************************************************************/
  4.  
  5. int        _kakeibo_make_cfg(char *instdir);
  6.  
  7. int        install_kakeibo()
  8. {
  9.     int                ret, drv, fcopy_att, srcdrv, item_setup;
  10.     char           *softname;
  11.     char           *helpfn;
  12.     char           *srcdir;
  13.     char            instdir[256], *instfile;
  14.     char           *item_prog, *item_ttl, item_para[128];
  15.     int                item_att;
  16.     char           *dlgTxm;
  17.     char            tmp[256];
  18.  
  19.     instdir[0] = '\0';
  20.     softname   = "マルチウインド型家計簿";
  21.     srcdir     = "/OH_TOWNS/KAKEIBO";
  22.     instfile   = "*.*";
  23.     helpfn     = "/OH_TOWNS/KAKEIBO/KAKEIBO.GGG";
  24.     item_ttl   = "家計簿";
  25.     item_prog  = "KAKEIBO.EXP";
  26.     item_att   = 2;
  27.  
  28.     srcdrv = toupper(DirStart[0]) - 'A';
  29.  
  30.  
  31. _TOP:
  32.     syl_putf("%s",softname);
  33.     dlgTxm = DlgTxm_open(ColBoxNormal);
  34.     DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  35.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  36.         "%s をインストールします。", softname );
  37.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
  38.  
  39.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 120, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r'  , KA_EXEC  ,
  40.         1, "", 0, "インストール : [実行]");
  41.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 120, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'H'   , KA_H     ,
  42.         2, "inst_help", helpfn, "説明 : [H]");
  43.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 120, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\x1B', KA_CANCEL,
  44.         3, "", NULL, "取消 : [取消]");
  45.  
  46.     DlgTxm_setSize(dlgTxm,480,40);
  47.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  48.     do
  49.     {
  50.         ret = DlgTxm_start(dlgTxm);
  51.     } while ( ret == 2 );
  52.     DlgTxm_close(dlgTxm);
  53.     if ( ret != 1 )
  54.         goto _RET;
  55.  
  56.  
  57.     /* インストール先指定    --------------------------------------------*/
  58.     ret = APL_setInstallDir(instdir,"%s : インストール先指定", softname);
  59.     if ( ret )
  60.         goto _TOP;
  61.  
  62.     dlgTxm = DlgTxm_open(ColBoxNormal);
  63.     DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  64.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  65.         "%s", instdir );
  66.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  67.         "このディレクトリにインストールしてもいいですか?" );
  68.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
  69.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  70.         "インストール1 … ファイルを複写してTownsMENU にアイテム登録");
  71.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
  72.         "インストール2 … ファイルを複写(アイテム登録はしない)    ");
  73.  
  74.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r'  , KA_EXEC  , 1, "", 0, "インストール1 : [実行]");
  75.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'C'   , KA_C     , 2, "", 0, "インストール2 : [C]");
  76.  
  77.     DlgTxm_setSize(dlgTxm,320,40);
  78.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  79.     ret = DlgTxm_start(dlgTxm);
  80.     DlgTxm_close(dlgTxm);
  81.     if ( ret != 1 && ret != 2 )
  82.         goto _TOP;
  83.     item_setup = (ret == 1 ? 1 : 0);
  84.  
  85.     /* インストール開始    ------------------------------------------------*/
  86.     syl_putf("INSTALL START");
  87.     FS_chdrv(srcdrv);
  88.     FS_getFullPn(tmp,srcdir);
  89.     fcopy_att = FCOPY_ATT_SUBDIR | FCOPY_ATT_TIMESTAMP | FCOPY_ATT_CHK_OVERWRITE;
  90.     ret = FCOPY_exec(fcopy_att, tmp, instfile, instdir);
  91.  
  92.     if ( ret == NORMAL )
  93.         ret = _kakeibo_make_cfg(instdir);
  94.  
  95.     /* アイテム登録    ----------------------------------------------------*/
  96.     if ( ret == NORMAL && item_setup != 0 )
  97.     {
  98.         syl_putf("ITEM SETUP");
  99.         drv = toupper(instdir[0]) - 'A';
  100.  
  101.         strcpy(tmp,instdir);
  102.         add_path_fn(tmp,item_prog);
  103.  
  104.         item_para[0] = '\0';
  105.         item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  106.     }
  107.  
  108.     /* インストール終了    ------------------------------------------------*/
  109.     install_end( softname, ret );
  110.  
  111. _RET:
  112.     syl_clear();
  113.     return (0);
  114. }
  115.  
  116. int        _kakeibo_make_cfg(char *instdir)
  117. {
  118.     int                ret, ch, len;
  119.     char           *fpsrc, *fpdst;
  120.     char            *s, tmp[256], tmp2[256], buf[256];
  121.  
  122.     ret = ERR;
  123.     fpsrc = NULL;
  124.     fpdst = NULL;
  125.  
  126.     /* テンプレートファイル    */
  127.     strcpy(tmp,DirStart);    add_path_fn(tmp,"_kakeibo.cfg");
  128.     if ( (fpsrc = FS_fopen(tmp,"r")) == NULL )
  129.         goto _ERR;
  130.  
  131.     /* 設定用ファイルのオープン    */
  132.     strcpy(tmp,instdir);    add_path_fn(tmp,"kakeibo.cfg");
  133.     if ( (fpdst = FS_fopen(tmp,"w")) == NULL )
  134.         goto _ERR;
  135.  
  136.     while ( fgets(buf,256,fpsrc) != NULL )
  137.     {
  138.         if ( buf[0] == '*' )
  139.         {    /* コメント    */
  140.             fputs(buf,fpdst);
  141.         } else
  142.         {
  143.             s = buf;
  144.             while ( *s != '\0' )
  145.             {
  146.                 if ( *s == '$' && *(char *)(s + 1) == '(' )
  147.                 {
  148.                     s += 2;
  149.                     if ( strncmp(s,"INSTDIR)",8) == 0 )
  150.                     {
  151.                         s += 8;
  152.                         FS_cnvFn(tmp,instdir);
  153.                         len = strlen(tmp);
  154.                         if ( len > 0 && tmp[len-1] == '/' )
  155.                             tmp[len-1] = '\0';
  156.                         FS_dosFn(tmp2,tmp);
  157.                         fputs(tmp2,fpdst);
  158.                     }
  159.                 } else
  160.                 {
  161.                     ch = (*s) & 0xFF;
  162.                     ++s;
  163.                     fputc(ch,fpdst);
  164.                 }
  165.             }
  166.         }
  167.     }
  168.     ret = NORMAL;
  169.  
  170. _ERR:
  171.     if ( fpsrc != NULL ) FS_fclose(fpsrc);
  172.     if ( fpdst != NULL ) FS_fclose(fpdst);
  173.  
  174.     return (ret);
  175. }
  176.