<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Компиляция без инсталяции компилятора]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12312&amp;type=atom" />
	<updated>2017-01-14T06:35:41Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=12312</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Компиляция без инсталяции компилятора]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=111024#p111024" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong></p><p>Спасибо, вопросов нет. Буду проверять</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-01-14T06:35:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=111024#p111024</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Компиляция без инсталяции компилятора]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=111023#p111023" />
			<content type="html"><![CDATA[<p>Можно в любую папку, компилятору всё равно где лежать.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2017-01-14T06:03:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=111023#p111023</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Компиляция без инсталяции компилятора]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=111017#p111017" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong></p><p>Обязательно в папку <span style="color: #3366ff">C:\Program Files\AutoHotkey\Compiler</span><strong>?</strong> Она описана для компиляции самого компилятора.</p><p>А можно в папку <strong>C:\AHK Compiler</strong>, т.е. в папку пакетной компиляции или иную?</p><p>P.S. Вопрос глупый, я сам понимаю, но решил уточнить.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-01-13T20:49:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=111017#p111017</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Компиляция без инсталяции компилятора]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=111016#p111016" />
			<content type="html"><![CDATA[<p>Если каких-то особых разрешений не нужно, компилятор должен скопироваться в C:\Program Files\AutoHotkey\Compiler. Есть права администратора - значит всё Ok.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2017-01-13T20:11:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=111016#p111016</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Компиляция без инсталяции компилятора]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=111014#p111014" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ypppu пишет:</cite><blockquote><p>Вы при себе имеете флешку с собственным пакетным компилятором в виде исполняемого файла (exe)?</p></blockquote></div><p> Так точно, компилирую на своём компьютере Compiler.ahk в Compiler.exe, который создаёт структуру директорий на другом компьютере при запуске Compiler.exe, в коде это пока нет, но будет.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-01-13T19:39:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=111014#p111014</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Компиляция без инсталяции компилятора]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=111013#p111013" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>и записать его командой FileInstall в Compiler.exe</p></blockquote></div><p> В каком смысле? Вы при себе имеете флешку с собственным пакетным компилятором в виде исполняемого файла (exe)?</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2017-01-13T19:31:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=111013#p111013</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Компиляция без инсталяции компилятора]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=111011#p111011" />
			<content type="html"><![CDATA[<p>Приветствую.</p><p><strong>Сабж и пояснения.</strong><br />Мне по работе часто приходиться <em>&quot;носиться&quot;</em> между компами и производить компиляцию под требования заказчика, а значит надо устанавливать AHK, но они его частенько сносят.</p><p>Я написал пакетную компиляцию. </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Compiler.ini</div><div class="fancy_spoiler"><div class="codebox"><pre><code>;Пример определения секции для компиляции
;Компиляция по умолчанию отсутствует, т.к. это излишне, просто вопользуйтесь Ahk2Exe.exe
[Main]
;Рабочая папка компилятора
WorkingDir=C:\Program Files\AutoHotkey\Compiler

;Компилятор
Compiler=C:\Program Files\AutoHotkey\Compiler\Ahk2Exe.exe

;Входной файл AHK-file
keyIN=C:\AHK\Comple\Compiler.ahk

;Выходная директория и выходной Exe-file
keyOUT=C:\AHK Compiler\AHK Compiler.exe

;Ico-file для выходного Exe-file
keyICON=C:\AHK Compiler\ICO\AHK Compiler.ico

;Base file BIN(AutoHotkeySC.bin/ANSI 32-bit.bin/Unicode 32-bit.bin/Unicode 64-bit.bin) для выходного Exe-file
keyBIN=Unicode 64-bit.bin

;Выходной Exe-file сжимать/не сжимать=1/0. Для сжатия нужна программа mpress.exe
keyMPRESS=1</code></pre></div></div></div><p> и </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Compiler.ahk</div><div class="fancy_spoiler"><div class="codebox"><pre><code>;Тут только OK
  сMsgBoxInfo_Ok          :=0+8192+64 ;only an OK button + Task Modal + Icon Asterisk(info)
  сMsgBoxError_Ok         :=0+8192+16 ;only an OK button + Task Modal + Icon Hand (stop/error)  
  сMsgBoxChoice_Ok        :=0+8192+48 ;only an OK button + Task Modal + Icon Exclamation
  vQuote  :=  &quot;&quot;&quot;&quot;

;Чтение и проверка Ini-file  
  FileINI :=  fnGetFileINI()
  Secion  :=  &quot;Main&quot;
  ChkDir  :=  1
  ChkFile :=  2
  Trip    := -1

;Рабочая папка компилятора
  WorkingDir := fnIniRead(FileINI, Secion, &quot;WorkingDir&quot;, ChkDir)
  If (WorkingDir = Trip)
      Goto lEnd_AHK_Compile
  WorkingDir  :=  WorkingDir &quot;\&quot;
;Компилятор
  Compiler := fnIniRead(FileINI, Secion, &quot;Compiler&quot;, ChkFile)
  If (Compiler = Trip)
      Goto lEnd_AHK_Compile
;Входной файл AHK-file
  keyIN  := fnIniRead(FileINI, Secion, &quot;keyIN&quot;, ChkFile)
  If (keyIN = Trip)
      Goto lEnd_AHK_Compile
  keyIN  := vQuote keyIN vQuote
;Выходная директория и файл
  keyOUT    :=  fnIniRead(FileINI, Secion, &quot;keyOUT&quot;)
  If (keyOUT = Trip)
      Goto lEnd_AHK_Compile
  Needle    :=  &quot;\&quot;
  vPos      :=  InStr(keyOUT, Needle , , 0)
  VarDir    :=  SubStr(keyOUT, 1 , vPos-1)
  VarFile   :=  SubStr(keyOUT, vPos+1)
  NameProc  :=  VarFile
  keyOUT    := vQuote keyOUT vQuote
  if (!InStr(FileExist(VarDir), &quot;D&quot;))
       {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
                ,`n`nОшибка в секции %Secion% в переменной keyOUT`n`n Пути %VarDir% не существует`n`nВыход из программы.
                ,15
        Goto lEnd_AHK_Compile
       }
  
;Ico-file для выходного Exe-file
  keyICON :=  fnIniRead(FileINI, Secion, &quot;keyICON&quot;, ChkFile)
  If (keyICON = Trip)
      Goto lEnd_AHK_Compile
  keyICON  := vQuote keyICON vQuote
;Base file BIN(AutoHotkeySC.bin/ANSI 32-bit.bin/Unicode 32-bit.bin/Unicode 64-bit.bin) для выходного Exe-file  
  keyBIN :=  fnIniRead(FileINI, Secion, &quot;keyBIN&quot;) 
  If (keyBIN = Trip)
      Goto lEnd_AHK_Compile
  keyBIN  := vQuote keyBIN vQuote
;Выходной Exe-file сжимать/не сжимать=1/0 нужна программа mpress.exe
  keyMPRESS :=  fnIniRead(FileINI, Secion, &quot;keyMPRESS&quot;) 
  If (keyBIN = Trip)
      Goto lEnd_AHK_Compile


  If (fnCheckExistProc(NameProc))
      {       
        MsgBox % сMsgBoxChoice_Ok, Ошибка компиляции
              ,`n`nСледует завершить процесс %NameProc%`n`n Заршите процесс %NameProc%!`n`nВыход из программы
              ,10
       Goto lEnd_AHK_Compile  
      } 
  
  Target := Compiler &quot; /in &quot; keyIN &quot; /out &quot; keyOUT &quot; /icon &quot; keyICON &quot; /bin &quot; keyBIN &quot; /mpress &quot; keyMPRESS
  Run, %Target% , %WorkingDir%
; Успешная компиляция
  MsgBox % сMsgBoxInfo_Ok, Успешная компиляция
            ,`n`n  Компиляции скрипта завершена`n`n        DONE!   `n`n Выход из программы.
            ,3     
lEnd_AHK_Compile:
  ExitApp

fnIniRead(FilenameINI, SectionINI := &quot;&quot;, KeyINI := &quot;&quot;, CheckDirOrFile := False)
{
Global   ;----------------------------
  IniRead, VarKey, %FilenameINI%, % SectionINI, % KeyINI
  if (VarKey=&quot;ERROR&quot;)
      {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
              ,`n`nОшибка в секции %SectionINI% в переменной %KeyINI%`n`nОпределена не верно`n`nВыход из программы
              ,15
        Return -1
      }
   If (CheckDirOrFile = False) ;Ничего не проверяем
          Return VarKey

   If (CheckDirOrFile = 1) ;Проверяем путь, т.е. директорию
       {
        if (!InStr(FileExist(VarKey), &quot;D&quot;))
          {
            MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
                    ,`n`nОшибка в секции %SectionINI% в переменной %KeyINI%`n`nПути %VarKey% не существует`n`nВыход из программы.
                    ,15      
            Return -1
          }
       }        

   If (CheckDirOrFile = 2) ;Проверяем наличие файла в полном пути
       {
        if (!FileExist(VarKey))
          {
            MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
                    ,`n`nОшибка в секции %SectionINI% в переменной %KeyINI%`n`nФайла %VarKey% не существует`n`nВыход из программы.
                    ,15      
            Return -1
          }
       }

Return VarKey
}

fnGetFileINI(){
global
	If %0% ; Выборка аргументов командной строки = только один аргумет
		{
			args := []
			vCountArgs := 0
			Loop %0%
				{
					args[A_Index] := %A_Index%
					vCountArgs++
				}
		}
	vIniFile := args[1]

  	If (vCountArgs &lt; 1)
    {
      ;Не указан ini-файл, вызываем диалог выбора ini-файла
			vPrompt := &quot;Выберите ini-файл для компиляции скрипта&quot;
      vIniFile  := ;
      vOptions  := 1+2
      vIniDir   := &quot;*C:\AHK Compiler\INI\&quot;
      vFilter   := &quot;*.ini&quot;
			FileSelectFile, vIniFile, %vOptions%, %vIniDir%, %vPrompt%, %vFilter%
      if (ErrorLevel = 1)
          {
            MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
            ,`n`n  Не указан ini-файл для компиляции скрипта`n Укажите ini-файл как параметр`n`n Выход из программы.
            ,30      
            ExitApp
          }	
		}
Return vIniFile
}

;---------------------------Функция проверки существования процесса-----------------------------
; Вход (имя процесса полное, т.е. exe-файл)
; Ответ True/False = процесс работает(существует)/не работает(не существует)
fnCheckExistProc(ByRef vPIDName)
{
  Thread, NoTimers
    ; Проверяем существование процесса  vPIDName
    Process, Exist, %vPIDName%
    if (ErrorLevel = 0) 
          vRet  := False  ; Программа и/или скрипт не запущен
    Else
          vRet  := True    
    Thread, NoTimers, false
  Return vRet ; Выходим с ответом
}</code></pre></div></div></div><p>Если просто скопировать содержимое папки <strong>C:\Program Files\AutoHotkey\Compiler</strong> и записать его командой <strong>FileInstall</strong> в <strong>Compiler.exe</strong>, то будет компиляция или тут есть <em>&quot;подводные камни&quot;</em>?</p><br /><p>Если так можно, то какие поправки надо внести в <strong>Compiler.ini</strong> и <strong>Compiler.ahk</strong>?</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-01-13T19:17:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=111011#p111011</id>
		</entry>
</feed>
