瀏覽代碼

安装NetFramework - 安装NET后 ,win8系统下需要重启系统

chenrongqian@kdanmobile.com 2 年之前
父節點
當前提交
70cc834b3e

+ 3 - 5
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/CCmd.cpp

@@ -8,8 +8,8 @@
 //【APPDIR】: 安装路径
 // 【qb】:cmd后台静默执行
 //【qn】:无安装界面运行,静默安装指令参数
-//【norestart】:安装后不启动App,默认为不启动
-
+//【norestart】:安装后不启动App,默认为不启动(目前已经去掉该参数)
+//vba不支持带空格路径安装,即便用路径标识符也不行,例如%cd%
 #pragma endregion
 
 CCmd::CCmd()
@@ -72,6 +72,7 @@ BOOL CCmd::InstallNetcmd()
 		cmd = L"/k " + systemLetter + L": & cd " + netframe + L" & aspnet_regiis.exe -i /qb /qn";
 		std::map<wstring, wstring> map{ {L"InstallNetFramwork", cmd}, { L"WindowsVersion", L"Win8,10.."}};
 		LogIni::GetLogToIniMaps(map);
+		m_IsWin8InstallNet = true;
 	}
 	else
 	{
@@ -80,9 +81,6 @@ BOOL CCmd::InstallNetcmd()
 		LogIni::GetLogToIniMaps(map);
 	}
 	
-	
-	
-
 	TCHAR* tc = (TCHAR*)(&cmd[0]);
 	return Executecmd(tc);
 }

+ 4 - 1
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/CCmd.h

@@ -11,9 +11,12 @@
 
 class CCmd
 {
-public:
+private:
 	STARTUPINFO si;
 	PROCESS_INFORMATION pi;
+public:
+	bool m_IsWin8InstallNet = false;
+public:
 	 CCmd();
 	//¾²Ä¬°²×°Ö¸Áî
 	 BOOL Installcmd();

+ 1 - 0
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/CFrameWnd.cpp

@@ -125,6 +125,7 @@ void CFrameWnd::SelectLayout(LayoutType LayoutType)
 	switch (LayoutType)
 	{
 	case LayoutType::Home:
+		IsNeedReStartSystem = false;
 		m_InstallationPage->LayoutHome->SetVisible(true);
 		m_InstallationPage->BtnClose->SetVisible(true);
 		break;

+ 2 - 1
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/CFrameWnd.h

@@ -39,7 +39,7 @@ private:
 	RECT start_rect_;
 	
 	CMainPage m_MainPage;
-	
+	bool IsNeedReStartSystem = false;//是否需要重启系统(win8 Net安装之后需要重启)
 public:
 	//初始化
 	 explicit CFrameWnd(LPCTSTR pszXMLPath);
@@ -126,6 +126,7 @@ private:
 private:
 	InstalledPage* m_InstalledPage;
 	void InitInstalledControls();
+	void ReStartSystem();
 	void OpenApp_Click();
 	static void Thread_OpenApp(ThreadData threadData);
 	//消息事件

+ 3 - 5
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/CFrameWndInit.cpp

@@ -237,11 +237,6 @@ void CFrameWnd::CustomInstallWndSize(bool isExpend)
 {
 	try
 	{
-
-	}
-	catch (exception ex)
-	{
-
 		if (isExpend)
 		{
 			std::wstring textcontent = CLanguage::GetText(TextType::Btn_CutomInstall);
@@ -261,6 +256,9 @@ void CFrameWnd::CustomInstallWndSize(bool isExpend)
 			SetWindowPos(m_hWnd, NULL, 0, 0, XML_WndWidth * dpi, XML_WndHeight * dpi, SWP_NOMOVE);
 			ischeckCustom = false;
 		}
+	}
+	catch (exception ex)
+	{
 
 	}
 	

+ 6 - 0
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/CLanguage.cpp

@@ -159,6 +159,12 @@ std::wstring CLanguage::GetContent(TextType textType)
     case TextType::MSG_BtnUseDefaultPath:
         content = LoadLanguage(L"Use Default Path", L"使用默认安装路径", L"使用默認安裝路徑");
         break;
+    case TextType::MSG_InstalledNetReStartSystem:
+        content = LoadLanguage(L"Because the NetFramework was installed together with the software, you need to restart system to run PDF Reader Pro.", L"因安装软件的同时,也安装了NetFramework,当前设备需要重启系统,才能运行PDF Reader Pro", L"因安裝軟件的同時,也安裝了NetFramework,當前設備需要重啓系統,才能運行PDF Reader Pro.");
+        break;
+    case TextType::MSG_BtnRestartSystem:
+        content = LoadLanguage(L"Restart", L"重新启动", L"重新啓動");
+        break;
     default:
         break;
     }

+ 4 - 1
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/CLanguage.h

@@ -68,7 +68,10 @@ enum class TextType
 
 	MSG_ContentInstallFailed,
 	MSG_BtnBackHomePage,
-	MSG_BtnUseDefaultPath
+	MSG_BtnUseDefaultPath,
+
+	MSG_InstalledNetReStartSystem,
+	MSG_BtnRestartSystem
 };
 
 #pragma endregion

+ 6 - 0
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/MessageBoxWnd.cpp

@@ -59,6 +59,12 @@ int MessageBoxWnd::Show(HWND m_hWnd,MessageContentType Content)
 		result = MessageBox(m_hWnd, L"代理服务器没有响应,请检查代理设置。", L"", MB_ICONWARNING);
 		break;
 
+	case MessageContentType::ReStartSystem:
+		result = CMsgWnd::MessageBox(
+			m_hWnd, _T(""), CLanguage::GetText(TextType::MSG_InstalledNetReStartSystem).c_str(),
+			CLanguage::GetText(TextType::MSG_BtnRestartSystem).c_str()
+		);
+		break;
 
 	default:
 		break;

+ 2 - 1
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/MessageBoxWnd.h

@@ -13,7 +13,8 @@ enum class MessageContentType
 	HighVertion,
 	LowVersion,
 	SameVersion,
-	ProxyNetError
+	ProxyNetError,//´úÀí
+	ReStartSystem//ÖØÆôϵͳ
 };
 
 class MessageBoxWnd

