Skip to content
Snippets Groups Projects
Commit 3e95634a authored by Mark Palange (Mani)'s avatar Mark Palange (Mani)
Browse files

merge

parents 35fc90e8 f47c42bb
No related branches found
No related tags found
No related merge requests found
......@@ -66,6 +66,7 @@ const char *gUpdateURL;
const char *gProductName;
const char *gBundleID;
const char *gDmgFile;
const char *gMarkerPath;
void *updatethreadproc(void*);
......@@ -342,6 +343,10 @@ int parse_args(int argc, char **argv)
{
gDmgFile = argv[j];
}
else if ((!strcmp(argv[j], "-marker")) && (++j < argc))
{
gMarkerPath = argv[j];;
}
}
return 0;
......@@ -370,6 +375,7 @@ int main(int argc, char **argv)
gProductName = NULL;
gBundleID = NULL;
gDmgFile = NULL;
gMarkerPath = NULL;
parse_args(argc, argv);
if ((gUpdateURL == NULL) && (gDmgFile == NULL))
{
......@@ -497,11 +503,18 @@ int main(int argc, char **argv)
NULL,
&retval_mac);
}
if(gMarkerPath != 0)
{
// Create a install fail marker that can be used by the viewer to
// detect install problems.
std::ofstream stream(gMarkerPath);
if(stream) stream << -1;
}
exit(-1);
} else {
exit(0);
}
// Don't dispose of things, just exit. This keeps the update thread from potentially getting hosed.
exit(0);
if(gWindow != NULL)
{
......@@ -713,6 +726,7 @@ static OSErr findAppBundleOnDiskImage(FSRef *parent, FSRef *app)
// This is the one. Return it.
*app = ref;
found = true;
break;
} else {
llinfos << name << " is not the bundle we are looking for; move along" << llendl;
}
......@@ -721,9 +735,13 @@ static OSErr findAppBundleOnDiskImage(FSRef *parent, FSRef *app)
}
}
}
while(!err && !found);
while(!err);
llinfos << "closing the iterator" << llendl;
FSCloseIterator(iterator);
llinfos << "closed" << llendl;
}
if(!err && !found)
......@@ -1084,12 +1102,19 @@ void *updatethreadproc(void*)
throw 0;
}
sendProgress(0, 0, CFSTR("Searching for the app bundle..."));
err = findAppBundleOnDiskImage(&mountRef, &sourceRef);
if(err != noErr)
{
llinfos << "Couldn't find application bundle on mounted disk image." << llendl;
throw 0;
}
else
{
llinfos << "found the bundle." << llendl;
}
sendProgress(0, 0, CFSTR("Preparing to copy files..."));
FSRef asideRef;
char aside[MAX_PATH]; /* Flawfinder: ignore */
......
......@@ -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;
}
......@@ -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
......@@ -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
{
......
#! /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
start /WAIT %1
\ No newline at end of file
start /WAIT %1 /SKIP_DIALOGS
IF ERRORLEVEL 1 ECHO ERRORLEVEL > %2
......@@ -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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment