NSIS编译及使用winrar进行压缩

分类: C++ 发布时间: 2017-06-17 15:03

使用VS2010进行开发的童鞋们在开发完代码总是需要将多个程序进行打包,生成可视化安装包然后可以压缩发送邮件之类的,下面我使用最简单的例子做个示范。

void ExecCommand( wstring FilePath, wstring lpParameters )

{

SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L”open”;
ShExecInfo.lpFile = FilePath.c_str();
ShExecInfo.lpParameters =lpParameters.c_str();
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
DWORD res = WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
if ( res == WAIT_OBJECT_0 )
{
m_msginfo.AddString(L”执行结束”);
}
else if (res == WAIT_TIMEOUT)
{
m_msginfo.AddString(L”执行超时”);
}
else
{
m_msginfo.AddString(L”执行出错”);
}

}

1.NSIS打包

nsis.exe是带有界面的,自动化执行过程中是不希望打包过程中出现界面的,搜索好久终于发现,可以使用makensis.exe进行打包

wstring nsispath = L”E:\installfile\NSIS\makensis.exe”;

wstring lpParameters = L”/raw E:\test\test.nsi”;

ExecCommand( nsispath , lpParameters );

 

程序执行完脚本会自动进入后续的流程,是不是方便很多?

2.WINRAR压缩

一直以来使用的都是带界面的winrar的功能,这次是需要将nsis自动化打包之后的程序压缩之后上传到固定位置。

压缩方式为

wstring winrarpath = L”E:\installfile\WinRAR\WinRAR.exe”;

wstring lpParameters = L”a -m3  \”E:\test\test.zip\”  -ep1 \” E:\test\test.exe\””;

ExecCommand( nsispath , lpParameters );

 

这样程序会在后台自动将test.exe 压缩为test.zip.


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!