+ 17 - 0
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/WndInstalled.cpp

@@ -31,6 +31,12 @@ LRESULT CFrameWnd::InstalledMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOO
 
  void CFrameWnd::OpenApp_Click()
 {
+	 if (IsNeedReStartSystem)
+	 {
+		 ReStartSystem();
+		 return;
+	 }
+	 
 	 wstring s = PathCore::smPath_Install + L"\\" + Product::smName_Application;
 	 auto histance = ShellExecute(NULL, L"open", s.c_str(), NULL, NULL, SW_SHOWNORMAL);
 	 assert(histance > (HINSTANCE)HINSTANCE_ERROR);
@@ -42,3 +48,14 @@ void CFrameWnd::Thread_OpenApp( ThreadData threadData)
 {
 
 }
+
+void CFrameWnd::ReStartSystem()
+{
+	if (IsNeedReStartSystem)
+	{
+		if (MSGID_OK == MessageBoxWnd::Show(m_hWnd, MessageContentType::ReStartSystem))
+		{
+			system("shutdown -i -r");
+		}
+	}
+}

+ 10 - 0
PDFReaderPro_Installer/PDFReaderPro_Insrtaller/WndInstalling.cpp

@@ -113,10 +113,12 @@ void CFrameWnd::Thread_Installing(ThreadData threadData)
 	}
 	
 	CCmd cmd;
+	bool IsNeedInstallNet = false;
 	//3.若缺少NET Framework框架,则优先安装
 	if (threadData.pFrame->m_State.m_NetFrameworkType == InstallNetFrameworkType::V40_46)
 	{
 		cmd.InstallNetcmd();
+		IsNeedInstallNet = true;
 	}
 
 	//4.静默安装产品
@@ -173,8 +175,16 @@ void CFrameWnd::Thread_Installing(ThreadData threadData)
 
 	DownloadProgress::Currentpercentage = 0;
 	threadData.pFrame->KillAllTimer();
+
+	if (cmd.m_IsWin8InstallNet && IsNeedInstallNet)
+	{
+		threadData.pFrame->IsNeedReStartSystem = true;
+		threadData.pFrame->ReStartSystem();
+
+	}
 }
 
+
 void CFrameWnd::SetTimerSilen()
 {
 	srand(time(0));