From 13f3600dce978520d3c8594e20402cde9b0a4699 Mon Sep 17 00:00:00 2001 From: Vladimir Aleshechkin Date: Tue, 1 Oct 2024 22:50:02 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=BB=D0=B8=D0=B7=201.2.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OneScriptNoConsole/Program.cs | 27 ++++++++++++++++++- .../Properties/AssemblyInfo.cs | 4 +-- docs/OSNC.MakeExe.html | 7 ++++- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/OneScriptNoConsole/OneScriptNoConsole/Program.cs b/OneScriptNoConsole/OneScriptNoConsole/Program.cs index a487de3..d0b7147 100644 --- a/OneScriptNoConsole/OneScriptNoConsole/Program.cs +++ b/OneScriptNoConsole/OneScriptNoConsole/Program.cs @@ -25,6 +25,7 @@ class Program private static string assemblyVersion = "0.0.0.0"; private static string assemblyFileVersion = "0.0.0.0"; private static string myEntryScript = ""; + private static string startFrom = ""; [STAThread] static void Main(string[] args) @@ -70,6 +71,10 @@ static void Main(string[] args) myEntryScript = File.ReadAllText(script2.Replace("\u0022", ""), Encoding.UTF8); } } + else if (aLine.Substring(0, 11) == "/startFrom=") + { + startFrom = aLine.Replace("/startFrom=", "").Replace("\u0022", ""); + } else if (aLine.Substring(0, 9) == "/company=") { assemblyCompany = aLine.Replace("/company=", "").Replace("\u0022", ""); @@ -270,6 +275,7 @@ public static void MakeAssembly() @" private static string pathEr = currentDirectory + separator + ""error.log"";" + Environment.NewLine + @" private static string prefix = """" + Environment.NewLine + DateTime.Now + Environment.NewLine;" + Environment.NewLine + @" private static ArrayImpl attachByPath = new ArrayImpl();" + Environment.NewLine + + @" private static string startFrom = """ + startFrom + @""";" + Environment.NewLine + @" public int Start()" + Environment.NewLine + @" {{" + Environment.NewLine + @" var hostedScript = new HostedScriptEngine();" + Environment.NewLine + @@ -307,7 +313,17 @@ public static void MakeAssembly() @" catch {{ continue; }}" + Environment.NewLine + @" }}" + Environment.NewLine + @" MyEntryScript.strMyEntryScript = MyEntryScript.strMyEntryScript.Replace(@""#Использовать"", @""//gflvvdur#Использовать"");" + Environment.NewLine + - @" var source = hostedScript.Loader.FromString(MyEntryScript.strMyEntryScript);" + Environment.NewLine + + @" ScriptEngine.Environment.ICodeSource source;" + Environment.NewLine + + @" if (startFrom == ""file"")" + Environment.NewLine + + @" {{" + Environment.NewLine + + @" string strEntryScript = MyEntryScript.strMyEntryScript.Replace(@""//gflvvdur#Использовать"", @""#Использовать"");" + Environment.NewLine + + @" File.WriteAllText(currentDirectory + separator + ""temp.os"", strEntryScript, Encoding.UTF8);" + Environment.NewLine + + @" source = hostedScript.Loader.FromFile(currentDirectory + separator + ""temp.os"");" + Environment.NewLine + + @" }}" + Environment.NewLine + + @" else" + Environment.NewLine + + @" {{" + Environment.NewLine + + @" source = hostedScript.Loader.FromString(MyEntryScript.strMyEntryScript);" + Environment.NewLine + + @" }}" + Environment.NewLine + @" Process process = hostedScript.CreateProcess(new HostConsole(), source);" + Environment.NewLine + @" try" + Environment.NewLine + @" {{" + Environment.NewLine + @@ -456,6 +472,15 @@ public static void MakeAssembly() # Для Linux это может выглядеть так: /script=""/home/vlad/Projects/444/Приложение.os"" #/script=[string] +# Источник сценария. Или файл на диске, или строка с текстом сценария, внедренная в exe файл. +# Сценарии не использующие пакеты односкрипта из каталога lib могут быть запущены из строки, +# внедренной в exe файл. Если же будут задействованы пакеты односкрипта из каталога lib +# во избежание ошибок файл сценария необходимо будет сначала записать на диск. +# Сценарий будет записан под именем temp.os а затем запущен. +# ""file"" - старт из файла (по умолчанию) +# ""string"" - старт из строки +/startFrom=""file"" + # Название компании. #/company=[string] diff --git a/OneScriptNoConsole/OneScriptNoConsole/Properties/AssemblyInfo.cs b/OneScriptNoConsole/OneScriptNoConsole/Properties/AssemblyInfo.cs index 11ec178..bc6a15d 100644 --- a/OneScriptNoConsole/OneScriptNoConsole/Properties/AssemblyInfo.cs +++ b/OneScriptNoConsole/OneScriptNoConsole/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // Можно задать все значения или принять номера сборки и редакции по умолчанию // используя "*", как показано ниже: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.2.0")] -[assembly: AssemblyFileVersion("1.1.2.0")] +[assembly: AssemblyVersion("1.2.0.0")] +[assembly: AssemblyFileVersion("1.2.0.0")] diff --git a/docs/OSNC.MakeExe.html b/docs/OSNC.MakeExe.html index 23d3515..aad96f5 100644 --- a/docs/OSNC.MakeExe.html +++ b/docs/OSNC.MakeExe.html @@ -82,7 +82,12 @@

Создание EXE файла запуска стартовог
  • В том же каталоге будет сформирован файл oscript.cfg, каталог lib с файлом package-loader.os. Не удаляйте четыре файла библиотек односкрипта. -В каталог lib при необходимости скопируйте нужные Вам пакеты библиотек. В большинстве случаев это не требуется.
  • +В каталог lib при необходимости скопируйте нужные Вам пакеты библиотек. В большинстве случаев это не требуется. +Обратите внимание, наш файл oscript.cfg будет немного отличаться от односкриптового файла oscript.cfg строкой: +

    +lib.system = lib
    +
    +Так что простое копирование из каталога bin может привести к неудачному запуску.
  • После этого можно удалить файлы settings.cfg, error.log и файл стартового сценария. Файл стартового сценария будет интегрирован в исполняемый EXE файл.
  • Так как окна терминала у нас не будет все сообщения при компиляции и при работе скомпилированной программы будут записаны в файл error.log.