关于安装包快捷方式的问题

都是通过strCommand = _T(RUN_UTILITY_INSTALL_SPREAD_OPERATE_CMD);   Unitil通过命令行来实现的   通过EXE条用命令行

 

void CRunInstallSoftInfo::DoRunInstallSoftInfo(HINSTANCE hInstance, BOOL bInstallSilent, const TCHAR *lpszInstallPath)
{
    // 删除其它目录文件
    xstring strLastInstallPath = CConfigureInstance::Instance().GetInstallPath();
    xstring strCurInstallPath = lpszInstallPath;
    xstring strTempLastInstallPath = strLastInstallPath;
    xstring strTempCurInstallPath = strCurInstallPath;
    CStringUtil::ToLowerXString(strTempLastInstallPath);
    CStringUtil::ToLowerXString(strTempCurInstallPath);
    if (strTempLastInstallPath != strTempCurInstallPath)
    {
        PathUtil::UnDeleteDirectory(strLastInstallPath.c_str());
    }

    // 或取父进程信息
    GetParentProcessInfo();

    TCHAR sz7zTempFile[MAX_PATH] = {'\0'};
    //
    GetTempPath(MAX_PATH, sz7zTempFile);
    //
    PathUtil::CreateDirectoryPath(sz7zTempFile);
    //
    HRSRC  hRes = FindResource(hInstance, _T("MyPDF"), _T("DATA"));
    if (hRes == NULL)
    {
        return;
    }
    HGLOBAL  hData = LoadResource(hInstance, hRes);
    LPVOID  lpData = LockResource(hData);
    DWORD dwSize = SizeofResource(hInstance, hRes);
    int nRand = RandUtil::GetRand(10000, 99999);
    xstring strRand = IntUtil::IntToString(nRand);
    _tcscat(sz7zTempFile, SOFT_FILE_NAME);
    _tcscat(sz7zTempFile, _T("-"));
    _tcscat(sz7zTempFile, strRand.c_str());
    _tcscat(sz7zTempFile, _T(".7z"));
    if (::PathFileExists(sz7zTempFile))
    {
        FileUtil::DeleteFileOfRemoveTempRebotDelete(sz7zTempFile);
    }
    LPBYTE lpBuffer = (LPBYTE)lpData;
    HANDLE hFile = ::CreateFile
        (
        sz7zTempFile, 
        GENERIC_WRITE,
        FILE_SHARE_READ, 
        NULL, 
        CREATE_NEW,
        FILE_ATTRIBUTE_NORMAL,
        NULL);
    if(hFile != INVALID_HANDLE_VALUE)
    {
        DWORD dwWriteSize = 0;
        ::WriteFile(hFile, lpData, dwSize ,&dwWriteSize, NULL) ;
        ::CloseHandle(hFile);
    }

    CHAR szTempFile[MAX_PATH] = {'\0'};
    CStringUtil::TCHARToCHAR(sz7zTempFile, szTempFile);
    //
    CConfigureInstance::Instance().SaveChooseInstallPath();
    CConfigureInstance::Instance().CalcSoftMD5();
    //
    //
    BOOL bRunCompress = FALSE;
    BOOL bRunMoniter = FALSE;
    BOOL bCanInstallService = TRUE;
    BOOL bCreateStartMenu = FALSE;

    int nPercentage  = 0;
    if (!bRunCompress)
    {
        DoRunCompress(strCurInstallPath.c_str(), szTempFile, Extract_Callback, &nPercentage);
    }
    xstring strRunExe = _T("");
    xstring strCommand = _T("");
    xstring strRunParam = _T("");
    xstring strToolExe = lpszInstallPath;
    xstring strMutualExe = lpszInstallPath;
    //
    strToolExe += TOOL_EXE_NAME;
    strMutualExe += MUTUAL_EXE_NAME;
    //
    const TCHAR *lpszOldSpreader = CConfigureInstance::Instance().GetOldSpreader();
    const TCHAR *lpszNewSpreader = CConfigureInstance::Instance().GetNewSpreader();
    xstring strNewSpareder = lpszNewSpreader;
    if (strNewSpareder.find(_T("xt")) != xstring::npos)
    {
        bRunMoniter = TRUE;
    }
    if (CConfigureInstance::Instance().GetCreateStartMenu())
    {
        bCreateStartMenu = TRUE;
    }
    if (CConfigureInstance::Instance().GetCanInstallService())
    {
        bCanInstallService = TRUE;
    }
    else
    {
        bCanInstallService = FALSE;
    }
    if (bInstallSilent)
    {
        bCanInstallService = TRUE;
    }

    strCommand = _T(RUN_UTILITY_INSTALL_SPREAD_OPERATE_CMD);
    if (_tcslen(lpszOldSpreader) > 0)
    {
        strRunParam = _T(RUN_CMD_SPLIT_VALUE);
        strRunParam += _T(OLD_CLIENT_ID_PARAM_NAME);
        strRunParam += _T(RUN_CMD_SPACE_VALUE);
        strRunParam += lpszOldSpreader;
        strRunParam += _T(" ");
        strRunParam += _T(RUN_CMD_SPLIT_VALUE);
        strRunParam += _T(NEW_CLIENT_ID_PARAM_NAME);
        strRunParam += _T(RUN_CMD_SPACE_VALUE);
        strRunParam += lpszNewSpreader;
    }
    else
    {
        strRunParam += _T(RUN_CMD_SPLIT_VALUE);
        strRunParam += _T(NEW_CLIENT_ID_PARAM_NAME);
        strRunParam += _T(RUN_CMD_SPACE_VALUE);
        strRunParam += lpszNewSpreader;
    }

    if (bRunMoniter)
    {
        strRunParam += _T(" ");
        strRunParam += _T(RUN_CMD_SPLIT_VALUE);
        strRunParam += _T(INSTALL_MONITER_PARAM_NAME);
        strRunParam += _T(RUN_CMD_SPACE_VALUE);
        strRunParam += _T("true");
    }
    if (!bCanInstallService)
    {
        strRunParam += _T(" ");
        strRunParam += _T(RUN_CMD_SPLIT_VALUE);
        strRunParam += _T(INSTALL_SERVICE_PARAM_NAME);
        strRunParam += _T(RUN_CMD_SPACE_VALUE);
        strRunParam += _T("false");
    }
    if (!bCreateStartMenu)
    {
        strRunParam += _T(" ");
        strRunParam += _T(RUN_CMD_SPLIT_VALUE);
        strRunParam += _T(INSTALL_START_MENU_PARAM_NAME);
        strRunParam += _T(RUN_CMD_SPACE_VALUE);
        strRunParam += _T("false");
    }
    if (!bInstallSilent)
    {
        strRunParam += _T(" ");
        strRunParam += _T(RUN_CMD_SPLIT_VALUE);
        strRunParam += _T(INSTALL_SILENT_PARAM_NAME);
        strRunParam += _T(RUN_CMD_SPACE_VALUE);
        strRunParam += _T("false");
    }

    strRunExe = _T("\"");
    strRunExe += strMutualExe;
    strRunExe += _T("\" ");
    strRunExe += strCommand;
    strRunExe += _T(" ");
    strRunExe += strRunParam;

    ProcessUtil::CreateUIProcess(strRunExe.c_str(), true, 10 * 1000);

    nPercentage += (100 - nPercentage) / 3;
    Extract_Callback(nPercentage, 100);
    nPercentage += (100 - nPercentage) / 3;
    Extract_Callback(nPercentage, 100);
    //
    ::DeleteFile(sz7zTempFile);
    //
    Extract_Callback(100, 100);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值