diff --git a/Creator/Helper/TemporaryDirectory.cs b/Creator/Helper/TemporaryDirectory.cs
new file mode 100644
index 0000000..cd1e553
--- /dev/null
+++ b/Creator/Helper/TemporaryDirectory.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Threading;
+
+namespace KattekerCreator.Helper
+{
+ public class TemporaryDirectory : IDisposable
+ {
+ public string Path { get; }
+
+ public TemporaryDirectory(string path)
+ {
+ Path = path;
+ }
+
+ void IDisposable.Dispose()
+ {
+ try
+ {
+ Thread.Sleep(100);
+ System.IO.Directory.Delete(Path, true);
+ }
+ catch
+ {
+ //ignore.
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Creator/Helper/Utils.cs b/Creator/Helper/Utils.cs
index b2f5b40..6c59ce6 100644
--- a/Creator/Helper/Utils.cs
+++ b/Creator/Helper/Utils.cs
@@ -19,7 +19,7 @@ namespace KattekerCreator.Helper
return false;
}
- public static string CreateTempDirectory()
+ public static TemporaryDirectory CreateTempDirectory()
{
string result;
do
@@ -29,7 +29,7 @@ namespace KattekerCreator.Helper
} while (Directory.Exists(result));
Directory.CreateDirectory(result);
- return result;
+ return new TemporaryDirectory(result);
}
public static bool IsFilesizeWrong(string filename)
diff --git a/Creator/KattekerCreator.csproj b/Creator/KattekerCreator.csproj
index 2f26f63..8fc81f6 100644
--- a/Creator/KattekerCreator.csproj
+++ b/Creator/KattekerCreator.csproj
@@ -52,6 +52,7 @@
+
diff --git a/Creator/Program.cs b/Creator/Program.cs
index eed1285..060575d 100644
--- a/Creator/Program.cs
+++ b/Creator/Program.cs
@@ -10,11 +10,12 @@ namespace KattekerCreator
{
public class Program
{
- private const string Executable = @"C:\Program Files (x86)\NSIS\makensis.exe";
+ //private const string MakeNsis = @"C:\Program Files (x86)\NSIS\makensis.exe";
private readonly string _baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
+ private string MakeNsis => Path.Combine(_baseDirectory, "NSIS", "makensis.exe");
private ApplicationArguments _appArguments;
private AssemblyFileInfo _assemblyFileInfo;
- private string _tempDir;
+ private TemporaryDirectory _tempDir;
private Releases _releases;
private static int Main(string[] args)
@@ -50,31 +51,33 @@ namespace KattekerCreator
_appArguments = parser.GetObject();
//Create tempdir
- _tempDir = Utils.CreateTempDirectory();
- _releases = new Releases(_appArguments.OutputDir);
- parser.ShowProgramArguments();
- //Modify AppStub
- var appStubFile = ModifyAppStub();
- //Acquire infos from Executable.
- _assemblyFileInfo = new AssemblyFileInfo(_appArguments, _tempDir);
- var configFile = CreateConfigFile();
-
- //Generate NSIS-Script
- var additionalFiles = new[]
+ using (_tempDir = Utils.CreateTempDirectory())
{
- new PhysicalFile(appStubFile, Path.GetFileName(_appArguments.ProgramFile)),
- new PhysicalFile(configFile, Path.Combine($"app-{_assemblyFileInfo.AssemblyVersion}", Path.GetFileName(configFile) ?? string.Empty))
- };
- var templateFile = GenerateNsisTemplate(additionalFiles);
- //Start makensis.exe
- var setupFilePath = CompileSetupScript(templateFile);
- //Copy to Output-Folder
- CopyToOutputFolder(setupFilePath);
- //Create/Modify RELEASE File
- var releaseEntry = AddPackageToReleaseFile(setupFilePath);
- //Copy installer as setup.exe
- CopyAsSetup(setupFilePath, releaseEntry);
- return 0;
+ _releases = new Releases(_appArguments.OutputDir);
+ parser.ShowProgramArguments();
+ //Modify AppStub
+ var appStubFile = ModifyAppStub();
+ //Acquire infos from Executable.
+ _assemblyFileInfo = new AssemblyFileInfo(_appArguments, _tempDir.Path);
+ var configFile = CreateConfigFile();
+
+ //Generate NSIS-Script
+ var additionalFiles = new[]
+ {
+ new PhysicalFile(appStubFile, Path.GetFileName(_appArguments.ProgramFile)),
+ new PhysicalFile(configFile, Path.Combine($"app-{_assemblyFileInfo.AssemblyVersion}", Path.GetFileName(configFile) ?? string.Empty))
+ };
+ var templateFile = GenerateNsisTemplate(additionalFiles);
+ //Start makensis.exe
+ var setupFilePath = CompileSetupScript(templateFile);
+ //Copy to Output-Folder
+ CopyToOutputFolder(setupFilePath);
+ //Create/Modify RELEASE File
+ var releaseEntry = AddPackageToReleaseFile(setupFilePath);
+ //Copy installer as setup.exe
+ CopyAsSetup(setupFilePath, releaseEntry);
+ return 0;
+ }
}
private void CopyAsSetup(string setupFilePath, ReleaseEntry releaseEntry)
@@ -117,15 +120,15 @@ namespace KattekerCreator
File.Copy(setupFilePath, Path.Combine(_appArguments.OutputDir, setupFile), true);
}
- private static string CompileSetupScript(string templateFile)
+ private string CompileSetupScript(string templateFile)
{
- if (!File.Exists(Executable)) throw new FileNotFoundException("NSIS not installed properly.");
+ if (!File.Exists(MakeNsis)) throw new FileNotFoundException("NSIS not installed properly.");
int exitcode;
using (var p = new Process())
{
p.StartInfo = new ProcessStartInfo
{
- FileName = Executable,
+ FileName = MakeNsis,
Arguments = $"\"{templateFile}\"",
UseShellExecute = false
};
@@ -133,16 +136,16 @@ namespace KattekerCreator
p.Start();
p.WaitForExit();
exitcode = p.ExitCode;
- Log.WriteInfoLine($"{Path.GetFileName(Executable)} has exited with Exitcode: {exitcode} (Took: {sw.ElapsedMilliseconds}ms)");
+ Log.WriteInfoLine($"{Path.GetFileName(MakeNsis)} has exited with Exitcode: {exitcode} (Took: {sw.ElapsedMilliseconds}ms)");
}
- if (exitcode != 0) throw new Exception($"{Path.GetFileName(Executable)} has exited with Exitcode: {exitcode}");
+ if (exitcode != 0) throw new Exception($"{Path.GetFileName(MakeNsis)} has exited with Exitcode: {exitcode}");
return Path.ChangeExtension(templateFile, "exe");
}
private string CreateConfigFile()
{
- var pathToFile = Path.Combine(_tempDir, Constants.KattekerConfig);
+ var pathToFile = Path.Combine(_tempDir.Path, Constants.KattekerConfig);
var kattekerConfig = new KattekerConfig
{
Publish = _appArguments.PublishDir ?? _appArguments.OutputDir,
@@ -155,7 +158,7 @@ namespace KattekerCreator
private string ModifyAppStub()
{
var baseFile = new FileInfo(Path.Combine(_baseDirectory, Constants.ExecutionStub));
- var targetFile = baseFile.CopyTo(Path.Combine(_tempDir, Constants.ExecutionStub));
+ var targetFile = baseFile.CopyTo(Path.Combine(_tempDir.Path, Constants.ExecutionStub));
Utils.CopyResources(_appArguments.ProgramFile, targetFile.FullName);
return targetFile.FullName;
}
@@ -166,7 +169,7 @@ namespace KattekerCreator
{
try
{
- var outFile = Path.Combine(_tempDir, GenerateFilename(_assemblyFileInfo.ProductName, _assemblyFileInfo.AssemblyVersion.ToString(), "nsi"));
+ var outFile = Path.Combine(_tempDir.Path, GenerateFilename(_assemblyFileInfo.ProductName, _assemblyFileInfo.AssemblyVersion.ToString(), "nsi"));
var setupTmpl = new SetupTmpl
{
Executable = _assemblyFileInfo.FileInfo.Name,
diff --git a/Katteker.Test/Katteker.Test.csproj b/Katteker.Test/Katteker.Test.csproj
index 5d872d4..35f932b 100644
--- a/Katteker.Test/Katteker.Test.csproj
+++ b/Katteker.Test/Katteker.Test.csproj
@@ -60,33 +60,21 @@
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
diff --git a/Katteker/Properties/AssemblyInfo.cs b/Katteker/Properties/AssemblyInfo.cs
index 6ccc645..6272e7e 100644
--- a/Katteker/Properties/AssemblyInfo.cs
+++ b/Katteker/Properties/AssemblyInfo.cs
@@ -32,6 +32,6 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.4")]
-[assembly: AssemblyFileVersion("1.0.4")]
+[assembly: AssemblyVersion("1.1.0")]
+[assembly: AssemblyFileVersion("1.1.0")]
[assembly: InternalsVisibleTo("Katteker.Test")]
\ No newline at end of file