// Copyright (c) 2001 Microsoft Corporation // // File: MediaInstallationUnit.cpp // // Synopsis: Defines a MediaInstallationUnit // This object has the knowledge for installing the // Streaming media service // // History: 02/06/2001 JeffJon Created #include "pch.h" #include "resource.h" #include "MediaInstallationUnit.h" // Finish page help static PCWSTR CYS_MEDIA_FINISH_PAGE_HELP = L"cys.chm::/media_server_role.htm"; static PCWSTR CYS_MEDIA_MILESTONE_HELP = L"cys.chm::/media_server_role.htm#mediasrvsummary"; static PCWSTR CYS_MEDIA_AFTER_FINISH_HELP = L"cys.chm::/media_server_role.htm#mediasrvcompletion"; MediaInstallationUnit::MediaInstallationUnit() : InstallationUnit( IDS_MEDIA_SERVER_TYPE, IDS_MEDIA_SERVER_DESCRIPTION, IDS_MEDIA_FINISH_TITLE, IDS_MEDIA_FINISH_UNINSTALL_TITLE, IDS_MEDIA_FINISH_MESSAGE, IDS_MEDIA_INSTALL_FAILED, IDS_MEDIA_UNINSTALL_MESSAGE, IDS_MEDIA_UNINSTALL_FAILED, IDS_MEDIA_UNINSTALL_WARNING, IDS_MEDIA_UNINSTALL_CHECKBOX, CYS_MEDIA_FINISH_PAGE_HELP, CYS_MEDIA_MILESTONE_HELP, CYS_MEDIA_AFTER_FINISH_HELP, MEDIASERVER_SERVER) { LOG_CTOR(MediaInstallationUnit); } MediaInstallationUnit::~MediaInstallationUnit() { LOG_DTOR(MediaInstallationUnit); } InstallationReturnType MediaInstallationUnit::InstallService(HANDLE logfileHandle, HWND hwnd) { LOG_FUNCTION(MediaInstallationUnit::InstallService); // Log heading CYS_APPEND_LOG(String::load(IDS_LOG_MEDIA_HEADING)); UpdateInstallationProgressText(hwnd, IDS_MEDIA_INSTALL_PROGRESS); String unattendFileText; String infFileText; unattendFileText += L"[Components]\n"; unattendFileText += L"WMS=ON\n"; unattendFileText += L"WMS_admin_mmc=ON\n"; // NTRAID#NTBUG9-461170-2001/08/28-sburns // unattendFileText += L"WMS_Admin_asp=ON\n"; unattendFileText += L"WMS_SERVER=ON\n"; InstallationReturnType result = INSTALL_SUCCESS; bool ocmResult = InstallServiceWithOcManager(infFileText, unattendFileText); if (ocmResult && IsServiceInstalled()) { LOG(L"WMS was installed successfully"); CYS_APPEND_LOG(String::load(IDS_LOG_SERVER_WMS_SUCCESS)); } else { LOG(L"WMS was failed to install"); CYS_APPEND_LOG(String::load(IDS_LOG_SERVER_WMS_FAILED)); result = INSTALL_FAILURE; } LOG_INSTALL_RETURN(result); return result; } UnInstallReturnType MediaInstallationUnit::UnInstallService(HANDLE logfileHandle, HWND hwnd) { LOG_FUNCTION(MediaInstallationUnit::UnInstallService); UnInstallReturnType result = UNINSTALL_SUCCESS; UpdateInstallationProgressText(hwnd, IDS_MEDIA_UNINSTALL_PROGRESS); // Log heading CYS_APPEND_LOG(String::load(IDS_LOG_UNINSTALL_MEDIA_HEADING)); String unattendFileText; String infFileText; unattendFileText += L"[Components]\n"; unattendFileText += L"WMS=OFF\n"; unattendFileText += L"WMS_admin_mmc=OFF\n"; unattendFileText += L"WMS_SERVER=OFF\n"; // NTRAID#NTBUG9-736557-2002/11/12-JeffJon // The uninstall of the Media Server could cause // an unexpected reboot if the Media Server MMC // is open and the user chooses not to close it // when the uninstall warns them. If the /w // switch is passed to sysocmgr.exe then it // will prompt the user before rebooting. String additionalArgs = L"/w"; bool ocmResult = InstallServiceWithOcManager( infFileText, unattendFileText, additionalArgs); if (ocmResult && !IsServiceInstalled()) { LOG(L"WMS was uninstalled successfully"); CYS_APPEND_LOG(String::load(IDS_LOG_UNINSTALL_SERVER_WMS_SUCCESS)); } else { LOG(L"WMS was failed to uninstall"); CYS_APPEND_LOG(String::load(IDS_LOG_UNINSTALL_SERVER_WMS_FAILED)); result = UNINSTALL_FAILURE; } LOG_UNINSTALL_RETURN(result); return result; } bool MediaInstallationUnit::GetMilestoneText(String& message) { LOG_FUNCTION(MediaInstallationUnit::GetMilestoneText); message = String::load(IDS_MEDIA_FINISH_TEXT); LOG_BOOL(true); return true; } bool MediaInstallationUnit::GetUninstallMilestoneText(String& message) { LOG_FUNCTION(MediaInstallationUnit::GetUninstallMilestoneText); message = String::load(IDS_MEDIA_UNINSTALL_TEXT); LOG_BOOL(true); return true; } String MediaInstallationUnit::GetServiceDescription() { LOG_FUNCTION(MediaInstallationUnit::GetServiceDescription); unsigned int resourceID = static_cast(-1); if (IsServiceInstalled()) { resourceID = IDS_MEDIA_SERVER_DESCRIPTION_INSTALLED; } else { resourceID = descriptionID; } ASSERT(resourceID != static_cast(-1)); return String::load(resourceID); } void MediaInstallationUnit::ServerRoleLinkSelected(int linkIndex, HWND /*hwnd*/) { LOG_FUNCTION2( MediaInstallationUnit::ServerRoleLinkSelected, String::format( L"linkIndex = %1!d!", linkIndex)); if (IsServiceInstalled()) { ASSERT(linkIndex == 0); LaunchMYS(); } else { ASSERT(linkIndex == 0); LOG(L"Showing configuration help"); ShowHelp(CYS_MEDIA_FINISH_PAGE_HELP); } } void MediaInstallationUnit::FinishLinkSelected(int linkIndex, HWND /*hwnd*/) { LOG_FUNCTION2( MediaInstallationUnit::FinishLinkSelected, String::format( L"linkIndex = %1!d!", linkIndex)); if (installing) { if (linkIndex == 0 && IsServiceInstalled()) { LOG("Showing after checklist"); ShowHelp(CYS_MEDIA_AFTER_FINISH_HELP); } else { LOG(L"Showing configuration help"); ShowHelp(CYS_MEDIA_FINISH_PAGE_HELP); } } else { } }