diff --git a/AppInstaller/AppInstaller.rc b/AppInstaller/AppInstaller.rc
index a37350f..07c6505 100644
--- a/AppInstaller/AppInstaller.rc
+++ b/AppInstaller/AppInstaller.rc
@@ -241,9 +241,12 @@ BEGIN
APPLIST_WINTITLE "应用选择列表"
APPLIST_TITLE "你要从哪个应用开始?"
APPLIST_BUTTON_CANCEL "取消"
+ SHORTCUT_SETTINGS "设置"
+ SHORTCUT_UNINSTALL "删除 应用安装程序"
+ SHORTCUT_UPDATE "更新 App Installer"
CLHELP_1 "命令行参数说明:\n\n"
CLHELP_2 "\t/?, /Help\n\t显示帮助窗口 (命令行参数说明)\n\n"
- CLHELP_3 "\t/DisableFrame\n\t禁止使用自绘的窗口边框\n\n"
+ CLHELP_3 "\t/DisableFrame\n\t禁止使用自绘的窗口边框 (仅用于易程序)\n\n"
CLHELP_4 "\t/Win32Window\n\t不使用 WebUI,改用 Win32 窗口\n\n"
CLHELP_5 "\t/Silent\n\t一般情况下会自动安装,安装完成后在几秒后结束\n\n"
CLHELP_6 "\t/VerySilent\n\t静默安装,安装时不会显示任何信息,安装任务完成后自动结束\n\n"
@@ -269,6 +272,9 @@ END
STRINGTABLE
BEGIN
CLHELP_7 "\t/NoGUI\n\t使用 WSAppPkgIns 安装。安装时会弹出命令行窗口,安装完成后需手动关闭窗口\n\n"
+ CLHELP_8 "\t/EnableFrame\n\t使用自绘的窗口边框 (仅用于易程序)\n\n"
+ CLHELP_9 "\t/EProgram\n\t使用易的 WebUI\n\n"
+ CLHELP_10 "\t/Console\n\t使用命令行版的 应用安装程序 (其实建议直接使用 AppInstallerConsole.exe 才更方便看输入输出)\n\n"
END
STRINGTABLE
@@ -409,9 +415,12 @@ BEGIN
APPLIST_WINTITLE "App Select List"
APPLIST_TITLE "Which app do you want to start with?"
APPLIST_BUTTON_CANCEL "Cancel"
+ SHORTCUT_SETTINGS "Settings"
+ SHORTCUT_UNINSTALL "Delete App Installer"
+ SHORTCUT_UPDATE "Update App Installer"
CLHELP_1 "Usage:\n\n"
CLHELP_2 "\t/?, /Help\n\tDisplay help window (command line parameter description).\n\n"
- CLHELP_3 "\t/DisableFrame\n\tDisable the use of self-drawn window borders.\n\n"
+ CLHELP_3 "\t/DisableFrame\n\tDisable the use of self-drawn window borders. (Only use for E program.)\n\n"
CLHELP_4 "\t/Win32Window\n\tDo not use WebUI, use Win32 window instead.\n\n"
CLHELP_5 "\t/Silent\n\tUnder normal circumstances, it will be automatically installed and will end after a few seconds.\n\n"
CLHELP_6 "\t/VerySilent\n\tSilent installation, no information will be displayed during installation, and the installation task will automatically end after completion.\n\n"
@@ -429,6 +438,9 @@ END
STRINGTABLE
BEGIN
CLHELP_7 "\t/NoGUI\n\tUse WSAppPkgIns to install. A command line window will pop up during installation, and you need to manually close the window after installation.\n\n"
+ CLHELP_8 "\t/EnableFrame\n\tEnable the use of self-drawn window borders. (Only use for E program.)\n\n"
+ CLHELP_9 "\t/EProgram\n\tUse E WebUI program.\n\n"
+ CLHELP_10 "\t/Console\n\tUse the command line version of the application installer (it is actually recommended to use AppInstallerConsole.exe directly for easier viewing of input and output)\n\n"
END
STRINGTABLE
diff --git a/AppInstaller/AppInstaller.vcxproj b/AppInstaller/AppInstaller.vcxproj
index a4027fa..031cbd4 100644
--- a/AppInstaller/AppInstaller.vcxproj
+++ b/AppInstaller/AppInstaller.vcxproj
@@ -142,6 +142,7 @@
app.manifest %(AdditionalManifestFiles)
+ false
diff --git a/AppInstaller/mainwnd.cpp b/AppInstaller/mainwnd.cpp
index 40f87bc..899e15d 100644
--- a/AppInstaller/mainwnd.cpp
+++ b/AppInstaller/mainwnd.cpp
@@ -341,6 +341,7 @@ public ref class AppWindow: public Form
public:
AppWindow ()
{
+ this->Visible = false;
BOOL transitionsEnabled = FALSE;
HRESULT hr = DwmSetWindowAttribute (
reinterpret_cast (this->Handle.ToPointer ()),
@@ -396,6 +397,7 @@ public ref class AppWindow: public Form
});
Thread ^thread = gcnew Thread (gcnew ThreadStart (this, &AppWindow::InvokeRefreshAppItems));
thread->Start ();
+ this->Visible = true;
}
void SendAppData (std::vector apps)
{
@@ -1169,14 +1171,25 @@ public ref class MainWnd: public Form
if (m_silentMode)
{
// 在此版本中,在静默模式下打开无效的包后会自动关闭窗口结束程序。
- this->Close ();
+ while (!this->IsHandleCreated) {};
+ if (this->IsHandleCreated)
+ {
+ if (this->InvokeRequired)
+ {
+ this->Invoke (gcnew Action (this, &MainWnd::Close));
+ }
+ else
+ {
+ this->Close ();
+ }
+ }
}
else
{
invokeSetPage (1);
}
}
- this->invokeSetDarkMode (IsAppInDarkMode ());
+ if (this->IsHandleCreated) this->invokeSetDarkMode (IsAppInDarkMode ());
EmptyWorkingSet ((HANDLE)-1);
}
void taskInstallPackage ()
@@ -1196,10 +1209,12 @@ public ref class MainWnd: public Form
invokeSetProgressText (rcString (PAGE_2_INSTALL));
InstallStatus status = AddPackageFromPath (pkgPath.c_str (), &ProgressCallback);
// MessageBeep (MB_OK);
+ std::wstring title (L"");
if (status == InstallStatus::Success)
{
invokeSetPage (4);
- if (m_pkgInfo.applications.size () == 1 && !m_silentMode) this->eventOnPress_button1 (); // 用于启用 APP
+ title = StrPrintFormatW (GetRCString_cpp (PAGE_4_TITLE).c_str (), m_pkgInfo.getPropertyName ().c_str ());
+ if (m_pkgInfo.applications.size () == 1 && !m_silentMode && this->invokeGetLaunchWhenReady ()) this->eventOnPress_button1 (); // 用于启用 APP
Thread ^closeThread = gcnew Thread (gcnew ThreadStart (this, &MainWnd::taskCountCancel));
closeThread->IsBackground = true;
closeThread->Start ();
@@ -1207,6 +1222,7 @@ public ref class MainWnd: public Form
else
{
invokeSetPage (5);
+ title = StrPrintFormatW (GetRCString_cpp (PAGE_5_TITLE).c_str (), m_pkgInfo.getPropertyName ().c_str ());
if (m_silentMode)
{
Thread ^closeThread = gcnew Thread (gcnew ThreadStart (this, &MainWnd::taskCountCancel));
@@ -1215,7 +1231,6 @@ public ref class MainWnd: public Form
}
}
this->invokeClearTaskbarProgress ();
- std::wstring title = StrPrintFormatW (GetRCString_cpp (PAGE_4_TITLE).c_str (), m_pkgInfo.getPropertyName ().c_str ());
std::wstring text (L"");
if (GetLastErrorDetailTextLength ()) text += GetLastErrorDetailText ();
bool res = CreateToastNotification (m_idenName, title.c_str (), text.c_str (), &ToastPressCallback, m_pkgInfo.getPropertyLogoIStream ());
@@ -1325,7 +1340,8 @@ std::vector cmdargs =
{{L"", L"/", L"-"}, {L"CREATESHORTCUT", L"SHORTCUT", L"CREATELNK"}, {}, 8},
{{L"", L"/", L"-"}, {L"DELETESHORTCUT", L"DELSHORTCUT", L"DELETELNK"}, {}, 9},
{{L"", L"/", L"-"}, {L"DEVTOOL", L"DEVTOOLS", L"DEVMODE", L"DEVELOP"}, {}, 10},
- {{L"", L"/", L"-"}, {L"USEEPROGRAM", L"EPROGRAM", L"ESUPPORT", L"USEE"}, {}, 11}
+ {{L"", L"/", L"-"}, {L"USEEPROGRAM", L"EPROGRAM", L"ESUPPORT", L"USEE"}, {}, 11},
+ {{L"", L"/", L"-"}, {L"CONSOLE", L"CONSOLECLIENT"}, {}, 12},
};
// 编号为大于 0 的数,失败返回非正数
@@ -1397,9 +1413,9 @@ bool ReadCommand (int argc, LPWSTR *argv)
{
std::vector vecObjSwFiles;
bool bWin32Wnd = false, bSilent = false, bVerySilent = false,
- bUseConsole = false, bUseNewFrame = false, bDisplayHelp = false,
+ bUseCmd = false, bUseNewFrame = false, bDisplayHelp = false,
bCreateLnk = false, bDestroyLnk = false, bDevTool = false,
- bUseEProgream = false;
+ bUseEProgream = false, bConsole = false;
for (size_t cnt = 0; cnt < (size_t)argc; cnt ++)
{
int res = GetCmdArgSerial (argv [cnt]);
@@ -1410,7 +1426,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
case 1: bUseNewFrame = false; break;
case 2: bSilent = true; break;
case 3: bVerySilent = true; break;
- case 4: bUseConsole = true; break;
+ case 4: bUseCmd = true; break;
case 5: bDisplayHelp = true; break;
case 6: bUseNewFrame = true; break;
case 7: bWin32Wnd = true; break;
@@ -1418,6 +1434,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
case 9: bDestroyLnk = true; break;
case 10: bDevTool = true; break;
case 11: bUseEProgream = true; break;
+ case 12: bConsole = true; break;
}
}
else
@@ -1433,9 +1450,14 @@ bool ReadCommand (int argc, LPWSTR *argv)
MessageBox::Show (
rcString (CLHELP_1) +
rcString (CLHELP_2) +
+ rcString (CLHELP_3) +
rcString (CLHELP_4) +
rcString (CLHELP_5) +
- rcString (CLHELP_7)
+ rcString (CLHELP_6) +
+ rcString (CLHELP_7) +
+ rcString (CLHELP_8) +
+ rcString (CLHELP_9) +
+ rcString (CLHELP_10)
);
return false;
}
@@ -1459,6 +1481,12 @@ bool ReadCommand (int argc, LPWSTR *argv)
_itow (WIN_TITLE, resIdStr, 10);
desktop.writeUIntValue (L".ShellClassInfo", L"ConfirmFileOp", 0);
desktop.writeStringValue (L"LocalizedFileNames", L"App Installer.lnk", std::wstring (L"@") + path + L",-" + resIdStr);
+ _itow (SHORTCUT_SETTINGS, resIdStr, 10);
+ desktop.writeStringValue (L"LocalizedFileNames", L"Settings.lnk", std::wstring (L"@") + path + L",-" + resIdStr);
+ _itow (SHORTCUT_UNINSTALL, resIdStr, 10);
+ desktop.writeStringValue (L"LocalizedFileNames", L"Uninstaller.lnk", std::wstring (L"@") + path + L",-" + resIdStr);
+ _itow (SHORTCUT_UPDATE, resIdStr, 10);
+ desktop.writeStringValue (L"LocalizedFileNames", L"Update.lnk", std::wstring (L"@") + path + L",-" + resIdStr);
DWORD attrs = GetFileAttributesW (desktopIni);
SetFileAttributesW (desktopIni, attrs | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);
DWORD folderAttrs = GetFileAttributesW (expandedPath);
@@ -1501,7 +1529,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
else args += L"/DISABLEFRAME ";
if (bSilent) args += L"/SILENT ";
if (bVerySilent) args += L"/VERYSILENT ";
- if (bUseConsole) args += L"/NOGUI ";
+ if (bUseCmd) args += L"/NOGUI ";
if (bDisplayHelp) args += L"/? ";
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
{
@@ -1526,7 +1554,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
else args += L"/DISABLEFRAME ";
if (bSilent) args += L"/SILENT ";
if (bVerySilent) args += L"/VERYSILENT ";
- if (bUseConsole) args += L"/NOGUI ";
+ if (bUseCmd) args += L"/NOGUI ";
if (bDisplayHelp) args += L"/? ";
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
{
@@ -1541,7 +1569,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
}
}
}
- else if (bUseConsole)
+ else if (bUseCmd)
{
std::wstring root = EnsureTrailingSlash (GetProgramRootDirectoryW ());
std::wstring exepath = root + L"WSAppPkgIns.exe";
@@ -1560,6 +1588,25 @@ bool ReadCommand (int argc, LPWSTR *argv)
}
}
}
+ else if (bConsole)
+ {
+ std::wstring root = EnsureTrailingSlash (GetProgramRootDirectoryW ());
+ std::wstring exepath = root + L"AppInstallerConsole.exe";
+ std::wstring args = L"";
+ args += L"\"" + pkgPath + L"\" ";
+ std::wstring cmdline = L"\"" + exepath + L"\" " + args;
+ {
+ STARTUPINFOW si = {sizeof (STARTUPINFOW)};
+ PROCESS_INFORMATION pi = {0};
+ if (CreateProcessW (NULL, (LPWSTR)cmdline.c_str (), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
+ {
+ WaitForSingleObject (pi.hProcess, INFINITE);
+ CloseHandle (pi.hProcess);
+ CloseHandle (pi.hThread);
+ return false;
+ }
+ }
+ }
return true;
}
else if (vecObjSwFiles.size () <= 0)
@@ -1573,7 +1620,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
else args += L"/DISABLEFRAME ";
if (bSilent) args += L"/SILENT ";
if (bVerySilent) args += L"/VERYSILENT ";
- if (bUseConsole) args += L"/NOGUI ";
+ if (bUseCmd) args += L"/NOGUI ";
if (bDisplayHelp) args += L"/? ";
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
{
@@ -1597,7 +1644,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
else args += L"/DISABLEFRAME ";
if (bSilent) args += L"/SILENT ";
if (bVerySilent) args += L"/VERYSILENT ";
- if (bUseConsole) args += L"/NOGUI ";
+ if (bUseCmd) args += L"/NOGUI ";
if (bDisplayHelp) args += L"/? ";
if (bDevTool) args += L"/DEVTOOL ";
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
@@ -1613,34 +1660,59 @@ bool ReadCommand (int argc, LPWSTR *argv)
}
}
}
+ else if (bUseCmd || bConsole) return false;
else return true;
}
else if (vecObjSwFiles.size () > 1) // 面对多个文件
{
- for (auto it : vecObjSwFiles)
+ if (bConsole)
{
- wchar_t path [MAX_PATH] = {0};
- if (GetModuleFileNameW (NULL, path, MAX_PATH))
- {
- std::wstring args = L"";
- args += L"\"" + it + L"\" ";
- if (bUseNewFrame) args += L"/ENABLEFRAME ";
- else args += L"/DISABLEFRAME ";
- if (bSilent) args += L"/SILENT ";
- if (bVerySilent) args += L"/VERYSILENT ";
- if (bUseConsole) args += L"/NOGUI ";
- if (bDisplayHelp) args += L"/? ";
- if (bWin32Wnd) args += L"WIN32WINDOW ";
- if (bUseEProgream) args += L"/USEEPROGRAM ";
- std::wstring cmdline = L"\"" + std::wstring (path) + L"\" " + args;
+ std::wstring root = EnsureTrailingSlash (GetProgramRootDirectoryW ());
+ std::wstring exepath = root + L"AppInstallerConsole.exe";
+ std::wstring args = L"";
+ for (auto it : vecObjSwFiles)
{
- STARTUPINFOW si = {sizeof (STARTUPINFOW)};
- PROCESS_INFORMATION pi = {0};
- if (CreateProcessW (NULL, (LPWSTR)cmdline.c_str (), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
+ args += L" \"" + it + L"\"";
+ }
+ std::wstring cmdline = L"\"" + exepath + L"\"" + args;
+ {
+ STARTUPINFOW si = {sizeof (STARTUPINFOW)};
+ PROCESS_INFORMATION pi = {0};
+ if (CreateProcessW (NULL, (LPWSTR)cmdline.c_str (), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
+ {
+ WaitForSingleObject (pi.hProcess, INFINITE);
+ CloseHandle (pi.hProcess);
+ CloseHandle (pi.hThread);
+ }
+ }
+ }
+ else
+ {
+ for (auto it : vecObjSwFiles)
+ {
+ wchar_t path [MAX_PATH] = {0};
+ if (GetModuleFileNameW (NULL, path, MAX_PATH))
+ {
+ std::wstring args = L"";
+ args += L"\"" + it + L"\" ";
+ if (bUseNewFrame) args += L"/ENABLEFRAME ";
+ else args += L"/DISABLEFRAME ";
+ if (bSilent) args += L"/SILENT ";
+ if (bVerySilent) args += L"/VERYSILENT ";
+ if (bUseCmd) args += L"/NOGUI ";
+ if (bDisplayHelp) args += L"/? ";
+ if (bWin32Wnd) args += L"WIN32WINDOW ";
+ if (bUseEProgream) args += L"/USEEPROGRAM ";
+ std::wstring cmdline = L"\"" + std::wstring (path) + L"\" " + args;
{
- WaitForSingleObject (pi.hProcess, INFINITE);
- CloseHandle (pi.hProcess);
- CloseHandle (pi.hThread);
+ STARTUPINFOW si = {sizeof (STARTUPINFOW)};
+ PROCESS_INFORMATION pi = {0};
+ if (CreateProcessW (NULL, (LPWSTR)cmdline.c_str (), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
+ {
+ WaitForSingleObject (pi.hProcess, INFINITE);
+ CloseHandle (pi.hProcess);
+ CloseHandle (pi.hThread);
+ }
}
}
}
diff --git a/AppInstaller/resource.h b/AppInstaller/resource.h
index f174a76..d8bc2bc 100644
--- a/AppInstaller/resource.h
+++ b/AppInstaller/resource.h
@@ -1142,6 +1142,9 @@
#define APPLIST_WINTITLE 324
#define APPLIST_TITLE 325
#define APPLIST_BUTTON_CANCEL 326
+#define SHORTCUT_SETTINGS 327
+#define SHORTCUT_UNINSTALL 328
+#define SHORTCUT_UPDATE 329
#define CLHELP_1 330
#define CLHELP_2 331
#define CLHELP_3 332
@@ -1149,6 +1152,9 @@
#define CLHELP_5 334
#define CLHELP_6 335
#define CLHELP_7 336
+#define CLHELP_8 337
+#define CLHELP_9 338
+#define CLHELP_10 339
#define INITWIDTH 400
#define INITHEIGHT 401
#define LIMITWIDTH 402
diff --git a/AppInstallerConsole/AppInstaller.rc b/AppInstallerConsole/AppInstaller.rc
index 46fe03a..b006518 100644
--- a/AppInstallerConsole/AppInstaller.rc
+++ b/AppInstallerConsole/AppInstaller.rc
@@ -115,8 +115,8 @@ IDR_MANIFEST1 RT_MANIFEST "res/manifest.xml"
//
IDR_VERSION_ZH_CN VERSIONINFO
- FILEVERSION 1,0,1,7
- PRODUCTVERSION 1,0,1,7
+ FILEVERSION 1,0,1,9
+ PRODUCTVERSION 1,0,1,9
FILEFLAGSMASK 0x0L
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -133,9 +133,9 @@ BEGIN
BEGIN
VALUE "CompanyName", "Bruce Winter"
VALUE "FileDescription", "应用安装程序"
- VALUE "FileVersion", "1.0.1.7"
+ VALUE "FileVersion", "1.0.1.9"
VALUE "LegalCopyright", "\\xA9Bruce Winter. All rights reserved."
- VALUE "ProductVersion", "1.0.1.7"
+ VALUE "ProductVersion", "1.0.1.9"
END
END
BLOCK "VarFileInfo"
@@ -145,8 +145,8 @@ BEGIN
END
IDR_VERSION_EN_US VERSIONINFO
- FILEVERSION 1,0,1,7
- PRODUCTVERSION 1,0,1,7
+ FILEVERSION 1,0,1,9
+ PRODUCTVERSION 1,0,1,9
FILEFLAGSMASK 0x0L
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -163,9 +163,9 @@ BEGIN
BEGIN
VALUE "CompanyName", "Bruce Winter"
VALUE "FileDescription", "App Installer"
- VALUE "FileVersion", "1.0.1.7"
+ VALUE "FileVersion", "1.0.1.9"
VALUE "LegalCopyright", "\\xA9Bruce Winter. All rights reserved."
- VALUE "ProductVersion", "1.0.1.7"
+ VALUE "ProductVersion", "1.0.1.9"
END
END
BLOCK "VarFileInfo"
diff --git a/AppInstallerConsole/AppInstallerConsole.vcxproj b/AppInstallerConsole/AppInstallerConsole.vcxproj
index 8ce2e7d..1403b2a 100644
--- a/AppInstallerConsole/AppInstallerConsole.vcxproj
+++ b/AppInstallerConsole/AppInstallerConsole.vcxproj
@@ -166,6 +166,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AppInstallerConsole/AppInstallerConsole.vcxproj.filters b/AppInstallerConsole/AppInstallerConsole.vcxproj.filters
index 51da774..0a22e40 100644
--- a/AppInstallerConsole/AppInstallerConsole.vcxproj.filters
+++ b/AppInstallerConsole/AppInstallerConsole.vcxproj.filters
@@ -47,4 +47,114 @@
婧愭枃浠
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+ 璧勬簮鏂囦欢
+
+
+
+
+
\ No newline at end of file
diff --git a/AppInstallerConsole/main.cpp b/AppInstallerConsole/main.cpp
index 494efde..13660d7 100644
--- a/AppInstallerConsole/main.cpp
+++ b/AppInstallerConsole/main.cpp
@@ -516,6 +516,7 @@ void TaskInstallPackage ()
{
wcerr << "\rError: Install Failed. Message: Unavailable Package." << endl;
}
+
}
void TaskInstallPackages (size_t serial, size_t total)