<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Пакетная компиляция, ошибка c INI или с ICO файлами]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12283&amp;type=atom" />
	<updated>2017-01-07T14:06:29Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=12283</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Пакетная компиляция, ошибка c INI или с ICO файлами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=110674#p110674" />
			<content type="html"><![CDATA[<p>Всё сделал и убрал все возможные ошибки, которые мне в голову пришли.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Пример ini-file 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><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>Может, кому и пригодиться. <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-01-07T14:06:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=110674#p110674</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Пакетная компиляция, ошибка c INI или с ICO файлами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=110617#p110617" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong> Спасибо, стал искать все буквы <strong>C</strong> - она оказалась в пути, в Ini-files. <br />Да, уж такую ошибку тяжело отловить. <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p><p>Спасибо за ответ, мой вопрос исчерпан.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-01-06T12:15:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=110617#p110617</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Пакетная компиляция, ошибка c INI или с ICO файлами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=110616#p110616" />
			<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-06T12:10:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=110616#p110616</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Пакетная компиляция, ошибка c INI или с ICO файлами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=110614#p110614" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ypppu пишет:</cite><blockquote><p>Путаете буквы C и C.</p></blockquote></div><p> Вы про оформление или про скрипт?</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-01-06T11:48:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=110614#p110614</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Пакетная компиляция, ошибка c INI или с ICO файлами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=110600#p110600" />
			<content type="html"><![CDATA[<p>Путаете буквы C и C.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2017-01-06T07:34:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=110600#p110600</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Пакетная компиляция, ошибка c INI или с ICO файлами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=110589#p110589" />
			<content type="html"><![CDATA[<p>Приветствую.</p><p>Написал я скрипт, что бы в INI-файле были все параметры необходимые для компиляции.</p><p>Вот пример файла - <strong>AsteriosGames.ini</strong>. </p><div class="codebox"><pre><code>;Определения для компиляции AsteriosGames
[Compile]
keyIN=&quot;&quot;C:\AHK\AsteriosGames\AsteriosGames.ahk&quot;&quot;
keyOUT=&quot;&quot;F:\GameS\LAII HF - Asterios\AsteriosGames.exe&quot;&quot;
keyICON=&quot;&quot;С:\AHK Compiler\ICO\LA2S2.ico&quot;&quot;
keyBIN=&quot;&quot;Unicode 64-bit.bin&quot;&quot;
keyMPRESS=&quot;&quot;1&quot;&quot;</code></pre></div><p>И сам скрипт. </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Compile.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)  
   
  FileINI :=  fnCountArgs()
  Secion  :=  &quot;Compile&quot;
  
  IniRead keyIN, %FileINI%, %Secion%, keyIN
  if (keyIN=&quot;ERROR&quot;)
      {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
              ,`n`n  Ошибка в секции %Secion% в переменной keyIN`n`n Выход из программы.
              ,30      
        Goto lEnd_AHK_Compile
      }
  
  IniRead keyOUT, %FileINI%, %Secion%, keyOUT
  if (keyOUT=&quot;ERROR&quot;)
      {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
              ,`n`n  Ошибка в секции %Secion% в переменной keyOUT`n`n Выход из программы.
              ,30      
        Goto lEnd_AHK_Compile
      }
  
  IniRead keyICON, %FileINI%, %Secion%, keyICON
  if (keyICON=&quot;ERROR&quot;)
      {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
              ,`n`n  Ошибка в секции %Secion% в переменной keyICON`n`n Выход из программы.
              ,30      
        Goto lEnd_AHK_Compile
      }  
  
  IniRead keyBIN, %FileINI%, %Secion%, keyBIN
  if (keyBIN=&quot;ERROR&quot;)
      {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
              ,`n`n  Ошибка в секции %Secion% в переменной keyBIN`n`n Выход из программы.
              ,30      
        Goto lEnd_AHK_Compile
      }  
  
  IniRead keyMPRESS, %FileINI%, %Secion%, keyMPRESS
  if (keyMPRESS=&quot;ERROR&quot;)
      {
        MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
              ,`n`n  Ошибка в секции %Secion% в переменной keyMPRESS`n`n Выход из программы.
              ,30      
        Goto lEnd_AHK_Compile
      }

  vTarget := &quot;Ahk2Exe.exe /in &quot; keyIN &quot; /out &quot; keyOUT &quot; /icon &quot; keyICON &quot; /bin &quot; keyBIN &quot; /mpress &quot; keyMPRESS
; Рабочая папка компилятора
  vWorkingDir := &quot;C:\Program Files\AutoHotkey\Compiler\&quot;
; Запуск компилятора
  Run, %vTarget% , %vWorkingDir%
; Успешная компиляция
  MsgBox % сMsgBoxInfo_Ok, Успешная компиляция
            ,`n`n  Компиляции скрипта завершена`n`n        DONE!   `n`n Выход из программы.
            ,7      
lEnd_AHK_Compile:
  ExitApp
  
fnCountArgs(){
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;
			FileSelectFile, vIniFile, 3, %A_WorkingDir%\INI, %vPrompt%, *.ini
      if (ErrorLevel = 1)
          {
            MsgBox % сMsgBoxError_Ok, Ошибка в INI - файле
            ,`n`n  Не указан ini-файл для компиляции скрипта`n Укажите ini-файл как параметр`n`n Выход из программы.
            ,30      
            ExitApp
          }	
		}
Return vIniFile
}</code></pre></div></div></div><p>В результате <strong>Ahk2Exe.exe</strong> ругается, что не может изменить ICO-файл или ICO-файл не верного формата(перевод мой).</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-05T23:45:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=110589#p110589</id>
		</entry>
</feed>
