Skip to content

Commit 99732cd

Browse files
committed
prevents file access error when import script modules
1 parent c8a264f commit 99732cd

File tree

3 files changed

+97
-66
lines changed

3 files changed

+97
-66
lines changed

agsget/agsget/EditorPlugin/AGS.Plugin.AgsGet/AgsGet.Designer.cs

Lines changed: 46 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

agsget/agsget/EditorPlugin/AGS.Plugin.AgsGet/AgsGetPane.cs

Lines changed: 29 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ public partial class AgsGetPane : EditorContentPanel
3232
private Button button_UpdateIndex;
3333
private Button button_GetPackage;
3434
private TextBox textBox_LockFile;
35-
private Button button_AddPackage;
36-
private Button button_RemovePackage;
3735
private TabControl tabControl1;
3836
private TabPage tabPage1;
3937
private TabPage tabPage2;
@@ -77,15 +75,13 @@ private void InitializeComponent()
7775
this.label_selectedPackageAuthor = new System.Windows.Forms.Label();
7876
this.label_selectedPackageName = new System.Windows.Forms.Label();
7977
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
78+
this.button_UninstallPackage = new System.Windows.Forms.Button();
8079
this.label1 = new System.Windows.Forms.Label();
8180
this.button_UpdateIndex = new System.Windows.Forms.Button();
8281
this.button_GetPackage = new System.Windows.Forms.Button();
83-
this.button_AddPackage = new System.Windows.Forms.Button();
84-
this.button_RemovePackage = new System.Windows.Forms.Button();
8582
this.textBox_searchQuery = new System.Windows.Forms.TextBox();
8683
this.fileSystemWatcher_LockFile = new System.IO.FileSystemWatcher();
8784
this.fileSystemWatcher_Manifest = new System.IO.FileSystemWatcher();
88-
this.button_UninstallPackage = new System.Windows.Forms.Button();
8985
this.groupBox2.SuspendLayout();
9086
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
9187
this.splitContainer1.Panel1.SuspendLayout();
@@ -115,7 +111,7 @@ private void InitializeComponent()
115111
this.listBox_packagesResults.Location = new System.Drawing.Point(0, 13);
116112
this.listBox_packagesResults.MinimumSize = new System.Drawing.Size(4, 200);
117113
this.listBox_packagesResults.Name = "listBox_packagesResults";
118-
this.listBox_packagesResults.Size = new System.Drawing.Size(332, 199);
114+
this.listBox_packagesResults.Size = new System.Drawing.Size(326, 199);
119115
this.listBox_packagesResults.Sorted = true;
120116
this.listBox_packagesResults.TabIndex = 2;
121117
this.listBox_packagesResults.SelectedIndexChanged += new System.EventHandler(this.listBox_packagesResults_SelectedIndexChanged);
@@ -136,7 +132,7 @@ private void InitializeComponent()
136132
this.listBox_packagesInstalled.Location = new System.Drawing.Point(0, 225);
137133
this.listBox_packagesInstalled.MinimumSize = new System.Drawing.Size(60, 60);
138134
this.listBox_packagesInstalled.Name = "listBox_packagesInstalled";
139-
this.listBox_packagesInstalled.Size = new System.Drawing.Size(332, 56);
135+
this.listBox_packagesInstalled.Size = new System.Drawing.Size(326, 56);
140136
this.listBox_packagesInstalled.TabIndex = 2;
141137
this.listBox_packagesInstalled.SelectedIndexChanged += new System.EventHandler(this.listBox_packagesInstalled_SelectedIndexChanged);
142138
//
@@ -148,7 +144,7 @@ private void InitializeComponent()
148144
this.textBox_ConsoleOut.Name = "textBox_ConsoleOut";
149145
this.textBox_ConsoleOut.ReadOnly = true;
150146
this.textBox_ConsoleOut.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
151-
this.textBox_ConsoleOut.Size = new System.Drawing.Size(1007, 89);
147+
this.textBox_ConsoleOut.Size = new System.Drawing.Size(990, 89);
152148
this.textBox_ConsoleOut.TabIndex = 1;
153149
//
154150
// button_InstallPackage
@@ -170,7 +166,7 @@ private void InitializeComponent()
170166
this.groupBox2.Dock = System.Windows.Forms.DockStyle.Top;
171167
this.groupBox2.Location = new System.Drawing.Point(0, 0);
172168
this.groupBox2.Name = "groupBox2";
173-
this.groupBox2.Size = new System.Drawing.Size(1007, 539);
169+
this.groupBox2.Size = new System.Drawing.Size(990, 539);
174170
this.groupBox2.TabIndex = 0;
175171
this.groupBox2.TabStop = false;
176172
this.groupBox2.Text = "AgsGet Package Search";
@@ -199,8 +195,8 @@ private void InitializeComponent()
199195
this.splitContainer1.Panel2.Controls.Add(this.label_selectedPackageAuthor);
200196
this.splitContainer1.Panel2.Controls.Add(this.label_selectedPackageName);
201197
this.splitContainer1.Panel2.Controls.Add(this.flowLayoutPanel1);
202-
this.splitContainer1.Size = new System.Drawing.Size(1001, 500);
203-
this.splitContainer1.SplitterDistance = 332;
198+
this.splitContainer1.Size = new System.Drawing.Size(984, 500);
199+
this.splitContainer1.SplitterDistance = 326;
204200
this.splitContainer1.TabIndex = 2;
205201
//
206202
// tabControl1
@@ -212,7 +208,7 @@ private void InitializeComponent()
212208
this.tabControl1.MinimumSize = new System.Drawing.Size(0, 140);
213209
this.tabControl1.Name = "tabControl1";
214210
this.tabControl1.SelectedIndex = 0;
215-
this.tabControl1.Size = new System.Drawing.Size(332, 219);
211+
this.tabControl1.Size = new System.Drawing.Size(326, 219);
216212
this.tabControl1.TabIndex = 5;
217213
//
218214
// tabPage1
@@ -221,7 +217,7 @@ private void InitializeComponent()
221217
this.tabPage1.Location = new System.Drawing.Point(4, 22);
222218
this.tabPage1.Name = "tabPage1";
223219
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
224-
this.tabPage1.Size = new System.Drawing.Size(324, 193);
220+
this.tabPage1.Size = new System.Drawing.Size(318, 193);
225221
this.tabPage1.TabIndex = 0;
226222
this.tabPage1.Text = "LockFile";
227223
this.tabPage1.UseVisualStyleBackColor = true;
@@ -235,7 +231,7 @@ private void InitializeComponent()
235231
this.textBox_LockFile.Name = "textBox_LockFile";
236232
this.textBox_LockFile.ReadOnly = true;
237233
this.textBox_LockFile.ScrollBars = System.Windows.Forms.ScrollBars.Both;
238-
this.textBox_LockFile.Size = new System.Drawing.Size(318, 187);
234+
this.textBox_LockFile.Size = new System.Drawing.Size(312, 187);
239235
this.textBox_LockFile.TabIndex = 4;
240236
//
241237
// tabPage2
@@ -244,7 +240,7 @@ private void InitializeComponent()
244240
this.tabPage2.Location = new System.Drawing.Point(4, 22);
245241
this.tabPage2.Name = "tabPage2";
246242
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
247-
this.tabPage2.Size = new System.Drawing.Size(330, 193);
243+
this.tabPage2.Size = new System.Drawing.Size(324, 193);
248244
this.tabPage2.TabIndex = 1;
249245
this.tabPage2.Text = "ManifestFile";
250246
this.tabPage2.UseVisualStyleBackColor = true;
@@ -258,7 +254,7 @@ private void InitializeComponent()
258254
this.textBox_ManifestFile.Name = "textBox_ManifestFile";
259255
this.textBox_ManifestFile.ReadOnly = true;
260256
this.textBox_ManifestFile.ScrollBars = System.Windows.Forms.ScrollBars.Both;
261-
this.textBox_ManifestFile.Size = new System.Drawing.Size(324, 187);
257+
this.textBox_ManifestFile.Size = new System.Drawing.Size(318, 187);
262258
this.textBox_ManifestFile.TabIndex = 0;
263259
//
264260
// textBox_selectedPackageText
@@ -270,7 +266,7 @@ private void InitializeComponent()
270266
this.textBox_selectedPackageText.Multiline = true;
271267
this.textBox_selectedPackageText.Name = "textBox_selectedPackageText";
272268
this.textBox_selectedPackageText.ReadOnly = true;
273-
this.textBox_selectedPackageText.Size = new System.Drawing.Size(665, 60);
269+
this.textBox_selectedPackageText.Size = new System.Drawing.Size(654, 60);
274270
this.textBox_selectedPackageText.TabIndex = 7;
275271
//
276272
// label_selectedPackageDepends
@@ -333,14 +329,23 @@ private void InitializeComponent()
333329
this.flowLayoutPanel1.Controls.Add(this.label1);
334330
this.flowLayoutPanel1.Controls.Add(this.button_UpdateIndex);
335331
this.flowLayoutPanel1.Controls.Add(this.button_GetPackage);
336-
this.flowLayoutPanel1.Controls.Add(this.button_AddPackage);
337-
this.flowLayoutPanel1.Controls.Add(this.button_RemovePackage);
338332
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
339333
this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
340334
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
341-
this.flowLayoutPanel1.Size = new System.Drawing.Size(665, 31);
335+
this.flowLayoutPanel1.Size = new System.Drawing.Size(654, 31);
342336
this.flowLayoutPanel1.TabIndex = 0;
343337
//
338+
// button_UninstallPackage
339+
//
340+
this.button_UninstallPackage.AutoSize = true;
341+
this.button_UninstallPackage.Location = new System.Drawing.Point(120, 3);
342+
this.button_UninstallPackage.Name = "button_UninstallPackage";
343+
this.button_UninstallPackage.Size = new System.Drawing.Size(103, 23);
344+
this.button_UninstallPackage.TabIndex = 8;
345+
this.button_UninstallPackage.Text = "Uninstall Package";
346+
this.button_UninstallPackage.UseVisualStyleBackColor = true;
347+
this.button_UninstallPackage.Click += new System.EventHandler(this.button_UninstallPackage_Click);
348+
//
344349
// label1
345350
//
346351
this.label1.AutoSize = true;
@@ -367,40 +372,18 @@ private void InitializeComponent()
367372
this.button_GetPackage.Enabled = false;
368373
this.button_GetPackage.Location = new System.Drawing.Point(350, 3);
369374
this.button_GetPackage.Name = "button_GetPackage";
370-
this.button_GetPackage.Size = new System.Drawing.Size(80, 23);
375+
this.button_GetPackage.Size = new System.Drawing.Size(147, 23);
371376
this.button_GetPackage.TabIndex = 5;
372-
this.button_GetPackage.Text = "Get Package";
377+
this.button_GetPackage.Text = "Update Package on Cache";
373378
this.button_GetPackage.UseVisualStyleBackColor = true;
374379
this.button_GetPackage.Click += new System.EventHandler(this.button_GetPackage_Click);
375380
//
376-
// button_AddPackage
377-
//
378-
this.button_AddPackage.AutoSize = true;
379-
this.button_AddPackage.Location = new System.Drawing.Point(436, 3);
380-
this.button_AddPackage.Name = "button_AddPackage";
381-
this.button_AddPackage.Size = new System.Drawing.Size(82, 23);
382-
this.button_AddPackage.TabIndex = 6;
383-
this.button_AddPackage.Text = "Add Package";
384-
this.button_AddPackage.UseVisualStyleBackColor = true;
385-
this.button_AddPackage.Click += new System.EventHandler(this.button_AddPackage_Click);
386-
//
387-
// button_RemovePackage
388-
//
389-
this.button_RemovePackage.AutoSize = true;
390-
this.button_RemovePackage.Location = new System.Drawing.Point(524, 3);
391-
this.button_RemovePackage.Name = "button_RemovePackage";
392-
this.button_RemovePackage.Size = new System.Drawing.Size(103, 23);
393-
this.button_RemovePackage.TabIndex = 7;
394-
this.button_RemovePackage.Text = "Remove Package";
395-
this.button_RemovePackage.UseVisualStyleBackColor = true;
396-
this.button_RemovePackage.Click += new System.EventHandler(this.button_RemovePackage_Click);
397-
//
398381
// textBox_searchQuery
399382
//
400383
this.textBox_searchQuery.Dock = System.Windows.Forms.DockStyle.Top;
401384
this.textBox_searchQuery.Location = new System.Drawing.Point(3, 16);
402385
this.textBox_searchQuery.Name = "textBox_searchQuery";
403-
this.textBox_searchQuery.Size = new System.Drawing.Size(1001, 20);
386+
this.textBox_searchQuery.Size = new System.Drawing.Size(984, 20);
404387
this.textBox_searchQuery.TabIndex = 1;
405388
this.textBox_searchQuery.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox_searchQuery_KeyPress);
406389
//
@@ -418,17 +401,6 @@ private void InitializeComponent()
418401
this.fileSystemWatcher_Manifest.SynchronizingObject = this;
419402
this.fileSystemWatcher_Manifest.Changed += new System.IO.FileSystemEventHandler(this.fileSystemWatcher_Manifest_Changed);
420403
//
421-
// button_UninstallPackage
422-
//
423-
this.button_UninstallPackage.AutoSize = true;
424-
this.button_UninstallPackage.Location = new System.Drawing.Point(120, 3);
425-
this.button_UninstallPackage.Name = "button_UninstallPackage";
426-
this.button_UninstallPackage.Size = new System.Drawing.Size(103, 23);
427-
this.button_UninstallPackage.TabIndex = 8;
428-
this.button_UninstallPackage.Text = "Uninstall Package";
429-
this.button_UninstallPackage.UseVisualStyleBackColor = true;
430-
this.button_UninstallPackage.Click += new System.EventHandler(this.button_UninstallPackage_Click);
431-
//
432404
// AgsGetPane
433405
//
434406
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -438,7 +410,7 @@ private void InitializeComponent()
438410
this.Controls.Add(this.groupBox2);
439411
this.DoubleBuffered = true;
440412
this.Name = "AgsGetPane";
441-
this.Size = new System.Drawing.Size(1007, 498);
413+
this.Size = new System.Drawing.Size(990, 498);
442414
this.groupBox2.ResumeLayout(false);
443415
this.groupBox2.PerformLayout();
444416
this.splitContainer1.Panel1.ResumeLayout(false);

