情景很简单,我写了一个软件,想做个安装程序。就假设这个软件是一个显示“Hello World”的MFC应用程序。
讨教手写安装程序的方法,过程,原理等。

解决方案 »

  1.   

    不是很明白LZ在说什么,一个应用程序安装?安装what?
      

  2.   

    你找一个自解压的程序源代码(projectcode上面就有),安装过程就是自解压到一个目录,并写注册表
      

  3.   

    复杂一点的话使用CopyFile、MoveFile等文件操作API写一个对应的程序即可。简单的话写一个脚本按照即可。按照时双击bat文件即可
      

  4.   

    首先,本人的结贴率实在不需要膜拜,因为本人不是神。
    其次,按照大伙的说法,我给用户安装程序的时候,岂不是要连我程序的.exe文件都要一起弄出去?OK,我再说下我的意思,做一个像QQ客户端那样的安装程序!
      

  5.   

    另,如果各位有这方面的源代码,还请借我参考一下。本人的邮箱:[email protected]
      

  6.   

    如果你想把所有东西都做成一个exe可以把需要的东西全都放到资源里然后安装的话就是释放出来
      

  7.   


    你有示例吗?我开始用InstallShield 12做了一个,但是发现那界面太死板,没法改,虽然可以替换些图片,自己选择些对话框,但毕竟不如自己设计的对话框自由灵活。我之前都没有做过这方面的事情,所以最好有源代码看看。
      

  8.   

    安装程序我没自己写过
    不过操作资源的话你可以看看我的博客
    http://blog.csdn.net/xianglitian/archive/2010/05/23/5618817.aspx
      

  9.   

    主要就是拷贝文件、注册dll或者系统服务之类的,不复杂的
      

  10.   

    哦,看来问题又回到原点了,我最好用现成的工具,如InstallShield?
      

  11.   

    想要手写安装程序。可以自己写一个EXE程序作为安装程序,也不必把所有待安装的文件都集成到这个EXE里面,只要把待安装的文件放到安装程序同一个目录下即可,你写的安装程序可以用CopyFolder的方法来安装,这样实现起来很简单。如果要求是一个单独EXE的安装程序,就把你整个目录打包成一个自解压的EXE压缩包,然后选好自动运行的程序是你的安装程序即可。
      

  12.   

    1、建一个基于Dialog类的MFC项目,界面丰俭由己
    2、将需要拷贝的文件资源以项目自定义资源的形式添加进去,比如命名为"FILE"
    3、安装的过程就是用程序:
       创建安装目录
       复制还原文件
       写注册表
       创建程序运行环境
       创建程序启动组和桌面快捷方式如下是一个将添加到项目中的“FILE”资源还原为文件的函数,供参考:BOOL WriteFileResource(UINT nID, CString strFileName)
    {
    HRSRC hRes;
    HINSTANCE hInst = AfxGetResourceHandle();
    BOOL bResult = FALSE; DWORD dwLen=0; hRes = FindResource(hInst,MAKEINTRESOURCE(nID), _T("FILE"));
    if (hRes != NULL)
    {
    dwLen = SizeofResource(hInst, hRes);
    if (dwLen > 0)
    {
    HGLOBAL hGlob = LoadResource(hInst, hRes);
    if (hGlob != NULL)
    {
    LPVOID lpData = LockResource(hGlob); if (lpData != NULL)
    {
    CFile f;
    if(f.Open(strFileName,CFile::modeCreate|CFile::modeWrite))
    {
    f.WriteHuge(lpData,dwLen);
    f.Close();
    bResult=TRUE;
    }
    }
    FreeResource(hGlob);
    }
    }
    }
    return bResult;
    }
      

  13.   

    为什么一定是InstallShield,打包工具多的事,有些一些支持脚本编程,你想做成什么样都行。
    同样,鉴于你的标题,具体什么工具我也就说了。
      

  14.   

    OMG,到现在,我开始感觉我的标题写的太武断了,甚至于开始渐渐埋没各位伟大的想法了。请各位各抒己见,不必拘泥于标题。
    我也在考虑InstallShield,但这玩意貌似有点复杂,我想通过脚本来自定义安装界面,发现处处捉襟见肘,又找不到全面而详细些的相关教程。
    ok1234567先生的代码和xianglitian先生的代码可以结合起来,然后续工作仍旧颇多。
    继续听取各位的真知灼见...
      

  15.   

    完整的安装程序,要考虑卸载,要有安装日志,安装一半出错要支持回滚操作,要可以检查系统依赖项(common DLL或者COM组件之类),还要检查这些东西的版本....所以说是个大工程,楼主加油
      

  16.   

    就是普通的应用程序,你爱怎么做就怎么做。
    其实就是:
    1,让用户选择安装的目录
    2,拷贝文件(你的文件一般是事先打包成 ZIP 文件,作为资源放在安装程序里)
    3,注册DLL,注册服务,写一些注册表配置文件等
    4,提示成功卸载也是一样的应用程序,只是你要事先把卸载程序做好并放在安装程序里一起安装即可。我做过的,很早很早以前的事情了,那时候不知道有专门的安装脚本,老费劲了,建议您还是不要尝试呵呵,很辛苦。
      

  17.   

    用NSIS脚本,应该不是工具吧。
    以前,我就用NSIS写了个差不多和QQ2010版安装包一模一样的(是差不多了,没有QQ的皮肤漂亮了)。
    用脚本确实很方便,好多常用的功能,它们的库都有。