@@ -186,6 +186,7 @@ private bool ClearLogFolder()
186
186
{
187
187
try
188
188
{
189
+ // Make sure directory clean
189
190
dir . Delete ( true ) ;
190
191
}
191
192
catch ( Exception e )
@@ -214,6 +215,7 @@ private bool ClearCacheFolder()
214
215
{
215
216
var success = true ;
216
217
var cacheDirectory = GetCacheDir ( ) ;
218
+ var pluginCacheDirectory = GetPluginCacheDir ( ) ;
217
219
var cacheFiles = GetCacheFiles ( ) ;
218
220
219
221
cacheFiles . ForEach ( f =>
@@ -229,12 +231,31 @@ private bool ClearCacheFolder()
229
231
}
230
232
} ) ;
231
233
234
+ // Firstly, delete plugin cache directories
235
+ pluginCacheDirectory . EnumerateDirectories ( "*" , SearchOption . TopDirectoryOnly )
236
+ . ToList ( )
237
+ . ForEach ( dir =>
238
+ {
239
+ try
240
+ {
241
+ // Plugin may create directories in its cache directory
242
+ dir . Delete ( true ) ;
243
+ }
244
+ catch ( Exception e )
245
+ {
246
+ App . API . LogException ( ClassName , $ "Failed to delete cache directory: { dir . Name } ", e ) ;
247
+ success = false ;
248
+ }
249
+ } ) ;
250
+
251
+ // Then, delete plugin directory
232
252
cacheDirectory . EnumerateDirectories ( "*" , SearchOption . TopDirectoryOnly )
233
253
. ToList ( )
234
254
. ForEach ( dir =>
235
255
{
236
256
try
237
257
{
258
+ // Make sure directory clean
238
259
dir . Delete ( true ) ;
239
260
}
240
261
catch ( Exception e )
@@ -254,6 +275,11 @@ private static DirectoryInfo GetCacheDir()
254
275
return new DirectoryInfo ( DataLocation . CacheDirectory ) ;
255
276
}
256
277
278
+ private static DirectoryInfo GetPluginCacheDir ( )
279
+ {
280
+ return new DirectoryInfo ( DataLocation . PluginCacheDirectory ) ;
281
+ }
282
+
257
283
private static List < FileInfo > GetCacheFiles ( )
258
284
{
259
285
return GetCacheDir ( ) . EnumerateFiles ( "*" , SearchOption . AllDirectories ) . ToList ( ) ;
0 commit comments