agsget/agsget/EditorPlugin/AGS.Plugin.AgsGet/ImportExport.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Diagnostics;
34
using System.Drawing;
45
using System.Drawing.Imaging;
56
using System.IO;
@@ -14,10 +15,29 @@ public class ImportExport
1415
{
1516
private const string MODULE_FILE_SIGNATURE = "AGSScriptModule\0";
1617
private const uint MODULE_FILE_TRAILER = 0xb4f76a65;
17-
18+
19+
private static FileStream GetReadStream(string path, int timeoutMs)
20+
{
21+
var time = Stopwatch.StartNew();
22+
while (time.ElapsedMilliseconds < timeoutMs)
23+
{
24+
try
25+
{
26+
return new FileStream(path, FileMode.Open, FileAccess.Read,FileShare.ReadWrite);
27+
}
28+
catch (IOException e)
29+
{
30+
// access error
31+
if (e.HResult != -2147024864)
32+
throw;
33+
}
34+
}
35+
36+
throw new TimeoutException($"Failed to get a write handle to {path} within {timeoutMs}ms.");
37+
}
1838
public static List<Script> ImportScriptModule(string fileName)
1939
{
20-
BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open, FileAccess.Read));
40+
BinaryReader reader = new BinaryReader(GetReadStream(fileName, 1000));
2141
string fileSig = Encoding.ASCII.GetString(reader.ReadBytes(16));
2242
if (fileSig != MODULE_FILE_SIGNATURE)
2343
{

0 commit comments

Comments
 (0)