我想实现安装程序.
现在的问题是要在开始菜单中的程序中建立一个组.还有就是建立一个快捷方式到桌面上.而且要可以从控制面板的添加删除程序里卸载.谢谢!

解决方案 »

  1.   

    1.使用Windows Installer SDK来开发安装程序。这种程序值得推荐。
    2.编写普通的Desktop 应用程序,不过必须自己负责注册表、卸载程序、快捷方式等(我们自己做过一个,拿C++写的,调试好累哦),东西比较多。
    3.使用现成的工具,我推荐使用Visual Studio.net自带的安装制造工具,功能强大而且使用简单,最主要的是不需要另外学习Script语言,使用任意一种自己熟悉的语言(VS.net支持的语言)来编写界面。而像InstallShiled它使用自己一套Script语言的。而且InstallShield的现在版本很复杂,盗版不好找:)至于Wise,没有用过,不敢说。
      

  2.   

    那我就结束详细一点吧,你看看是不是能用
    1.开始菜单中实现安装程序组,就是获取当前系统的开始菜单路径,在其中建立一个文件夹。以下代码是获取系统开始菜单路径:
    TCHAR szPath[MAX_PATH];
    ZeroMemory(szPath, sizeof(szPath));
    if (!::SHGetSpecialFolderPath(NULL, szPath, CSIDL_COMMON_PROGRAMS, FALSE)) // Win2000
    {
    if (!::SHGetSpecialFolderPath(NULL, szPath, CSIDL_PROGRAMS, FALSE))  // Win98
    throw -2;
    }
    2.Link文件其实COM接口,比较麻烦,见以下这个函数:
    BOOL CreateLink(
    LPCTSTR lpszPath, //快捷方式对应的目标文件的全路径
    LPCTSTR lpszLink, //快捷方式的全路径
    LPCTSTR lpszWorkingDirectory,//工作目录
    LPCTSTR lpszIconFile, // 图标文件
    int nIcon // 图标INDEX
    )
    {
    ASSERT((lpszPath != NULL) && (lpszLink != NULL) && 
    (lpszWorkingDirectory != NULL) && (lpszIconFile != NULL)); try
    {
    HRESULT hres;
    IShellLink * psl = NULL;
    IPersistFile* ppf = NULL;
    WORD wsz[MAX_PATH];

    hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
    if(FAILED(hres))
    goto cleanup;

    psl->SetPath(lpszPath);
    psl->SetWorkingDirectory(lpszWorkingDirectory);

    hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
    if(FAILED(hres))
    goto cleanup;

    hres = psl->SetIconLocation(lpszIconFile, nIcon);
    if(FAILED(hres))
    goto cleanup;

    MultiByteToWideChar(CP_ACP, 0, lpszLink, -1, wsz, MAX_PATH);
    hres = ppf->Save(wsz, STGM_READWRITE);

    cleanup:
    if(ppf) ppf->Release();
    if(psl) psl->Release();
    }
    catch(_com_error e)
    {
    TRACE(ReportError(e));
    return FALSE;
    } return TRUE;

    这段代码执行错误通常是当前线程中没有初始化COM Library。
    3.控制面板中添加删除文件,是在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\UNINSTALL增加一个目录。该目录名称就会显示在控制面板中。在该目录下填写一个子项UnistallString就能激活控制面板的该程序的“删除”按钮。该项的值就是你编写的卸载程序的全路径。具体怎么做就仁者见仁吧,呵呵。