Skip to content

Commit bbbe5e4

Browse files
committed
Finalized AppUpdater
1 parent 90bc3b6 commit bbbe5e4

File tree

3 files changed

+55
-31
lines changed

3 files changed

+55
-31
lines changed

SmartStoreNET.Tasks.Targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,8 @@
148148
<Delete Files="$(StageFolder)\Administration\packages.config; $(StageFolder)\packages.config"/>
149149

150150
<!-- copy \Media\uploaded\ folder to stage -->
151-
<RemoveDir Directories="$(StageFolder)\Media\uploaded\" />
152-
<Copy SourceFiles="@(UploadedImages)" DestinationFolder="$(StageFolder)\Media\uploaded\%(RecursiveDir)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" />
151+
<!--<RemoveDir Directories="$(StageFolder)\Media\uploaded\" />
152+
<Copy SourceFiles="@(UploadedImages)" DestinationFolder="$(StageFolder)\Media\uploaded\%(RecursiveDir)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" />-->
153153

154154
<!-- copy SQL Compact native binaries-->
155155
<Copy SourceFiles="@(SqlCe-Native-Binaries-x86)" DestinationFolder="$(StageFolder)\bin\x86\%(RecursiveDir)" />

src/Libraries/SmartStore.Core/Packaging/NuGet/NugetLogger.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public void Log(MessageLevel level, string message, params object[] args)
2020
{
2121
case MessageLevel.Debug:
2222
//_logger.Debug(String.Format(message, args));
23-
//break;
23+
break;
2424
case MessageLevel.Error:
2525
_logger.Error(String.Format(message, args));
2626
break;

src/Libraries/SmartStore.Core/Packaging/Updater/AppUpdater.cs

Lines changed: 52 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,46 @@ public bool TryUpdate()
3131

3232
using (_rwLock.GetUpgradeableReadLock())
3333
{
34-
var package = FindPackage();
35-
36-
if (package == null)
37-
return false;
38-
39-
if (!ValidatePackage(package))
40-
return false;
41-
42-
if (!CheckEnvironment())
43-
return false;
44-
45-
using (_rwLock.GetWriteLock())
34+
try
4635
{
47-
var info = ExecuteUpdate(package);
48-
49-
FinalizeUpdate();
50-
51-
return true;
36+
string packagePath = null;
37+
var package = FindPackage(out packagePath);
38+
39+
if (package == null)
40+
return false;
41+
42+
if (!ValidatePackage(package))
43+
return false;
44+
45+
if (!CheckEnvironment())
46+
return false;
47+
48+
using (_rwLock.GetWriteLock())
49+
{
50+
Backup();
51+
52+
var info = ExecuteUpdate(package);
53+
54+
if (info != null)
55+
{
56+
var newPath = packagePath + ".applied";
57+
if (File.Exists(newPath))
58+
{
59+
File.Delete(packagePath);
60+
}
61+
else
62+
{
63+
File.Move(packagePath, newPath);
64+
}
65+
}
66+
67+
return info != null;
68+
}
69+
}
70+
catch (Exception ex)
71+
{
72+
_logger.Error("An error occured while updating the application: {0}".FormatCurrent(ex.Message), ex);
73+
return false;
5274
}
5375
}
5476
}
@@ -59,8 +81,9 @@ private TraceLogger CreateLogger(IPackage package)
5981
return new TraceLogger(logFile);
6082
}
6183

62-
private IPackage FindPackage()
84+
private IPackage FindPackage(out string path)
6385
{
86+
path = null;
6487
var dir = CommonHelper.MapPath(UpdatePackagePath, false);
6588
var files = Directory.GetFiles(dir, "SmartStore.*.nupkg", SearchOption.TopDirectoryOnly);
6689

@@ -72,6 +95,7 @@ private IPackage FindPackage()
7295

7396
try
7497
{
98+
path = files[0];
7599
package = new ZipPackage(files[0]);
76100
_logger = CreateLogger(package);
77101
_logger.Information("Found update package '{0}'".FormatInvariant(package.GetFullName()));
@@ -101,19 +125,19 @@ private void Backup()
101125
{
102126
var source = new DirectoryInfo(CommonHelper.MapPath("~/"));
103127

104-
var tempPath = "~/App_Data/_Backup/App/SmartStore";
128+
var tempPath = CommonHelper.MapPath("~/App_Data/_Backup/App/SmartStore");
105129
string localTempPath = null;
106130
for (int i = 0; i < 50; i++)
107131
{
108-
localTempPath = CommonHelper.MapPath(tempPath) + (i == 0 ? "" : "." + i.ToString());
132+
localTempPath = tempPath + (i == 0 ? "" : "." + i.ToString());
109133
if (!Directory.Exists(localTempPath))
110134
{
111135
Directory.CreateDirectory(localTempPath);
112136
break;
113137
}
114138
localTempPath = null;
115139
}
116-
140+
117141
if (localTempPath == null)
118142
{
119143
var exception = new SmartException("Too many backups in '{0}'.".FormatInvariant(tempPath));
@@ -124,12 +148,13 @@ private void Backup()
124148
var backupFolder = new DirectoryInfo(localTempPath);
125149
var folderUpdater = new FolderUpdater(_logger);
126150
folderUpdater.Backup(source, backupFolder, "App_Data", "Media");
151+
152+
_logger.Information("Backup successfully created in folder '{0}'.".FormatInvariant(localTempPath));
127153
}
128154

129155
private PackageInfo ExecuteUpdate(IPackage package)
130156
{
131-
//var appPath = CommonHelper.MapPath("~/");
132-
var appPath = "D:\\_temp\\AppUpdater\\Restore";
157+
var appPath = CommonHelper.MapPath("~/");
133158

134159
var logger = new NugetLogger(_logger);
135160

@@ -147,20 +172,19 @@ private PackageInfo ExecuteUpdate(IPackage package)
147172
// Perform the update
148173
projectManager.AddPackageReference(package, true, false);
149174

150-
return new PackageInfo
175+
var info = new PackageInfo
151176
{
152177
Id = package.Id,
153178
Name = package.Title ?? package.Id,
154179
Version = package.Version.ToString(),
155180
Type = "App",
156181
Path = appPath
157182
};
158-
}
159183

160-
private void FinalizeUpdate()
161-
{
162-
}
184+
_logger.Information("Update '{0}' successfully executed.".FormatInvariant(info.Name));
163185

186+
return info;
187+
}
164188

165189
protected override void OnDispose(bool disposing)
166190
{

0 commit comments

Comments
 (0)