<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Пакетный FileInstall]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=13279</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=13279&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Пакетный FileInstall».]]></description>
		<lastBuildDate>Sat, 09 Dec 2017 08:33:51 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122110#p122110</link>
			<description><![CDATA[<div class="quotebox"><cite>Mambr пишет:</cite><blockquote><p><strong>serzh82saratov</strong>, не понял. Немного подробнее, если можно ...</p></blockquote></div><div class="codebox"><pre><code>
#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
ListLines Off
SetBatchLines -1

ScriptName = Script.ahk  ;	скрипт который будем компилировать
IncludeName = FileInstallInclude.ahk

  ;	File на примере - D:\Folder1\Folder2 после указываем | Dest
  ;	Dest - если `%A_Temp`%\MyFolder, то распакуется по пути  - %A_Temp%\MyFolder
  ;	Знаки процента надо экранировать
  ;	Dest - если пусто, то распакуется по такому же пути - D:\Folder1\Folder2
  ;	Вместо папки можно добавить файл
  
List = 
( 
%A_ScriptDir% | MyFolder
)
	
Loop, Parse, List, `n
{
	File := StrSplit(A_LoopField, &quot;|&quot;, A_Space A_Tab)[1]
	Dest := StrSplit(A_LoopField, &quot;|&quot;, A_Space A_Tab)[2] 
	isFolder := InStr(FileExist(File), &quot;D&quot;) ? &quot;\*.*&quot; : &quot;&quot;
	Loop, %File%%isFolder%, , 1
	{
		If (Dest = &quot;&quot;)
			Add := A_LoopFileLongPath
		Else
			Add := Dest . StrReplace(A_LoopFileLongPath, File, &quot;&quot;, , 1) 
		SplitPath, Add, , Dir
		DirList0 .= Dir &quot;`n&quot;
		IncludeList .= &quot;FileInstall`, &quot; A_LoopFileLongPath &quot;`, &quot; Add &quot;`, 1`n&quot;
	}
}
Sort, DirList0, U`n
DirList0 := RegExReplace(DirList0,&quot;sm`a)^(.+)\\.*\K^\1(\R|$)|^(.+)(\R|$)(?=.*^\3\\)&quot;)  ;	http://forum.script-coding.com/viewtopic.php?pid=113785#p113785
Loop, Parse, % Trim(DirList0, &quot;`n&quot;), `n
	DirList .= &quot;FileCreateDir`, &quot; A_LoopField &quot;`n&quot;
FileDelete, %IncludeName% 
FileAppend, % DirList . IncludeList, % IncludeName
MsgBox % DirList . IncludeList
RunWait Ahk2Exe.exe /in %ScriptName%
FileDelete, %IncludeName%
ExitApp
Escape:: ExitApp
</code></pre></div><p>В начало скрипта добавляем #Include *i:</p><div class="codebox"><pre><code>#Include *i %A_ScriptDir%\FileInstallInclude.ahk</code></pre></div><p>И зачем так сделано, что FileInstall сам не создаёт папки в которые будет извлекать файлы...</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 09 Dec 2017 08:33:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122110#p122110</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122104#p122104</link>
			<description><![CDATA[<p>Да, я только для друга делаю, а он у меня один.<br />В общем, варианты есть, теперь надо выбрать &quot;для самых ленивых&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Sat, 09 Dec 2017 04:06:47 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122104#p122104</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122103#p122103</link>
			<description><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>чем устанавливать каждому.</p></blockquote></div><p>Так речь шла об одном человеке. Поэтому проще установить.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 09 Dec 2017 04:03:09 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122103#p122103</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122101#p122101</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Не проще ли вам установить ему автохотки и тогда разницы с экзешником он не заметит - так же тыкнул мышью и все заработало.</p></blockquote></div><p>Вероятно, так и придется сделать. Уже задумывался над этим вопросом. Сегодня пойду ему винду переустанавливать, и поставлю AHK, чтоб он мне мозг не выносил ... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Sat, 09 Dec 2017 03:50:24 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122101#p122101</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122100#p122100</link>
			<description><![CDATA[<p>Инсталлер отличается только тем, что появляются записи в реестре и прогу можно удалить из &quot;Мои программы&quot;. Такое можно тоже сделать на ahk - <a href="https://github.com/stealzy/VirusTotalHashChecker">пример</a>.<br />А в архив и так можно сжать.</p>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Sat, 09 Dec 2017 03:46:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122100#p122100</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122099#p122099</link>
			<description><![CDATA[<div class="quotebox"><cite>Mambr пишет:</cite><blockquote><p>Он не понимает, что такое скрипт и как его съесть. Для него exe - это понятная штука - клацнул мышой и все заработало!</p></blockquote></div><p>Не проще ли вам установить ему автохотки и тогда разницы с экзешником он не заметит - так же тыкнул мышью и все заработало.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 09 Dec 2017 03:44:47 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122099#p122099</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122097#p122097</link>
			<description><![CDATA[<p>Иногда, когда очень большая лень, я делаю инсталлеры с помощью HaoZip - SFX.<br />Он жмет в 7zip - очень плотно и линки делает где надо. А еще можно один и тот-же готовый инсталлер использовать до бесконечности.<br />HaoZip открывает exe - удаляю содержимое, заливаю нужные файлы и редактирую инфу в свойтвах - название, где линки делать и прочую лабуду.</p><p>FileCreateShortcut я тоже иногда использую ...</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Sat, 09 Dec 2017 03:38:17 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122097#p122097</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122096#p122096</link>
			<description><![CDATA[<p>Зачем? При первом запуске создаются ярлыки и все. А как вы сами запускаете свой скрипт, каждый раз лазиете в папку, где он находится?<br /></p><div class="codebox"><pre><code>If !FileExist(A_ScriptDir &quot;\My.ini&quot;)
    FileCreateShortcut, &quot;%A_AHKPath%&quot;, %A_Desktop%\MyScript.lnk, &quot;%A_ScriptDir%&quot;, &quot;%A_ScriptFullPath%&quot;,, %A_ScriptDir%\resource\My.ico</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Sat, 09 Dec 2017 03:27:37 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122096#p122096</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122095#p122095</link>
			<description><![CDATA[<p>Но тогда придется делать инсталлер ...</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Sat, 09 Dec 2017 03:21:02 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122095#p122095</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122094#p122094</link>
			<description><![CDATA[<p>В подпапку, разумеется. myPicPath := A_ScriptDir &quot;\resource\pic.png&quot;. Да и вообще, для пользователя обычно создают ярлыки в меню пуск и на стол.</p>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Sat, 09 Dec 2017 03:18:34 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122094#p122094</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122093#p122093</link>
			<description><![CDATA[<p><strong>stealzy</strong>, благодарю за инфу! Я действительно не знал это. Очень полезная штука!<br />Но вопрос еще и в том, куда засунуть доп. файлы, чтобы не было &quot;большой кучи всего&quot;.<br />И что б по-быстрому все было ... Ведь как известно - лень - двигатель прогресса! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Sat, 09 Dec 2017 03:12:14 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122093#p122093</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122084#p122084</link>
			<description><![CDATA[<p><strong>Mambr</strong>, вы как и большинство не в курсе простого способа распространения:<br />переименовываем интерпретатор AutoHotkey.exe по имени вашего скрипта и засовываем в одну с ним папку. При запуске ехе будет автоматически запускаться одноименный ahk.</p>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Fri, 08 Dec 2017 22:32:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122084#p122084</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122082#p122082</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, не понял. Немного подробнее, если можно ...</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Fri, 08 Dec 2017 20:55:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122082#p122082</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122081#p122081</link>
			<description><![CDATA[<p>Создайте в папке некомпилированного скрипта с #Include *i , скрипт для создания Include, в нём перечень папок, он их обработает, создаст Include с кучей FileInstall, запустит компилятор, удалит Include.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 08 Dec 2017 20:20:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122081#p122081</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Пакетный FileInstall]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=122080#p122080</link>
			<description><![CDATA[<p>Иногда даю скрипты своему другу, а AHK у него не установлен, потому приходится компилить, да и чайник он в компах.<br />Он не понимает, что такое скрипт и как его съесть. Для него exe - это понятная штука - клацнул мышой и все заработало! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> <br />Для создания установщиков я использую Advanced installer. Он мне больше нравиться.<br />Просто иногда не хочется возиться с созданием инсталллеров, а куча дополнительных файлов тоже вроде как не комильфо.<br />Использовать для распаковки &quot;чужеродный&quot; скрипт тоже не хочется ...</p><p>Я тут набросок сделал одной схемы, пока еще не опробовал:</p><div class="codebox"><pre><code>
SrcArch := A_ScriptDir &quot;\SrcArch.zip&quot;
SrcDir := A_ScriptDir &quot;\&quot; ; извлечечь в данную директорию
InsDir := A_ScriptDir &quot;\SrcDir&quot; ; директория с доп. файлами

If !FileExist(InsDir) {
	FileInstall SrcArch.zip, % SrcArch, 1
	UnZip(SrcArch, SrcDir)
	}
Return

UnZip(SrcArch, SrcDir) {
	psh := ComObjCreate(&quot;Shell.Application&quot;)
	psh.Namespace(SrcDir).CopyHere(psh.Namespace(SrcArch).items, 4|16)
}
</code></pre></div><p>как-то так ... Нужно, чтобы zip&#039;ированный файл тоже не валялся рядом, добавить еще FileDelete *.zip после распаковки.<br />Возможно надо еще допиливать, т.к. это просто схема.</p><p>Хотел узнать, может есть более &quot;элегантные&quot; решения ...</p>]]></description>
			<author><![CDATA[null@example.com (Mambr)]]></author>
			<pubDate>Fri, 08 Dec 2017 19:38:17 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=122080#p122080</guid>
		</item>
	</channel>
</rss>
