<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Использование при подключении WSC относительного пути]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7248&amp;type=atom" />
	<updated>2012-05-31T12:43:51Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7248</id>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60611#p60611" />
			<content type="html"><![CDATA[<p>Rumata, Ваше решение довольно интересно, но оно не совсем удовлетворяет моими потребностям, если не сказать что совсем не удовлетворяет <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> возможно для кого-то это будет очень полезным...<br />Но я таки изобрел свой &quot;велосипед&quot;, уж не знаю пригодится кому ни будь или нет, но по мне так я буду пользоваться обязательно... создам как я отдельную тему по этому поводу -<br /><a href="http://forum.script-coding.com/viewtopic.php?pid=60609#p60609">http://forum.script-coding.com/viewtopi … 609#p60609</a></p>]]></content>
			<author>
				<name><![CDATA[RUVATA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28075</uri>
			</author>
			<updated>2012-05-31T12:43:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60611#p60611</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60604#p60604" />
			<content type="html"><![CDATA[<p>Вдогонку, отдельным постом. </p><p>Посмотрите на скрипт <a href="http://code.google.com/p/jsxt/source/browse/trunk/wscmd.bat">wscmd</a>. Когда-то я его уже представлял здесь, но сделал это неубедительно. Сейчас этой темы уже нет, возможно она лежит в offline-архиве. По сути - это смешанный двуязычный скрипт, который генерирует временный WSF-файл в текущем каталоге, автоматически подключает все следующие файлы из каталога, который находится рядом со скриптом wscmd и запускает результирующий WSF-файл. По окончании выполнения временный файл удаляется. <br /></p><div class="quotebox"><blockquote><p>js\*.js <br />js\win32\*.js <br />vbs\win32\*.js</p></blockquote></div><p>Пример.<br />Пусть Ваши файлы лежат в следующем порядке<br /></p><div class="quotebox"><blockquote><p>D:\scripts\wscmd.bat<br />D:\scripts\js\Network.js<br />D:\scripts\js\Utils\UniUtils.js<br />D:\project.js</p></blockquote></div><p>Если путь к wscmd.bat прописан в переменной %PATH% то Вы можете запустить скрипт так:<br /></p><div class="quotebox"><blockquote><p>wscmd project.js</p></blockquote></div><p>Посмотрите, возможно это близко к Вашим запросам. А мне будет интересно получить отзыв о его работе. Скрипт обладает еще б<span class="bbu">о</span>льшими возможностями. Почитать на корявом английском можно здесь <a href="http://code.google.com/p/jsxt/wiki/wscmd">http://code.google.com/p/jsxt/wiki/wscmd</a>.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2012-05-31T08:13:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60604#p60604</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60603#p60603" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>RUVATA пишет:</cite><blockquote><p>я хотел бы имея допустим D:\\scripts\\Network.js, которому для исполнения своего кода необходимы сущности(объекты, классы, функции) объявленные в D:\\scripts\\Utils\\UniUtils.js подключить к D:\\project.js,</p></blockquote></div><p>Я понял Вас так. Для простоты объяснения я сокращу имена скриптов до абстрактных. Есть два зависимых скрипта A.js и B.js. Надо использовать сущности скрипта A.js в проекте C.wsf. Если эти скрипты суть только объявления зависимых сущностей и не выполняют никаких других действий, кроме объявления, то порядок подключения неважен. </p><p>Пример:</p><p>A.js<br /></p><div class="codebox"><pre><code>function A()
{
    WScript.Echo(&#039;A() before&#039;);
    B();
    WScript.Echo(&#039;A() after&#039;);
};</code></pre></div><p>.<br />B.js<br /></p><div class="codebox"><pre><code>function B()
{
    WScript.Echo(&#039;B()&#039;);
};</code></pre></div><p>.<br />C.wsf<br /></p><div class="codebox"><pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;

&lt;package&gt;
&lt;job id=&quot;wscmd&quot;&gt;
&lt;?job error=&quot;false&quot; debug=&quot;false&quot; ?&gt;
&lt;script language=&quot;javascript&quot; src=&quot;.\A.js&quot;&gt;&lt;/script&gt;
&lt;script language=&quot;javascript&quot; src=&quot;.\B.js&quot;&gt;&lt;/script&gt;
&lt;script language=&quot;javascript&quot;&gt;&lt;![CDATA[

WScript.Echo(&#039;main()&#039;);
A();
B();
WScript.Echo(&#039;main() again&#039;);

]]&gt;&lt;/script&gt;
&lt;/job&gt;
&lt;/package&gt;</code></pre></div><p>.<br />Результат<br /></p><div class="quotebox"><blockquote><p>main()<br />A() before<br />B()<br />A() after<br />B()<br />main() again</p></blockquote></div><p>.<br />Видно, что модуль A.js зависит от B.js, но его &quot;объявление&quot; раньше модуля B.js. Более того. Можно было бы описать некую функцию, в основном скрипте C.wsf и заменить все вызовы WScript.Echo на вызов этой функции и это тоже работало бы. <br /></p><div class="codebox"><pre><code>function alert(msg)
{
    WScript.Echo(msg);
};</code></pre></div><p>.<br />Другое дело, если в файле A.js за пределами объявленных сущностей модуля выполняются некоторые действия с сущностями из модуля B.js. Тогда порядок важен. Возможно имеет смысл переписать файл A.js, так чтобы сохранить модульную зависимость от B.js, но действия выполнялись за пределами файла A.js.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2012-05-31T07:54:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60603#p60603</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60602#p60602" />
			<content type="html"><![CDATA[<p>[offtop]Сначала долго вчитывался в Ваш пост, и не мог понять зачем, а главное&nbsp; - кому <strong>Я</strong> это написал...<br />но потом таки заметил <strong>M</strong> в вашем нике (они у нас с Вами одной буквой отличаются) <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> а по началу принял за свой пост - и впал в 5 мин. счастливого анабиоза[/offtop]<br /></p><div class="quotebox"><blockquote><p>Вы хотели бы чтобы они все были доступны на момент разработки и Вы не думали бы - какие скрипты уже подключены к project.js</p></blockquote></div><p>Не совсем, я хотел бы имея допустим <strong>D:\\scripts\\Network.js</strong>, которому для исполнения своего кода необходимы сущности(объекты, классы, функции) объявленные в <strong>D:\\scripts\\Utils\\UniUtils.js</strong> подключить к <strong>D:\\project.js</strong>,<br />т.е. объвив в коде&nbsp; <strong>Network.js</strong><br /></p><div class="codebox"><pre><code>include(\\Utils\\UniUtils.js)</code></pre></div><p>а в коде <strong>project.js</strong><br /></p><div class="codebox"><pre><code>include(\\scripts\\Network.js)</code></pre></div><p>и все необходимые скрипты подключались бы каскадом.</p>]]></content>
			<author>
				<name><![CDATA[RUVATA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28075</uri>
			</author>
			<updated>2012-05-31T06:55:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60602#p60602</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60598#p60598" />
			<content type="html"><![CDATA[<p><strong>RUVATA</strong><br />Верно ли я понимаю, что Вы хотели бы иметь нечто следующее. </p><p>Вы работаете над разработкой некоторого скрипта, назовем его project.js. И У Вас есть набор библиотек (Ваших, найденных в сети, написанных на js или vbs, неважно), которые используются в Вашем проекте. Верно ли, что Вы не хотели бы думать о том, какие библиотеки из имеющихся у Вас могут понадобиться в данный момент, но Вы хотели бы чтобы они все были доступны на момент разработки и Вы не думали бы - какие скрипты уже подключены к project.js?</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2012-05-31T05:43:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60598#p60598</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60597#p60597" />
			<content type="html"><![CDATA[<p>каскад подключаемых библиотек - это такой механизм подключения внешнего исполняемого кода к вызывающему, при котором вызываемый код, так же может требовать подключения внешнего кода и так далее, в идеале такой механизм еще должен гарантировать загрузку лишь одного экземпляра библиотеки, даже если в процессе ветвления на неё существует несколько указателей... <br />Самый наглядный пример реализованной технологии каскада библиотек, это модульная система в <strong>Node.JS</strong> (серверный JavaScript (V8))<br />Фактически такая система отчасти реализована в <strong>Qt</strong>, особенно если работать через <strong>QtQuiсk.</strong><br />Ну и в &quot;этих ваших дот-нетах&quot; (хотя могу ошибаться) тоже вроде так и есть.</p><p>PS:Да, в сторону <strong>*.hta</strong> , <strong>*.htm</strong> я уже думал, и даже попробовал... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> но это опять же решает проблему отчасти:<br />ну да - я могу подключить скрипты... я даже в этих скриптах через <strong>eval(fso.OpenTextFile(foo).ReadAll()</strong> и <strong>абсолютные пути</strong> могу подключать другие скрипты.<br />относительные пути никак не получается использовать, так как <strong>eval</strong> будет отрабатывать в контексте это <strong>hta/htm</strong> , и соответственно все относительные пути будут отстоять от него, а не от подключаемых скриптов.</p><p>PPS: Есть правда интересные &quot;костыли&quot; - возможно реализовать некую функцию <strong>function include(){...}</strong> таким образом, чтобы при исполнении она включала в исполняемый код переменную с абсолютным путем подключаемого скрипта, как уже подсказывали который легко вычисляется (даже если используем символические), ну и собственно обвесить все скрипты которые хотелось бы подключать этой нашей чудо функцией...<br />но это сравни изобретению велосипеда, изначально не хотелось этого делать... хотя</p><p>PPPS: По поводу <strong>WSF</strong> - все очень круто (мне так сначала показалось), мало того что через тег <strong>&lt;script&gt;</strong> можно подключать скрипты, так и на разных языках ( <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> очень прельщала перспектива не переводить кучи готового <strong>VBScript</strong>-кода в <strong>JScript</strong> потому как я от <strong>VB</strong>-образных языков ухожу в уныние чуть менее чем полностью.)<br />Но таки я не нашел как можно <strong>WSF</strong> подключить к <strong>WSF</strong>, сколько я понимаю <strong>Microsoft</strong> предлагает захерачить один такой огромный <strong>WSF</strong> с кучей <strong>&lt;job&gt;</strong>-ов внутри.<br /><img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> ну я как-бэ за модульность кода - мне такой подход не по душе <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[RUVATA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28075</uri>
			</author>
			<updated>2012-05-31T04:52:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60597#p60597</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60588#p60588" />
			<content type="html"><![CDATA[<p><strong>wisgest</strong>, про «каскадировать» я и не говорил <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-05-30T18:19:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60588#p60588</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60586#p60586" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>RUVATA пишет:</cite><blockquote><p>каскадировать библиотеки (подключать скрипты которые в свою очередь сами что либо подключают</p></blockquote></div><p>Ни *.wsf, ни *.hta не позволяют что-то там каскадировать…</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-05-30T17:40:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60586#p60586</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60585#p60585" />
			<content type="html"><![CDATA[<p><strong>Rom5</strong>, WSH сие умеет «из коробки» — <a href="http://forum.script-coding.com/viewtopic.php?id=1149">WSH: пишем сценарии в формате WSF</a>:<br /></p><div class="quotebox"><blockquote><p><strong>Преимущества формата WSF</strong><br />…<br />- поддержка &quot;вложенных&quot; файлов (атрибут &quot;src&quot; тега &lt;script&gt;);<br />…</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-05-30T17:28:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60585#p60585</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60581#p60581" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>RUVATA пишет:</cite><blockquote><p>Всем доброго времени суток...<br />Имеем <strong>*.wsc</strong> (<strong>Windows Script Component</strong>) - насколько я понял, это единственный способ при работе с WSH, хотя бы как-то, худо бедно, но каскадировать библиотеки (подключать скрипты которые в свою очередь сами что либо подключают, как правило скрипты с часто используемым кодом, представленного в виде экспортируемых функций/методов)</p></blockquote></div><p>Если не столь важно работать именно с WSH, то, используя &quot;оболочку&quot; для скриптов в виде HTA-приложения, модули со своими частоиспользуемыми функциями на этапе старта HTA также можно подгружать, указав &quot;<strong>src=</strong>&quot; в теге &quot;&lt;script&gt;&quot;. Например:<br /></p><div class="codebox"><pre><code>&lt;!-- Including_user_function_(VBscript&#039;s)  --&gt;
&lt;script language=VBScript src=&quot;udf_module_1.vbs&quot;&gt;&lt;/script&gt;

&lt;!-- Including_user_function_(Jscript&#039;s)  --&gt;
&lt;script language=javascript src=&quot;udf_module_2.js&quot;&gt;&lt;/script&gt;</code></pre></div><p><em>ps.&quot;asp&quot; выбран ради подсветки:)</em></p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2012-05-30T15:45:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60581#p60581</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60576#p60576" />
			<content type="html"><![CDATA[<p><strong>RUVATA</strong>, подобную проблему вроде как должно решать размещение компонента на сетевом ресурсе.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-05-30T12:55:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60576#p60576</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60574#p60574" />
			<content type="html"><![CDATA[<p>Спасибо, этот вариант лишь частично, но все же решает проблему распространения подобных решений...</p>]]></content>
			<author>
				<name><![CDATA[RUVATA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28075</uri>
			</author>
			<updated>2012-05-30T11:44:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60574#p60574</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60572#p60572" />
			<content type="html"><![CDATA[<p>Из описания <br /></p><div class="quotebox"><blockquote><p>JScript&nbsp; <br />GetObject Function (JScript 5.6)&nbsp; </p><p>Returns a reference to an Automation object from a file. </p><p>GetObject([pathname] [, class])</p><p>Arguments<br />pathname <br />Optional. <strong>Full path and name</strong> of the file containing the object to retrieve. If pathname is omitted, class is required.<br />...</p></blockquote></div><p>Как видите - только полные путь и имя. Вы можете вычислить полный путь относительно запущенного скрипта:<br /></p><div class="codebox"><pre><code>
var dirname = WScript.ScriptFullName.replace(/[^\\]+$/, &#039;&#039;);

var objWSC = GetObject (&quot;script:&quot; + dirname + &quot;TestCOM.wsc&quot;)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2012-05-30T10:01:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60572#p60572</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Использование при подключении WSC относительного пути]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60571#p60571" />
			<content type="html"><![CDATA[<p>Всем доброго времени суток...<br />Имеем <strong>*.wsc</strong> (<strong>Windows Script Component</strong>) - насколько я понял, это единственный способ при работе с WSH, хотя бы как-то, худо бедно, но каскадировать библиотеки (подключать скрипты которые в свою очередь сами что либо подключают, как правило скрипты с часто используемым кодом, представленного в виде экспортируемых функций/методов)<br />Например:<strong>D:\SandBox\ScriptDir\wsc\TestCOM.wsc</strong><br /></p><div class="codebox"><pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;windows-1251&quot; standalone=&quot;yes&quot;?&gt;
&lt;?component error=&quot;true&quot; debug=&quot;true&quot;?&gt;
&lt;component&gt;
&lt;registration progid=&quot;TestCOM&quot;/&gt;
&lt;public&gt;
    &lt;property name=&quot;ScriptingHost&quot; internalName=&quot;WScript&quot;/&gt;
    &lt;method name=&quot;ShowMSG&quot;/&gt;
&lt;/public&gt;
&lt;script language=&quot;JScript&quot;&gt;&lt;![CDATA[
   function ShowMSG(SomeString){
        WScript.Echo(SomeString)
   };
]]&gt;&lt;/script&gt;
&lt;/component&gt;</code></pre></div><p>Ну и собственно <strong>js</strong>-скрипт который таки вышеупомянутый <strong>wsc</strong> использует<br />Например: <strong>D:\SandBox\ScriptDir\wscConnected.js</strong><br /></p><div class="codebox"><pre><code>var objWSC = GetObject (&quot;script:D:\\SandBox\\ScriptDir\\wcs\\TestCOM.wsc&quot;)
objWSC.ScriptingHost = WScript
objWSC.ShowMSG(&#039;Hello from TestCOM.wsc !&#039;)</code></pre></div><p>Так, вот мой вопрос к коллективному разуму, заключается в следующем:<br />Можно ли при обращении к объекту из скрипта как либо использовать относительный путь?<br />применимо к данной ситуации что-то вроде::<br /></p><div class="codebox"><pre><code>var objWSC = GetObject (&quot;script:wsc\\TestCOM.wsc&quot;)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[RUVATA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28075</uri>
			</author>
			<updated>2012-05-30T09:46:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60571#p60571</id>
		</entry>
</feed>
