I think you made some good points Rodrigo. Here is my attempt at a routine along that line.
InstallMathematicaApplication::usage =
"InstallMathematicaApplication[\"URL\"] will download and install \
the application zip file located at the URL address into your \
$UserBaseDirectory/Applications folder. The installation path to the \
first item installed, which will usually be the application folder, \
is printed.";
SyntaxInformation[
InstallMathematicaApplication] = {"ArgumentsPattern" -> {_}};
InstallMathematicaApplication[URLLink_String] :=
Module[{modifiedURL, tempFile, application},
modifiedURL = StringReplace[URLLink, "?dl=0" -> "?dl=1"];
tempFile = URLSave[modifiedURL,
FileNameJoin[{$UserBaseDirectory, "Applications",
"ApplicationDownload.zip"}]];
application =
ExtractArchive[tempFile,
FileNameJoin[{$UserBaseDirectory, "Applications"}]][[1]];
DeleteFile[tempFile];
Print["Application installed at: ", application]
]
It is specialized to installing zip files into the `$UserBaseDirectory/Applications folder. But there is one problem with the ExtractArchive command. It will fail if any existing files exist. So one can't use it to update. As far as I'm concerned WRI should fix that, perhaps using an option. Right now I'm supplying my packages from Dropbox. If one creates a user link for a zip file, Dropbox ends it with ?dl=0. ExtractArchive will not work on that. So I change it to ?dl=1 in the routine.
Here is a test case you can try. It contains a rather worthless stub application I abandoned. So you could delete it after the test.
InstallMathematicaApplication["https://www.dropbox.com/s/\
kin3ajodnys92n8/ConicSections.zip?dl=0"]
`