diff options
| author | Andrew A. de Laix <alain@lindenlab.com> | 2010-11-15 09:38:20 -0800 | 
|---|---|---|
| committer | Andrew A. de Laix <alain@lindenlab.com> | 2010-11-15 09:38:20 -0800 | 
| commit | ec7d36f6cfbed53a30d918415dfa3e429a645ce1 (patch) | |
| tree | 3c4c30b2bb8af702c6e0d32d433d67f980637802 /indra/viewer_components | |
| parent | 1368a94f014884588b343802eef5fd2c7888390a (diff) | |
added mechanism for install scripts to indicate a failed install and for update service to note the failure; modified mac installer to write marker on error.
Diffstat (limited to 'indra/viewer_components')
| -rw-r--r-- | indra/viewer_components/updater/llupdateinstaller.cpp | 11 | ||||
| -rw-r--r-- | indra/viewer_components/updater/llupdateinstaller.h | 7 | ||||
| -rw-r--r-- | indra/viewer_components/updater/llupdaterservice.cpp | 14 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/viewer_components/updater/scripts/darwin/update_install | 8 | ||||
| -rw-r--r-- | indra/viewer_components/updater/tests/llupdaterservice_test.cpp | 6 | 
5 files changed, 44 insertions, 2 deletions
| diff --git a/indra/viewer_components/updater/llupdateinstaller.cpp b/indra/viewer_components/updater/llupdateinstaller.cpp index 10d5edc6a0..6e69bcf28b 100644 --- a/indra/viewer_components/updater/llupdateinstaller.cpp +++ b/indra/viewer_components/updater/llupdateinstaller.cpp @@ -72,8 +72,19 @@ int ll_install_update(std::string const & script, std::string const & updatePath  	LLProcessLauncher launcher;  	launcher.setExecutable(actualScriptPath);  	launcher.addArgument(updatePath); +	launcher.addArgument(ll_install_failed_marker_path().c_str());  	int result = launcher.launch();  	launcher.orphan();  	return result;  } + + +std::string const & ll_install_failed_marker_path(void) +{ +	static std::string path; +	if(path.empty()) { +		path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "SecondLifeInstallFailed.marker"); +	} +	return path; +} diff --git a/indra/viewer_components/updater/llupdateinstaller.h b/indra/viewer_components/updater/llupdateinstaller.h index 310bfe4348..6ce08ce6fa 100644 --- a/indra/viewer_components/updater/llupdateinstaller.h +++ b/indra/viewer_components/updater/llupdateinstaller.h @@ -47,4 +47,11 @@ int ll_install_update(  					   LLInstallScriptMode mode=LL_COPY_INSTALL_SCRIPT_TO_TEMP); // Run in place or copy to temp? +// +// Returns the path which points to the failed install marker file, should it +// exist. +// +std::string const & ll_install_failed_marker_path(void); + +  #endif diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp index 6cc872f2ca..a1ad3e3381 100644 --- a/indra/viewer_components/updater/llupdaterservice.cpp +++ b/indra/viewer_components/updater/llupdaterservice.cpp @@ -378,7 +378,19 @@ bool LLUpdaterServiceImpl::onMainLoop(LLSD const & event)  	{  		mTimer.stop();  		LLEventPumps::instance().obtain("mainloop").stopListening(sListenerName); -		mUpdateChecker.check(mProtocolVersion, mUrl, mPath, mChannel, mVersion); + +		// Check for failed install. +		if(LLFile::isfile(ll_install_failed_marker_path())) +		{ +			// TODO: notify the user. +			llinfos << "found marker " << ll_install_failed_marker_path() << llendl; +			llinfos << "last install attempt failed" << llendl; +			LLFile::remove(ll_install_failed_marker_path()); +		} +		else +		{ +			mUpdateChecker.check(mProtocolVersion, mUrl, mPath, mChannel, mVersion); +		}  	}   	else   	{ diff --git a/indra/viewer_components/updater/scripts/darwin/update_install b/indra/viewer_components/updater/scripts/darwin/update_install index c061d2818f..b174b3570a 100644..100755 --- a/indra/viewer_components/updater/scripts/darwin/update_install +++ b/indra/viewer_components/updater/scripts/darwin/update_install @@ -1,3 +1,9 @@  #! /bin/bash -open ../Resources/mac-updater.app --args -dmg "$1" -name "Second Life Viewer 2" +# +# The first argument contains the path to the installer app.  The second a path +# to a marker file which should be created if the installer fails.q +# + +open ../Resources/mac-updater.app --args -dmg "$1" -name "Second Life Viewer 2" -marker "$2" +exit 0 diff --git a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp index 9b56a04ff6..25fd1b034d 100644 --- a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp +++ b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp @@ -106,6 +106,12 @@ int ll_install_update(std::string const &, std::string const &, LLInstallScriptM  	return 0;
  }
 +std::string const & ll_install_failed_marker_path()
 +{
 +	static std::string wubba;
 +	return wubba;
 +}
 +
  /*
  #pragma warning(disable: 4273)
  llus_mock_llifstream::llus_mock_llifstream(const std::string& _Filename,
 | 
