mirror of
https://github.com/modernw/AppInstallerForWin8.git
synced 2026-04-11 16:57:18 +10:00
Fixed HTML
This commit is contained in:
@@ -241,9 +241,12 @@ BEGIN
|
|||||||
APPLIST_WINTITLE "应用选择列表"
|
APPLIST_WINTITLE "应用选择列表"
|
||||||
APPLIST_TITLE "你要从哪个应用开始?"
|
APPLIST_TITLE "你要从哪个应用开始?"
|
||||||
APPLIST_BUTTON_CANCEL "取消"
|
APPLIST_BUTTON_CANCEL "取消"
|
||||||
|
SHORTCUT_SETTINGS "设置"
|
||||||
|
SHORTCUT_UNINSTALL "删除 应用安装程序"
|
||||||
|
SHORTCUT_UPDATE "更新 App Installer"
|
||||||
CLHELP_1 "命令行参数说明:\n\n"
|
CLHELP_1 "命令行参数说明:\n\n"
|
||||||
CLHELP_2 "\t/?, /Help\n\t显示帮助窗口 (命令行参数说明)\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_4 "\t/Win32Window\n\t不使用 WebUI,改用 Win32 窗口\n\n"
|
||||||
CLHELP_5 "\t/Silent\n\t一般情况下会自动安装,安装完成后在几秒后结束\n\n"
|
CLHELP_5 "\t/Silent\n\t一般情况下会自动安装,安装完成后在几秒后结束\n\n"
|
||||||
CLHELP_6 "\t/VerySilent\n\t静默安装,安装时不会显示任何信息,安装任务完成后自动结束\n\n"
|
CLHELP_6 "\t/VerySilent\n\t静默安装,安装时不会显示任何信息,安装任务完成后自动结束\n\n"
|
||||||
@@ -269,6 +272,9 @@ END
|
|||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
CLHELP_7 "\t/NoGUI\n\t使用 WSAppPkgIns 安装。安装时会弹出命令行窗口,安装完成后需手动关闭窗口\n\n"
|
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
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
@@ -409,9 +415,12 @@ BEGIN
|
|||||||
APPLIST_WINTITLE "App Select List"
|
APPLIST_WINTITLE "App Select List"
|
||||||
APPLIST_TITLE "Which app do you want to start with?"
|
APPLIST_TITLE "Which app do you want to start with?"
|
||||||
APPLIST_BUTTON_CANCEL "Cancel"
|
APPLIST_BUTTON_CANCEL "Cancel"
|
||||||
|
SHORTCUT_SETTINGS "Settings"
|
||||||
|
SHORTCUT_UNINSTALL "Delete App Installer"
|
||||||
|
SHORTCUT_UPDATE "Update App Installer"
|
||||||
CLHELP_1 "Usage:\n\n"
|
CLHELP_1 "Usage:\n\n"
|
||||||
CLHELP_2 "\t/?, /Help\n\tDisplay help window (command line parameter description).\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_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_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"
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
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_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
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
|
|||||||
@@ -142,6 +142,7 @@
|
|||||||
<AdditionalManifestFiles>app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
|
<AdditionalManifestFiles>app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
|
||||||
<InputResourceManifests>
|
<InputResourceManifests>
|
||||||
</InputResourceManifests>
|
</InputResourceManifests>
|
||||||
|
<EnableDpiAwareness>false</EnableDpiAwareness>
|
||||||
</Manifest>
|
</Manifest>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||||
|
|||||||
@@ -341,6 +341,7 @@ public ref class AppWindow: public Form
|
|||||||
public:
|
public:
|
||||||
AppWindow ()
|
AppWindow ()
|
||||||
{
|
{
|
||||||
|
this->Visible = false;
|
||||||
BOOL transitionsEnabled = FALSE;
|
BOOL transitionsEnabled = FALSE;
|
||||||
HRESULT hr = DwmSetWindowAttribute (
|
HRESULT hr = DwmSetWindowAttribute (
|
||||||
reinterpret_cast <HWND> (this->Handle.ToPointer ()),
|
reinterpret_cast <HWND> (this->Handle.ToPointer ()),
|
||||||
@@ -396,6 +397,7 @@ public ref class AppWindow: public Form
|
|||||||
});
|
});
|
||||||
Thread ^thread = gcnew Thread (gcnew ThreadStart (this, &AppWindow::InvokeRefreshAppItems));
|
Thread ^thread = gcnew Thread (gcnew ThreadStart (this, &AppWindow::InvokeRefreshAppItems));
|
||||||
thread->Start ();
|
thread->Start ();
|
||||||
|
this->Visible = true;
|
||||||
}
|
}
|
||||||
void SendAppData (std::vector<appmap> apps)
|
void SendAppData (std::vector<appmap> apps)
|
||||||
{
|
{
|
||||||
@@ -1169,14 +1171,25 @@ public ref class MainWnd: public Form
|
|||||||
if (m_silentMode)
|
if (m_silentMode)
|
||||||
{
|
{
|
||||||
// 在此版本中,在静默模式下打开无效的包后会自动关闭窗口结束程序。
|
// 在此版本中,在静默模式下打开无效的包后会自动关闭窗口结束程序。
|
||||||
|
while (!this->IsHandleCreated) {};
|
||||||
|
if (this->IsHandleCreated)
|
||||||
|
{
|
||||||
|
if (this->InvokeRequired)
|
||||||
|
{
|
||||||
|
this->Invoke (gcnew Action (this, &MainWnd::Close));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
this->Close ();
|
this->Close ();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
invokeSetPage (1);
|
invokeSetPage (1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->invokeSetDarkMode (IsAppInDarkMode ());
|
if (this->IsHandleCreated) this->invokeSetDarkMode (IsAppInDarkMode ());
|
||||||
EmptyWorkingSet ((HANDLE)-1);
|
EmptyWorkingSet ((HANDLE)-1);
|
||||||
}
|
}
|
||||||
void taskInstallPackage ()
|
void taskInstallPackage ()
|
||||||
@@ -1196,10 +1209,12 @@ public ref class MainWnd: public Form
|
|||||||
invokeSetProgressText (rcString (PAGE_2_INSTALL));
|
invokeSetProgressText (rcString (PAGE_2_INSTALL));
|
||||||
InstallStatus status = AddPackageFromPath (pkgPath.c_str (), &ProgressCallback);
|
InstallStatus status = AddPackageFromPath (pkgPath.c_str (), &ProgressCallback);
|
||||||
// MessageBeep (MB_OK);
|
// MessageBeep (MB_OK);
|
||||||
|
std::wstring title (L"");
|
||||||
if (status == InstallStatus::Success)
|
if (status == InstallStatus::Success)
|
||||||
{
|
{
|
||||||
invokeSetPage (4);
|
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));
|
Thread ^closeThread = gcnew Thread (gcnew ThreadStart (this, &MainWnd::taskCountCancel));
|
||||||
closeThread->IsBackground = true;
|
closeThread->IsBackground = true;
|
||||||
closeThread->Start ();
|
closeThread->Start ();
|
||||||
@@ -1207,6 +1222,7 @@ public ref class MainWnd: public Form
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
invokeSetPage (5);
|
invokeSetPage (5);
|
||||||
|
title = StrPrintFormatW (GetRCString_cpp (PAGE_5_TITLE).c_str (), m_pkgInfo.getPropertyName ().c_str ());
|
||||||
if (m_silentMode)
|
if (m_silentMode)
|
||||||
{
|
{
|
||||||
Thread ^closeThread = gcnew Thread (gcnew ThreadStart (this, &MainWnd::taskCountCancel));
|
Thread ^closeThread = gcnew Thread (gcnew ThreadStart (this, &MainWnd::taskCountCancel));
|
||||||
@@ -1215,7 +1231,6 @@ public ref class MainWnd: public Form
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->invokeClearTaskbarProgress ();
|
this->invokeClearTaskbarProgress ();
|
||||||
std::wstring title = StrPrintFormatW (GetRCString_cpp (PAGE_4_TITLE).c_str (), m_pkgInfo.getPropertyName ().c_str ());
|
|
||||||
std::wstring text (L"");
|
std::wstring text (L"");
|
||||||
if (GetLastErrorDetailTextLength ()) text += GetLastErrorDetailText ();
|
if (GetLastErrorDetailTextLength ()) text += GetLastErrorDetailText ();
|
||||||
bool res = CreateToastNotification (m_idenName, title.c_str (), text.c_str (), &ToastPressCallback, m_pkgInfo.getPropertyLogoIStream ());
|
bool res = CreateToastNotification (m_idenName, title.c_str (), text.c_str (), &ToastPressCallback, m_pkgInfo.getPropertyLogoIStream ());
|
||||||
@@ -1325,7 +1340,8 @@ std::vector <CMDARGUMENT> cmdargs =
|
|||||||
{{L"", L"/", L"-"}, {L"CREATESHORTCUT", L"SHORTCUT", L"CREATELNK"}, {}, 8},
|
{{L"", L"/", L"-"}, {L"CREATESHORTCUT", L"SHORTCUT", L"CREATELNK"}, {}, 8},
|
||||||
{{L"", L"/", L"-"}, {L"DELETESHORTCUT", L"DELSHORTCUT", L"DELETELNK"}, {}, 9},
|
{{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"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 的数,失败返回非正数
|
// 编号为大于 0 的数,失败返回非正数
|
||||||
@@ -1397,9 +1413,9 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
{
|
{
|
||||||
std::vector <std::wstring> vecObjSwFiles;
|
std::vector <std::wstring> vecObjSwFiles;
|
||||||
bool bWin32Wnd = false, bSilent = false, bVerySilent = false,
|
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,
|
bCreateLnk = false, bDestroyLnk = false, bDevTool = false,
|
||||||
bUseEProgream = false;
|
bUseEProgream = false, bConsole = false;
|
||||||
for (size_t cnt = 0; cnt < (size_t)argc; cnt ++)
|
for (size_t cnt = 0; cnt < (size_t)argc; cnt ++)
|
||||||
{
|
{
|
||||||
int res = GetCmdArgSerial (argv [cnt]);
|
int res = GetCmdArgSerial (argv [cnt]);
|
||||||
@@ -1410,7 +1426,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
case 1: bUseNewFrame = false; break;
|
case 1: bUseNewFrame = false; break;
|
||||||
case 2: bSilent = true; break;
|
case 2: bSilent = true; break;
|
||||||
case 3: bVerySilent = true; break;
|
case 3: bVerySilent = true; break;
|
||||||
case 4: bUseConsole = true; break;
|
case 4: bUseCmd = true; break;
|
||||||
case 5: bDisplayHelp = true; break;
|
case 5: bDisplayHelp = true; break;
|
||||||
case 6: bUseNewFrame = true; break;
|
case 6: bUseNewFrame = true; break;
|
||||||
case 7: bWin32Wnd = true; break;
|
case 7: bWin32Wnd = true; break;
|
||||||
@@ -1418,6 +1434,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
case 9: bDestroyLnk = true; break;
|
case 9: bDestroyLnk = true; break;
|
||||||
case 10: bDevTool = true; break;
|
case 10: bDevTool = true; break;
|
||||||
case 11: bUseEProgream = true; break;
|
case 11: bUseEProgream = true; break;
|
||||||
|
case 12: bConsole = true; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1433,9 +1450,14 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
MessageBox::Show (
|
MessageBox::Show (
|
||||||
rcString (CLHELP_1) +
|
rcString (CLHELP_1) +
|
||||||
rcString (CLHELP_2) +
|
rcString (CLHELP_2) +
|
||||||
|
rcString (CLHELP_3) +
|
||||||
rcString (CLHELP_4) +
|
rcString (CLHELP_4) +
|
||||||
rcString (CLHELP_5) +
|
rcString (CLHELP_5) +
|
||||||
rcString (CLHELP_7)
|
rcString (CLHELP_6) +
|
||||||
|
rcString (CLHELP_7) +
|
||||||
|
rcString (CLHELP_8) +
|
||||||
|
rcString (CLHELP_9) +
|
||||||
|
rcString (CLHELP_10)
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1459,6 +1481,12 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
_itow (WIN_TITLE, resIdStr, 10);
|
_itow (WIN_TITLE, resIdStr, 10);
|
||||||
desktop.writeUIntValue (L".ShellClassInfo", L"ConfirmFileOp", 0);
|
desktop.writeUIntValue (L".ShellClassInfo", L"ConfirmFileOp", 0);
|
||||||
desktop.writeStringValue (L"LocalizedFileNames", L"App Installer.lnk", std::wstring (L"@") + path + L",-" + resIdStr);
|
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);
|
DWORD attrs = GetFileAttributesW (desktopIni);
|
||||||
SetFileAttributesW (desktopIni, attrs | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);
|
SetFileAttributesW (desktopIni, attrs | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);
|
||||||
DWORD folderAttrs = GetFileAttributesW (expandedPath);
|
DWORD folderAttrs = GetFileAttributesW (expandedPath);
|
||||||
@@ -1501,7 +1529,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
else args += L"/DISABLEFRAME ";
|
else args += L"/DISABLEFRAME ";
|
||||||
if (bSilent) args += L"/SILENT ";
|
if (bSilent) args += L"/SILENT ";
|
||||||
if (bVerySilent) args += L"/VERYSILENT ";
|
if (bVerySilent) args += L"/VERYSILENT ";
|
||||||
if (bUseConsole) args += L"/NOGUI ";
|
if (bUseCmd) args += L"/NOGUI ";
|
||||||
if (bDisplayHelp) args += L"/? ";
|
if (bDisplayHelp) args += L"/? ";
|
||||||
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
|
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
|
||||||
{
|
{
|
||||||
@@ -1526,7 +1554,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
else args += L"/DISABLEFRAME ";
|
else args += L"/DISABLEFRAME ";
|
||||||
if (bSilent) args += L"/SILENT ";
|
if (bSilent) args += L"/SILENT ";
|
||||||
if (bVerySilent) args += L"/VERYSILENT ";
|
if (bVerySilent) args += L"/VERYSILENT ";
|
||||||
if (bUseConsole) args += L"/NOGUI ";
|
if (bUseCmd) args += L"/NOGUI ";
|
||||||
if (bDisplayHelp) args += L"/? ";
|
if (bDisplayHelp) args += L"/? ";
|
||||||
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
|
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 root = EnsureTrailingSlash (GetProgramRootDirectoryW ());
|
||||||
std::wstring exepath = root + L"WSAppPkgIns.exe";
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
else if (vecObjSwFiles.size () <= 0)
|
else if (vecObjSwFiles.size () <= 0)
|
||||||
@@ -1573,7 +1620,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
else args += L"/DISABLEFRAME ";
|
else args += L"/DISABLEFRAME ";
|
||||||
if (bSilent) args += L"/SILENT ";
|
if (bSilent) args += L"/SILENT ";
|
||||||
if (bVerySilent) args += L"/VERYSILENT ";
|
if (bVerySilent) args += L"/VERYSILENT ";
|
||||||
if (bUseConsole) args += L"/NOGUI ";
|
if (bUseCmd) args += L"/NOGUI ";
|
||||||
if (bDisplayHelp) args += L"/? ";
|
if (bDisplayHelp) args += L"/? ";
|
||||||
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
|
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
|
||||||
{
|
{
|
||||||
@@ -1597,7 +1644,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
else args += L"/DISABLEFRAME ";
|
else args += L"/DISABLEFRAME ";
|
||||||
if (bSilent) args += L"/SILENT ";
|
if (bSilent) args += L"/SILENT ";
|
||||||
if (bVerySilent) args += L"/VERYSILENT ";
|
if (bVerySilent) args += L"/VERYSILENT ";
|
||||||
if (bUseConsole) args += L"/NOGUI ";
|
if (bUseCmd) args += L"/NOGUI ";
|
||||||
if (bDisplayHelp) args += L"/? ";
|
if (bDisplayHelp) args += L"/? ";
|
||||||
if (bDevTool) args += L"/DEVTOOL ";
|
if (bDevTool) args += L"/DEVTOOL ";
|
||||||
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
|
std::wstring cmdline = L"\"" + exepath + L"\" " + args;
|
||||||
@@ -1613,9 +1660,33 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (bUseCmd || bConsole) return false;
|
||||||
else return true;
|
else return true;
|
||||||
}
|
}
|
||||||
else if (vecObjSwFiles.size () > 1) // 面对多个文件
|
else if (vecObjSwFiles.size () > 1) // 面对多个文件
|
||||||
|
{
|
||||||
|
if (bConsole)
|
||||||
|
{
|
||||||
|
std::wstring root = EnsureTrailingSlash (GetProgramRootDirectoryW ());
|
||||||
|
std::wstring exepath = root + L"AppInstallerConsole.exe";
|
||||||
|
std::wstring args = L"";
|
||||||
|
for (auto it : vecObjSwFiles)
|
||||||
|
{
|
||||||
|
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)
|
for (auto it : vecObjSwFiles)
|
||||||
{
|
{
|
||||||
@@ -1628,7 +1699,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
else args += L"/DISABLEFRAME ";
|
else args += L"/DISABLEFRAME ";
|
||||||
if (bSilent) args += L"/SILENT ";
|
if (bSilent) args += L"/SILENT ";
|
||||||
if (bVerySilent) args += L"/VERYSILENT ";
|
if (bVerySilent) args += L"/VERYSILENT ";
|
||||||
if (bUseConsole) args += L"/NOGUI ";
|
if (bUseCmd) args += L"/NOGUI ";
|
||||||
if (bDisplayHelp) args += L"/? ";
|
if (bDisplayHelp) args += L"/? ";
|
||||||
if (bWin32Wnd) args += L"WIN32WINDOW ";
|
if (bWin32Wnd) args += L"WIN32WINDOW ";
|
||||||
if (bUseEProgream) args += L"/USEEPROGRAM ";
|
if (bUseEProgream) args += L"/USEEPROGRAM ";
|
||||||
@@ -1645,6 +1716,7 @@ bool ReadCommand (int argc, LPWSTR *argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -1142,6 +1142,9 @@
|
|||||||
#define APPLIST_WINTITLE 324
|
#define APPLIST_WINTITLE 324
|
||||||
#define APPLIST_TITLE 325
|
#define APPLIST_TITLE 325
|
||||||
#define APPLIST_BUTTON_CANCEL 326
|
#define APPLIST_BUTTON_CANCEL 326
|
||||||
|
#define SHORTCUT_SETTINGS 327
|
||||||
|
#define SHORTCUT_UNINSTALL 328
|
||||||
|
#define SHORTCUT_UPDATE 329
|
||||||
#define CLHELP_1 330
|
#define CLHELP_1 330
|
||||||
#define CLHELP_2 331
|
#define CLHELP_2 331
|
||||||
#define CLHELP_3 332
|
#define CLHELP_3 332
|
||||||
@@ -1149,6 +1152,9 @@
|
|||||||
#define CLHELP_5 334
|
#define CLHELP_5 334
|
||||||
#define CLHELP_6 335
|
#define CLHELP_6 335
|
||||||
#define CLHELP_7 336
|
#define CLHELP_7 336
|
||||||
|
#define CLHELP_8 337
|
||||||
|
#define CLHELP_9 338
|
||||||
|
#define CLHELP_10 339
|
||||||
#define INITWIDTH 400
|
#define INITWIDTH 400
|
||||||
#define INITHEIGHT 401
|
#define INITHEIGHT 401
|
||||||
#define LIMITWIDTH 402
|
#define LIMITWIDTH 402
|
||||||
|
|||||||
@@ -115,8 +115,8 @@ IDR_MANIFEST1 RT_MANIFEST "res/manifest.xml"
|
|||||||
//
|
//
|
||||||
|
|
||||||
IDR_VERSION_ZH_CN VERSIONINFO
|
IDR_VERSION_ZH_CN VERSIONINFO
|
||||||
FILEVERSION 1,0,1,7
|
FILEVERSION 1,0,1,9
|
||||||
PRODUCTVERSION 1,0,1,7
|
PRODUCTVERSION 1,0,1,9
|
||||||
FILEFLAGSMASK 0x0L
|
FILEFLAGSMASK 0x0L
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@@ -133,9 +133,9 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Bruce Winter"
|
VALUE "CompanyName", "Bruce Winter"
|
||||||
VALUE "FileDescription", "应用安装程序"
|
VALUE "FileDescription", "应用安装程序"
|
||||||
VALUE "FileVersion", "1.0.1.7"
|
VALUE "FileVersion", "1.0.1.9"
|
||||||
VALUE "LegalCopyright", "\\xA9Bruce Winter. All rights reserved."
|
VALUE "LegalCopyright", "\\xA9Bruce Winter. All rights reserved."
|
||||||
VALUE "ProductVersion", "1.0.1.7"
|
VALUE "ProductVersion", "1.0.1.9"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
@@ -145,8 +145,8 @@ BEGIN
|
|||||||
END
|
END
|
||||||
|
|
||||||
IDR_VERSION_EN_US VERSIONINFO
|
IDR_VERSION_EN_US VERSIONINFO
|
||||||
FILEVERSION 1,0,1,7
|
FILEVERSION 1,0,1,9
|
||||||
PRODUCTVERSION 1,0,1,7
|
PRODUCTVERSION 1,0,1,9
|
||||||
FILEFLAGSMASK 0x0L
|
FILEFLAGSMASK 0x0L
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@@ -163,9 +163,9 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Bruce Winter"
|
VALUE "CompanyName", "Bruce Winter"
|
||||||
VALUE "FileDescription", "App Installer"
|
VALUE "FileDescription", "App Installer"
|
||||||
VALUE "FileVersion", "1.0.1.7"
|
VALUE "FileVersion", "1.0.1.9"
|
||||||
VALUE "LegalCopyright", "\\xA9Bruce Winter. All rights reserved."
|
VALUE "LegalCopyright", "\\xA9Bruce Winter. All rights reserved."
|
||||||
VALUE "ProductVersion", "1.0.1.7"
|
VALUE "ProductVersion", "1.0.1.9"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|||||||
@@ -166,6 +166,46 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="main.cpp" />
|
<ClCompile Include="main.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Image Include="res\Button\Large\blank.png" />
|
||||||
|
<Image Include="res\Button\Large\blank_light.png" />
|
||||||
|
<Image Include="res\Button\Large\blank_press.png" />
|
||||||
|
<Image Include="res\Button\Large\cancel_window_light.png" />
|
||||||
|
<Image Include="res\Button\Large\cancel_window_normal.png" />
|
||||||
|
<Image Include="res\Button\Large\cancel_window_press.png" />
|
||||||
|
<Image Include="res\Button\Large\max_light.png" />
|
||||||
|
<Image Include="res\Button\Large\max_normal.png" />
|
||||||
|
<Image Include="res\Button\Large\max_press.png" />
|
||||||
|
<Image Include="res\Button\Large\min_light.png" />
|
||||||
|
<Image Include="res\Button\Large\min_normal.png" />
|
||||||
|
<Image Include="res\Button\Large\min_press.png" />
|
||||||
|
<Image Include="res\Button\Large\restore_light.png" />
|
||||||
|
<Image Include="res\Button\Large\restore_normal.png" />
|
||||||
|
<Image Include="res\Button\Large\restore_press.png" />
|
||||||
|
<Image Include="res\Button\Normal\blank.png" />
|
||||||
|
<Image Include="res\Button\Normal\blank_light.png" />
|
||||||
|
<Image Include="res\Button\Normal\blank_press.png" />
|
||||||
|
<Image Include="res\Button\Normal\cancel_back.png" />
|
||||||
|
<Image Include="res\Button\Normal\cancel_light.png" />
|
||||||
|
<Image Include="res\Button\Normal\cancel_press.png" />
|
||||||
|
<Image Include="res\Button\Normal\max_back.png" />
|
||||||
|
<Image Include="res\Button\Normal\max_light.png" />
|
||||||
|
<Image Include="res\Button\Normal\max_press.png" />
|
||||||
|
<Image Include="res\Button\Normal\min_back.png" />
|
||||||
|
<Image Include="res\Button\Normal\min_light.png" />
|
||||||
|
<Image Include="res\Button\Normal\min_press.png" />
|
||||||
|
<Image Include="res\Button\Normal\restore_back.png" />
|
||||||
|
<Image Include="res\Button\Normal\restore_light.png" />
|
||||||
|
<Image Include="res\Button\Normal\restore_press.png" />
|
||||||
|
<Image Include="res\Icons\FileIcon.ico" />
|
||||||
|
<Image Include="res\Icons\IconColor.ico" />
|
||||||
|
<Image Include="res\Icons\IconTitleBar.ico" />
|
||||||
|
<Image Include="res\Icons\IconWhite.ico" />
|
||||||
|
<Image Include="res\Icons\Main.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Xml Include="res\manifest.xml" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
|||||||
@@ -47,4 +47,114 @@
|
|||||||
<Filter>源文件</Filter>
|
<Filter>源文件</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Image Include="res\Icons\Main.ico">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Icons\FileIcon.ico">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Icons\IconWhite.ico">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Icons\IconColor.ico">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\blank.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\blank_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\blank_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\min_back.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\min_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\min_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\max_back.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\max_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\max_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\restore_back.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\restore_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\restore_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\cancel_back.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\cancel_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Normal\cancel_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\blank.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\blank_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\blank_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\min_normal.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\min_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\min_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\max_normal.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\max_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\max_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\restore_normal.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\restore_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\restore_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\cancel_window_normal.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\cancel_window_light.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Button\Large\cancel_window_press.png">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
<Image Include="res\Icons\IconTitleBar.ico">
|
||||||
|
<Filter>资源文件</Filter>
|
||||||
|
</Image>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Xml Include="res\manifest.xml" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -516,6 +516,7 @@ void TaskInstallPackage ()
|
|||||||
{
|
{
|
||||||
wcerr << "\rError: Install Failed. Message: Unavailable Package." << endl;
|
wcerr << "\rError: Install Failed. Message: Unavailable Package." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskInstallPackages (size_t serial, size_t total)
|
void TaskInstallPackages (size_t serial, size_t total)
|
||||||
|
|||||||
Reference in New Issue
Block a user