|
@@ -1,7 +1,5 @@
|
|
|
#include "CCmd.h"
|
|
|
-#include "KeyVar.h"
|
|
|
-#include <ShlObj.h>
|
|
|
-#include "Logini.h"
|
|
|
+
|
|
|
#pragma region cmd指令说明
|
|
|
// 【/k】:调用cmd进程时,必须调用此参数
|
|
|
// // 【x:】:x为x盘符,cd到不同盘符下的文件夹路径之前,必须要要调用此参数,否则cd指令不生效;
|
|
@@ -129,19 +127,27 @@ BOOL CCmd::Executecmd(TCHAR pszCmdLine[],bool isVBA)
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
-bool CCmd::GetVBA()
|
|
|
+
|
|
|
+#pragma region VBA脚本指令
|
|
|
+//编辑vba脚本内容-》生成文件vba文件到安装路径-》执行vba文件
|
|
|
+// vba作为静默安装的备用方案
|
|
|
+//
|
|
|
+//因时间有限,暂时不进行排查修复UTF-16的vba脚本执行没反应的问题
|
|
|
+bool CCmd::GetVBA_UTF16()
|
|
|
{
|
|
|
|
|
|
std::wstring cmdd = L"";
|
|
|
std::wstring echoc = L"ECHO.";
|
|
|
+ //vba脚本内容
|
|
|
cmdd = L"@echo off\n" +
|
|
|
echoc + L"\n" +
|
|
|
PathCore::smPath_Install.substr(0, 1) + L": & " + L"cd " + L"%~dp0" + L"\n" +
|
|
|
echoc + L"\n" +
|
|
|
echoc + L"\n" +
|
|
|
- L"start/wait " + Product::smName_InstallPackage + L" APPDIR=\""+ PathCore::smPath_Install +L"\" /qb /qn" + L"\n" +
|
|
|
+ L"start/wait " + Product::smName_InstallPackage + L" APPDIR=\"" + PathCore::smPath_Install + L"\" /qb /qn" + L"\n" +
|
|
|
echoc + L"\n" +
|
|
|
L"EXIT";
|
|
|
+
|
|
|
wstring Installpath = PathCore::smPath_Install + L"\\install.bat";
|
|
|
HANDLE hDevice = CreateFileW(Installpath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, 0,
|
|
|
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
|
|
@@ -151,10 +157,9 @@ bool CCmd::GetVBA()
|
|
|
DWORD errorCode = GetLastError();
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
- //char* chBuffer = d2;
|
|
|
+
|
|
|
DWORD dwWriteSize = 0;
|
|
|
- auto chBuffer =cmdd.c_str();
|
|
|
+ auto chBuffer = cmdd.c_str();
|
|
|
DWORD nBytes;
|
|
|
WORD a = 0xFEFF;
|
|
|
WriteFile(hDevice, &a, sizeof(a), &nBytes, NULL);
|
|
@@ -176,23 +181,11 @@ bool CCmd::GetVBA()
|
|
|
// //printf("chbuffer is %s /n", chBuffer);
|
|
|
//}
|
|
|
CloseHandle(hDevice);
|
|
|
- Executecmd(nullptr,true);
|
|
|
+ Executecmd(nullptr, true);
|
|
|
}
|
|
|
|
|
|
-bool CCmd::GetVBAContent()
|
|
|
+bool CCmd::GetVBA_UTF8()
|
|
|
{
|
|
|
-
|
|
|
- //std::wstring bat = L"";
|
|
|
- //std::wstring echo = L"ECHO.";
|
|
|
- //bat = L"@echo off\n" +
|
|
|
- // echo + L"\n" +
|
|
|
- // L"cd " + PathCore::smPath_Install.substr(0, 1) + L":" + L"%~dp0" + L"\n" +
|
|
|
- // echo + L"\n" +
|
|
|
- // echo + L"\n" +
|
|
|
- // L"start/wait " + Product::smName_InstallPackage + L" APPDIR=%cd% /qb /qn" + L"\n" +
|
|
|
- // echo + L"\n" +
|
|
|
- // L"EXIT";
|
|
|
-
|
|
|
wstring Installpath = PathCore::smPath_Install + L"\\install.bat";
|
|
|
LPCWSTR Installpathstr = Installpath.c_str();
|
|
|
|
|
@@ -210,10 +203,10 @@ bool CCmd::GetVBAContent()
|
|
|
std::string echoc = "ECHO.";
|
|
|
cmdd = "@echo off\n" +
|
|
|
echoc + "\n" +
|
|
|
- rootch + ": & " + "cd " + "%~dp0" + "\n" +
|
|
|
+ rootch + ": & " + "cd " + "%~dp0" + "\n" +
|
|
|
echoc + "\n" +
|
|
|
echoc + "\n" +
|
|
|
- "start/wait " + InstallPackagech + " APPDIR=%cd%"+ +" /qb /qn" + "\n" +
|
|
|
+ "start/wait " + InstallPackagech + " APPDIR=%cd%" + +" /qb /qn" + "\n" +
|
|
|
echoc + "\n" +
|
|
|
"EXIT";
|
|
|
char* chBuffer = &cmdd[0];
|
|
@@ -227,20 +220,19 @@ bool CCmd::GetVBAContent()
|
|
|
return false;
|
|
|
}
|
|
|
DWORD dwSize = GetFileSize(hDevice, NULL);
|
|
|
- //char* chBuffer = d2;
|
|
|
DWORD dwWriteSize = 0;
|
|
|
WORD a = 0xFEFF;
|
|
|
WriteFile(hDevice, &a, sizeof(a), &dwWriteSize, NULL);
|
|
|
- BOOL bRet = WriteFile(hDevice, chBuffer, lstrlenA(chBuffer) * sizeof(char), &dwWriteSize, NULL);
|
|
|
+ BOOL bRet = WriteFile(hDevice, chBuffer, lstrlenA(chBuffer) * sizeof(char), &dwWriteSize, NULL);
|
|
|
//BOOL bRet = WriteFile(hDevice, chBuffer, cmdd.length(), &dwWriteSize, NULL);
|
|
|
if (bRet)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
- FlushFileBuffers(hDevice); //将缓冲区数据写入磁盘
|
|
|
+ FlushFileBuffers(hDevice);
|
|
|
|
|
|
LONG IDistance = 0;
|
|
|
- DWORD dwPtr = SetFilePointer(hDevice, IDistance, NULL, FILE_BEGIN); //调整文件指针到文件开头
|
|
|
+ DWORD dwPtr = SetFilePointer(hDevice, IDistance, NULL, FILE_BEGIN);
|
|
|
DWORD dwReadSize = 0;
|
|
|
/*bRet = ReadFile(hDevice, chBuffer, 10, &dwReadSize, NULL);
|
|
|
if (bRet)
|
|
@@ -251,4 +243,8 @@ bool CCmd::GetVBAContent()
|
|
|
|
|
|
return Executecmd(nullptr, true);;
|
|
|
|
|
|
-}
|
|
|
+}
|
|
|
+#pragma endregion
|
|
|
+
|
|
|
+
|
|
|
+
|