{"id":232341,"date":"2014-08-05T18:21:03","date_gmt":"2014-08-05T14:21:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=232341"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=232341","title":{"rendered":"<span class=\"post_title\">\u041a\u0430\u043a \u044f \u0441\u0442\u0435\u043d\u0434 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0441 windows \u043d\u0430 wine \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b<\/span>"},"content":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/files\/23b\/519\/e38\/23b519e38cd94ec8a2ee411d1d86b648.png\" alt=\"image\" align=\"left\" width=\"350\"\/>  <\/p>\n<h4>\u041f\u0440\u0435\u0430\u043c\u0431\u0443\u043b\u0430<\/h4>\n<p>  \u0415\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0421++, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e \u043f\u043e \u043c\u0435\u0440\u0435 \u0441\u0438\u043b. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u2014 \u0432 \u0447\u0435\u043c \u0436\u0435 \u0434\u0435\u043b\u043e? \u0423\u0432\u044b, \u044d\u0442\u043e \u043f\u0430\u0447\u043a\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u043e\u0434 \u043c\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 Adobe InDesign.<\/p>\n<p>  \u0418 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u043e\u0432\u044b\u0439 Creative Suite, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e. \u0427\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0443\u0441\u0438\u043b\u0438\u044f \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e \u043d\u043e\u0432\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u0438 \u043f\u043e\u0434\u043e\u0433\u043d\u0443\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440. \u041f\u043e\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u0443\u0436 \u0435\u0441\u043b\u0438 \u0434\u043e\u0448\u0435\u043b \u0434\u043e \u0441\u0442\u0430\u0434\u0438\u0438 \u00ab\u043e\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u00bb, \u0442\u043e \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0425\u043e\u0442\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441\u044b \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 PlaceGun \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u043e\u0435. \u041d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u2014 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437.<\/p>\n<p>  \u0418 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u2014 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u044d\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0434 \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0432\u0441\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0437\u0430 \u0440\u0430\u0437, \u0430 \u043d\u0435 <i>\u00ab\u043e\u0442\u043a\u0440\u044b\u043b \u0432\u0438\u0436\u043b\u0443 \u2014 \u0441\u043e\u0431\u0440\u0430\u043b \u2014 \u0437\u0430\u043a\u0440\u044b\u043f \u2014 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b\u00bb<\/i>. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b <b>\u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/b><\/p>\n<ul>\n<li>MS VS 2005<\/li>\n<li>MS VS 2005 sp1<\/li>\n<li>MS VS 2008<\/li>\n<li>MS VS 2010<\/li>\n<li>MS VS 2012<\/li>\n<\/ul>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/files\/ba1\/0ed\/db2\/ba10eddb2b95494387f35776c8c90270.png\" alt=\"image\" align=\"left\" width=\"350\"\/>  <\/p>\n<h4>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 gmake \u2014 \u043f\u0440\u043e\u0444\u0438\u0442<\/h4>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a? \u0410\u0445, \u044f \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043b \u2014 \u0435\u0449\u0435 \u0435\u0441\u0442\u044c MacOSX. \u0422\u0430\u043a \u0447\u0442\u043e <s>\u043f\u0440\u043e\u0449\u0430\u0439 nmake<\/s> \u0431\u0435\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432. <\/p>\n<p>  \u0418 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0448\u043c\u0430\u0440:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>cl-cs3.mak<\/li>\n<li>cl-cs4.mak<\/li>\n<li>cl-cs5.mak<\/li>\n<li>cl-cs55.mak<\/li>\n<li>cl-cs6.mak<\/li>\n<li>cl-cc.mak<\/li>\n<li>cl-cc2014.mak<\/li>\n<li>cl.mak<\/li>\n<li>commplugs.mak<\/li>\n<li>gcc-cs3.mak<\/li>\n<li>gcc-cs4.mak<\/li>\n<li>gcc-cs5.mak<\/li>\n<li>gcc-cs55.mak<\/li>\n<li>gcc-cs6.mak<\/li>\n<li>gcc-cc.mak<\/li>\n<li>gcc-cc2014.mak<\/li>\n<li>gcc.mak<\/li>\n<li>mac-defs.mak<\/li>\n<li>platform-impl.mak<\/li>\n<li>platform-targets.mak<\/li>\n<li>platform.mak<\/li>\n<li>win-defs.mak<\/li>\n<\/ol>\n<p>  <\/div>\n<\/div>\n<p>  \u0410 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"bash\">make ARCH=x64 INDVER=cc2014 compile <\/code><\/pre>\n<p>  \u0427\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 uname. \u0410 \u043a\u0430\u0436\u0434\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043a\u0430\u043a make -C foo.<\/p>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>include ..\/..\/make\/platform.mak  TARGET=..\/..\/..\/lib\/$(ARCH)\/$(INDD)\/libz.$(LibSuffix)  OBJS=\\     $(ARCH)\/$(INDD)\/adler32.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/compress.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/crc32.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/deflate.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/gzio.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/infback.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/inffast.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/inflate.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/inftrees.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/trees.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/uncompr.$(OBJSuffix) \\     $(ARCH)\/$(INDD)\/zutil.$(OBJSuffix) \\  all: $(TARGET)  $(TARGET): $(OBJS) \t $(AR) $(LFLAGS) $(OBJS)  clean:  \t$(RMRF) $(TARGET) $(OBJS) <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0418 \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435 \u043f\u043e\u0434 WinXP (\u0438 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434 \u0445\u0430\u043a\u0438\u043d\u0442\u043e\u0448\u0435\u043c).<\/p>\n<p>  \u0420\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u0442\u0440\u0430\u0441\u0442\u0438 \u043e\u0442 \u0438 \u0434\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u043a\u0430\u043a \u0431\u044b \u043d\u0435 \u0432\u0438\u0436\u0443, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c project root \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f:<\/p>\n<pre><code>PR:=$(subst make\/,,$(dir $(CURDIR)\/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))) OSA:=$(shell uname -o)  ifeq (Darwin,$(OSA)) OS=mac else OS=win endif <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c Boost (\u0430\u0434\u043e\u0431\u044b \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u043c\u0443\u0434\u0440\u044f\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0438\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0443\u0442 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438 \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043c\u0430\u043a\u0440\u043e\u0441 \u0438 \u043f\u043e\u0442\u043e\u043c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c):  <\/p>\n<pre><code>ifeq ($(ARCH),x86) BoostARCH=32 else BoostARCH=64 endif BoostLib=$(subst \\,\/,$(AdobeSDK))\/external\/dva\/third_party\/boost_libraries\/bin.v2\/libs\/boost_$1\/lib\/$(OS)\/release\/$(BoostARCH)\/boost_$1.$(LibSuffix)  BoostFilesystemLib=$(call BoostLib,filesystem) BoostThreadLib=$(call BoostLib,threads) BoostRegexLib=$(call BoostLib,regex) BoostSystemLib=$(call BoostLib,system) <\/code><\/pre>\n<p>  \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u043b \u044f \u044d\u0442\u043e \u043d\u0435 \u0440\u0443\u043a\u0430\u043c\u0438, \u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0430\u0447\u043a\u0443 \u0431\u0430\u0442\u043d\u0438\u043a\u043e\u0432, \u0434\u0430 \u043f\u043e\u0434 MinGW:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">genmake-for-dll.bat component-name [path-to-sources [target-directory]]<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"dos\">@echo off rem genmake component-name [path-to-sources [target-directory]] set CN=%1 set FP=%2 if -%1==- set CN=default if -%2==- set FP=. if -%3==- set TD=. echo&gt;  MakeF COMPONENT=%CN% echo&gt;&gt; MakeF include ..\/make\/platform.mak echo&gt;&gt; MakeF TARGET=$(OBJDIR)\/$(COMPONENT).$(DLLSuffix) echo&gt;&gt; MakeF OBJS=\\ find %FP% -type f -name '*.c*' | grep -v .svn | awk '{ print &quot;\\t$(OBJDIR)\/&quot; $1 &quot;.$(OBJSuffix)\\t\\\\\\&quot;; }' | sed -e 's\/\\.cpp\\.\/\\.\/' | sed -e 's\/\\.cxx\\.\/\\.\/' | sed -e 's?\/%FP%??' &gt;&gt; MakeF echo&gt;&gt; MakeF # echo&gt;&gt; MakeF HEADERS=\\ find %FP% -type f -name '*.h*' | grep -v .svn | awk '{ print &quot;\\t&quot; $1 &quot;\\t\\\\\\&quot;; }' &gt; headers  &gt;&gt; MakeF echo&gt;&gt; MakeF # echo&gt;&gt; MakeF # echo&gt;&gt; MakeF all: $(TARGET) echo&gt;&gt; MakeF # echo&gt;&gt; MakeF $(TARGET): $(OBJS) echo&gt;&gt; MakeF \t$(LINK) $(LDFLAGS) $(OBJS) $(XLIBS) echo&gt;&gt; MakeF\tif [ -f $@.manifest ] ; then mt -nologo -manifest $@.manifest &quot;-outputresource:$@;2&quot;; fi echo&gt;&gt; MakeF # echo&gt;&gt; MakeF clean: echo&gt;&gt; MakeF \trm -f $(TARGET) $(OBJS) echo&gt;&gt; MakeF # find %FP% -type f -name '*.c*' | grep -v .svn | awk '{ print &quot;$(OBJDIR)\/&quot; $1 &quot;.$(OBJSuffix) : &quot; $1 &quot; $(HEADERS)\\n\\t$(CC) $(CFLAGS) &quot; $1 &quot;\\n&quot;; }' | sed -e 's\/.cpp.\/.\/' | sed -e 's\/\\.cxx\\.\/\\.\/' | sed -e 's?\/%FP%\/?\/?' &gt;&gt; MakeF echo&gt;&gt; MakeF #EOF mv MakeF Makefile <\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">genmake-for-lib.dll component-name [path-to-sources [target-directory]]<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>@echo off rem genmake component-name [path-to-sources [target-directory]] set CN=%1 set FP=%2 if -%1==- set CN=default if -%2==- set FP=. if -%3==- set TD=. echo&gt;  MakeF COMPONENT=%CN% echo&gt;&gt; MakeF include ..\/make\/platform.mak echo&gt;&gt; MakeF TARGET=$(OBJDIR)\/lib$(COMPONENT).$(LibSuffix) echo&gt;&gt; MakeF OBJS=\\ find %FP% -type f -name '*.c*' | grep -v .svn | awk '{ print &quot;\\t$(OBJDIR)\/&quot; $1 &quot;.$(OBJSuffix)\\t\\\\\\&quot;; }' | sed -e 's\/\\.cpp\\.\/\\.\/' | sed -e 's\/\\.cxx\\.\/\\.\/' | sed -e 's?\/%FP%??' &gt;&gt; MakeF echo&gt;&gt; MakeF # echo&gt;&gt; MakeF HEADERS=\\ find %FP% -type f -name '*.h*' | grep -v .svn | awk '{ print &quot;\\t&quot; $1 &quot;\\t\\\\\\&quot;; }' &gt; headers  &gt;&gt; MakeF echo&gt;&gt; MakeF # echo&gt;&gt; MakeF # echo&gt;&gt; MakeF $(TARGET): $(OBJS) echo&gt;&gt; MakeF \t$(AR) $(LFLAGS) $(OBJS) echo&gt;&gt; MakeF # echo&gt;&gt; MakeF clean: echo&gt;&gt; MakeF \trm -f $(TARGET) $(OBJS) echo&gt;&gt; MakeF # find %FP% -type f -name '*.c*' | grep -v .svn | awk '{ print &quot;$(OBJDIR)\/&quot; $1 &quot;.$(OBJSuffix) : &quot; $1 &quot; $(HEADERS)\\n\\t$(CC) $(CFLAGS) &quot; $1 &quot;\\n&quot;; }' | sed -e 's\/.cpp.\/.\/' | sed -e 's\/\\.cxx\\.\/\\.\/' | sed -e 's?\/%FP%\/?\/?' &gt;&gt; MakeF echo&gt;&gt; MakeF #EOF mv MakeF Makefile <\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">genmake-for-indd.bat plugin-name [path-to-sources [target-directory]]<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>@echo off setlocal rem genmake plugin-name [path-to-sources [target-directory]] set CN=%1 set FP=%2 if -%1==- set CN=plugin if -%2==- set FP=. if -%3==- set TD=. echo&gt;  MakeF COMPONENT=%CN% echo&gt;&gt; MakeF include ..\/make\/platform.mak echo&gt;&gt; MakeF PluginName=$(COMPONENT) echo&gt;&gt; MakeF TARGET_DIR=$(OBJDIR)\/$(PluginPrefix) echo&gt;&gt; MakeF TARGET=$(TARGET_DIR)\/$(PluginName)$(PluginSuffix) echo&gt;&gt; MakeF CFLAGS+=-I ..\/common echo&gt;&gt; MakeF LIBS+=$(call add_component_ref,vl) $(call add_component_ref,common) echo&gt;&gt; MakeF OBJS=\\ find %FP% -type f -name '*.c*' | grep -v .svn | awk '{ print &quot;\\t$(OBJDIR)\/&quot; $1 &quot;.$(OBJSuffix)\\t\\\\\\&quot;; }' | sed -e 's\/\\.cpp\\.\/\\.\/' | sed -e 's\/\\.cxx\\.\/\\.\/' | sed -e 's?\/%FP%??' &gt;&gt; MakeF echo&gt;&gt; MakeF     $(COMMON_PLUGIN_OBJS) echo&gt;&gt; MakeF # echo&gt;&gt; MakeF HEADERS=\\ find %FP% -type f -name '*.h*' | grep -v .svn | awk '{ print &quot;\\t&quot; $1 &quot;\\t\\\\\\&quot;; }' &gt; headers  &gt;&gt; MakeF echo&gt;&gt; MakeF # echo&gt;&gt; MakeF # echo&gt;&gt; MakeF ifeq (win,$(OS)) echo&gt;&gt; MakeF OBJS+= $(OBJDIR)\/$(COMPONENT).res echo&gt;&gt; MakeF FRES_TGT=$(OBJDIR)\/$(COMPONENT)_w.$(FRES) echo&gt;&gt; MakeF else echo&gt;&gt; MakeF FRES_TGT=$(OBJDIR)\/R\/$(COMPONENT)_w.$(FRES) echo&gt;&gt; MakeF endif echo&gt;&gt; MakeF # echo&gt;&gt; MakeF ifeq (mac,$(OS)) echo&gt;&gt; MakeF ifeq (x64,$(ARCH)) echo&gt;&gt; MakeF TARGET:= echo&gt;&gt; MakeF endif echo&gt;&gt; MakeF endif echo&gt;&gt; MakeF # echo&gt;&gt; MakeF all: $(TARGET) echo&gt;&gt; MakeF # echo&gt;&gt; MakeF clean: echo&gt;&gt; MakeF \trm -rf $(TARGET) $(OBJS) $(TARGET_DIR)\/* echo&gt;&gt; MakeF # echo&gt;&gt; MakeF # echo&gt;&gt; MakeF $(TARGET): $(OBJS) $(LIBS) $(FRES_TGT) echo&gt;&gt; MakeF \t$(LINK) $(LDFLAGS) $(LDFLAGS_InDesignPlugin) $(OBJS) $(LIBS) $(AdobeLIBS) $(XLIBS) echo&gt;&gt; MakeF # echo&gt;&gt; MakeF # echo&gt;&gt; MakeF ifeq ($(OS),win) echo&gt;&gt; MakeF $(OBJDIR)\/$(COMPONENT)_w.$(FRES): $(COMPONENT).fr echo&gt;&gt; MakeF \t$(ODFRC) $(ODFRCFLAGS) -o $(call unix_to_dos,$(OBJDIR)\/$(COMPONENT)_w.$(FRES)) $(COMPONENT).fr echo&gt;&gt; MakeF # echo&gt;&gt; MakeF $(OBJDIR)\/$(COMPONENT).res: $(COMPONENT).rc $(OBJDIR)\/$(COMPONENT)_w.$(FRES) echo&gt;&gt; MakeF \t$(RSC)  $(RSCFLAGS) $(CFLAGS_INCLUDE) $(COMPONENT).rc echo&gt;&gt; MakeF \t$(AdobeSDK)\\devtools\\bin\\merge_res.cmd $(call unix_to_dos,$(OBJDIR)) $(COMPONENT) $(COMPONENT)_w echo&gt;&gt; MakeF \tmkdir -p &quot;$(TARGET_DIR)\/($(PluginName) Resources)&quot; echo&gt;&gt; MakeF \tcp -r $(OBJDIR)\/idrc_* &quot;$(TARGET_DIR)\/($(PluginName) Resources)&quot; echo&gt;&gt; MakeF endif echo&gt;&gt; MakeF ifeq ($(OS),mac) echo&gt;&gt; MakeF $(OBJDIR)\/R\/$(COMPONENT)_w.$(FRES): $(COMPONENT).fr echo&gt;&gt; MakeF \tmkdir -p $(TARGET_DIR)\/Resources echo&gt;&gt; MakeF \tmkdir -p $(OBJDIR)\/R echo&gt;&gt; MakeF \t$(ODFRC) $(ODFRCFLAGS) $(CFLAGS_IXA_OF) -o $@ $(COMPONENT).fr echo&gt;&gt; MakeF \t\/Developer\/Tools\/ResMerger -dstIs DF $@ -o $(OBJDIR)\/$(PluginName).$(FRES) echo&gt;&gt; MakeF \t\/Developer\/Tools\/ResMerger $(OBJDIR)\/$(PluginName).$(FRES) -dstIs DF -o $(TARGET_DIR)\/Resources\/$(PluginName).rsrc echo&gt;&gt; MakeF \tcp -r $(OBJDIR)\/R\/idrc_* Info.plist $(TARGET_DIR)\/Resources echo&gt;&gt; MakeF \t( cd $(TARGET_DIR)\/..; ln -s A Current ; cd .. ; ln -s Versions\/Current\/Resources Resources ; ln -s Versions\/Current\/$(PluginName) $(PluginName) ) echo&gt;&gt; MakeF endif echo&gt;&gt; MakeF include ..\/make\/commplugs.mak echo&gt;&gt; MakeF # echo&gt;&gt; MakeF # find %FP% -type f -name '*.c*' | grep -v .svn | awk '{ print &quot;$(OBJDIR)\/&quot; $1 &quot;.$(OBJSuffix) : &quot; $1 &quot; $(HEADERS)\\n\\t$(CC) $(CFLAGS) &quot; $1 &quot;\\n&quot;; }' | sed -e 's\/.cpp.\/.\/' | sed -e 's\/\\.cxx\\.\/\\.\/' | sed -e 's?\/%FP%\/?\/?' &gt;&gt; MakeF echo&gt;&gt; MakeF #EOF rem mv MakeF Makefile endlocal <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/files\/9ae\/d24\/3d4\/9aed243d48fd4fd4abd9f63ead0bed5e.png\" alt=\"image\" align=\"left\" width=\"350\"\/>  <\/p>\n<h4>\u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0435\u0449\u0430\u043b\u043e, \u0438 \u0430\u0433\u0430<\/h4>\n<p>  \u0418 \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0434\u043e \u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u044b\u0448\u0435\u043b Adobe InDesign CC 2014. \u0418 \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u0432\u0438\u0436\u0443\u0430\u043b\u0441\u0442\u0443\u0434\u0438\u044e 2012. \u0412\u043e\u0442 \u0442\u0443\u0442-\u0442\u043e \u0431\u0435\u043b\u044b\u0439 \u043f\u0443\u0448\u043d\u043e\u0439 \u0437\u0432\u0435\u0440\u044c \u043a\u0430\u0430\u043a \u0432\u044b\u043f\u0440\u044b\u0433\u043d\u0443\u043b! <\/p>\n<p>  \u041d\u0435\u0442, \u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0432\u0438\u0436\u0443\u0430\u043b\u0441\u0442\u0443\u0434\u0438\u044f \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 <i>\u0425\u0420\u044e\u0448\u0435<\/i>. \u041d\u043e \u0432\u043e\u0442 \u0442\u043e \u0447\u0442\u043e cl.exe \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f <i>not valid Win32 image<\/i> \u2014 \u044d\u0442\u043e \u0431\u044b\u043b \u0443\u0434\u0430\u0440.<\/p>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u044e \u2014 \u0435\u0449\u0435 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d \u0434\u0432\u0443\u0445 \u0432\u0438\u0436\u0443\u0430\u043b\u0441\u0442\u0443\u0434\u0438\u0439 2005 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043f\u0430\u043a\u043e\u043c \u0438 \u0431\u0435\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u043f\u0430\u043a\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043d\u0430 \u0431\u0438\u043b\u0434 \u043c\u0430\u0448\u0438\u043d\u043a\u0443 \u044f \u043d\u0438\u0447\u0435\u0433\u043e \u0447\u0435\u0441\u0442\u043d\u043e \u043d\u0435 \u0441\u0442\u0430\u0432\u043b\u044e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0447\u0438\u0441\u0442\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0442\u0430\u0432\u043b\u044e \u0432\u0438\u0436\u0443\u0430\u043b\u0441\u0442\u0443\u0434\u0438\u044e express edition, \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 platform sdk, \u0438 \u0442\u043e \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c (\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u043e \u0447\u0438\u0441\u0442\u043e\u0435 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435) \u043a\u043e\u043f\u0438\u0440\u0443\u044e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043f\u0430\u043f\u043e\u0447\u043a\u0443. \u0410 \u0432\u0438\u0440\u0442\u0438\u0443\u0430\u043b\u043a\u0443 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0434\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u00ab\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e\u00bb.<\/p>\n<p>  \u0418 \u0440\u0430\u0437 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440 2012 \u0441\u0442\u0443\u0434\u0438\u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u043f\u043e\u043d\u043e\u0432\u0435\u0435 \u2014 \u043d\u0435 \u0432\u043e\u043f\u0440\u043e\u0441, \u0432\u043e\u0442 \u0432\u0430\u043c Windows 8.1. \u041b\u044e\u0431\u043e\u0439 \u043a\u0430\u043f\u0440\u0438\u0437 \u2014 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u043e\u0444\u0442 \ud83d\ude09 <\/p>\n<p>  \u0421\u0442\u0430\u0432\u043b\u044e, \u043a\u043e\u043f\u0438\u0440\u0443\u044e \u2014 \u043e\u043f\u0430\u043d\u044c\u043a\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/files\/95e\/5d2\/606\/95e5d2606311473498f8db8e7e58e2a8.png\" alt=\"image\" width=\"350\" align=\"left\"\/>  <\/p>\n<h4>\u041c\u0435\u0441\u044c\u0435 \u0437\u043d\u0430\u0435\u0442 \u0442\u043e\u043b\u043a \u0432 \u0438\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f\u0445<\/h4>\n<p>  \u0418 \u0442\u0443\u0442 \u0432\u0441\u0442\u0430\u043b \u0441\u0443\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u043b\u044b \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c?<\/p>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0435\u043c\u043d\u043e\u0433\u043e.<\/p>\n<ol>\n<li>\u041f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438 \u043e\u0431\u0436\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u043f\u043e\u0434 Windows 8.1, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 MinGW \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0438\u043d\u0434\u0435\u0437\u0438\u0433\u043d\u0430\u043c\u0438. \u0418 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0434\u043e \u2014 \u043e\u043d\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u0435\u0441\u0442\u044c, \u043d\u043e \u043b\u0435\u0436\u0430\u0442 \u0432 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445. \u0414\u043e\u043b\u0433\u043e \u0438 \u043d\u0443\u0434\u043d\u043e.<\/li>\n<li>\u041f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0430\u043c\u0430\u0437\u043e\u043d\u043e\u0432\u043e \u043e\u0431\u043b\u0430\u043a\u043e \u2014 \u043d\u0430 w2k12, \u0445\u0432\u0430\u0442\u0438\u0442 \u043d\u0430\u0434\u043e\u043b\u0433\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e. \u041d\u043e \u0441\u043d\u043e\u0432\u0430 \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u0434\u043e\u043b\u0433\u043e \u0438 \u043d\u0443\u0434\u043d\u043e. \u0418 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043d\u0430\u043a\u043e\u043f\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043a\u043e\u043f\u0438\u0438 \u2014 25 \u0433\u0438\u0433\u043e\u0432 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c. \u041b\u0435\u043d\u0438\u0432\u043e.<\/li>\n<li>\u0418\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c.<\/li>\n<\/ol>\n<p>  \u041f\u043e\u0447\u0435\u0441\u0430\u043b \u044f \u043c\u0430\u043a\u043e\u0432\u043a\u0443, \u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u2014 <i>\u0430 \u043f\u0443\u0440\u043a\u0443\u0430 \u0431\u044b \u043d\u0435 \u043f\u0430<\/i>? \u0412\u0435\u0434\u044c \u0445\u043e\u0441\u0442\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u043e\u043f\u0435\u043d\u0441\u0443\u0441\u044c \u0441\u0442\u043e\u0438\u0442.<\/p>\n<p>  \u041d\u0430\u0431\u0438\u0440\u0430\u044e   <\/p>\n<pre><code class=\"bash\">wine \u0433\u0434\u0435-\u0442\u0430\u043c-\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b-2012-\u0441\u0442\u0443\u0434\u0438\u044e\\vc\\bin\\cl.exe \/help <\/code><\/pre>\n<p>  \u0438 \u043e\u043d\u043e \u0442\u0430\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  <i> \u2014 \u0410\u0433\u0430! \u2014 \u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u0441\u0443\u0440\u043e\u0432\u044b\u0435 \u0441\u0438\u0431\u0438\u0440\u0441\u043a\u0438\u0435 \u043c\u0443\u0436\u0438\u043a\u0438.<\/i><\/p>\n<p>  \u041d\u0435 \u0431\u0435\u0437 \u0433\u0440\u0430\u0431\u043b\u0435\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u043e\u0448\u043b\u043e \u2014 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0442 \u0432\u0438\u0436\u0443\u0430\u043b\u0441\u0442\u0443\u0434\u0438\u0439\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0432 \u0432\u0430\u0439\u043d\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a\u0438\u0435. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u0443 \u0432\u0438\u0436\u0443\u0430\u043b\u0441\u0442\u0443\u0434\u0438\u0438 \u0435\u0441\u0442\u044c \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0435, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e \u043f\u0430\u043f\u043e\u0447\u043a\u0430\u043c \u0432\u0438\u0436\u0443\u0430\u043b\u0441\u0442\u0443\u0434\u0438\u0438.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0447\u0442\u043e \u0443\u0434\u0438\u0432\u0438\u043b\u043e, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 mt.exe \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u043f\u0430\u0434\u0430\u043b, \u043d\u043e \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u043b SIGSEGV \u0443 wine. \u0428\u0430\u043c\u0430\u043d\u0441\u0442\u0432\u043e \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0434\u0430\u043b\u043e, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e-\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c \u0441 \u043f\u043e\u044d\u0442\u0435\u0441\u0441\u0430\u043c\u0438.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>#include &lt;windows.h&gt;  #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt;  #include &lt;io.h&gt; #include &lt;fcntl.h&gt; #include &lt;sys\/types.h&gt; #include &lt;sys\/stat.h&gt;  static void usage() { \tprintf(&quot;Usage: mt.exe -manifest foo.dll.manifest -outputresource:foo.dll[;2]\\n&quot;); }  static void alert(char* fn, char* msg, int code) {     static char* lpstrError;     FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |  FORMAT_MESSAGE_ALLOCATE_BUFFER,          NULL, GetLastError(), LANG_USER_DEFAULT, &lpstrError, 1, NULL);     fprintf(stderr, &quot;%s: %s: %s, %d\\n&quot;, fn, msg, lpstrError, code);     LocalFree(lpstrError); }  static int update_res(char* ou, int resk, char* mf) { \tHANDLE hUpdateRes; \tLPVOID buf; \tBOOL result; \tFILE* fp; \tstruct _stat st; \tint ressz = 0, outk;  \tfp = fopen(mf, &quot;rb&quot;); \tif(!fp) { \t\talert(mf, &quot;could not open manifest file&quot;, errno); \t\treturn 2; \t}  \tif(_fstat( fileno(fp), &st) != 0) { \t\tfclose(fp); \t\talert(mf, &quot;could not determine manifest file size&quot;, errno); \t\treturn 2; \t}  \tressz = st.st_size; \tbuf = (void*)malloc(ressz); \tif(!buf) { \t\tfclose(fp); \t\tfree(buf); \t\talert(mf, &quot;could not allocate buffer for resource&quot;, ressz); \t\treturn 2; \t} \t \toutk = fread(buf, 1, ressz, fp); \tif(outk != ressz) { \t\tfclose(fp); \t\tfree(buf); \t\talert(mf, &quot;could not read manifest&quot;, ressz - outk); \t\treturn 2; \t} \tfclose(fp);  \thUpdateRes = BeginUpdateResourceA(ou, FALSE); \tif (hUpdateRes == NULL) { \t\tfree(buf); \t    alert(ou, &quot;Could not open file for writing.&quot;, 0);     \treturn 3; \t}  \tresult = UpdateResourceA(hUpdateRes,     \tRT_MANIFEST,     \tMAKEINTRESOURCE(resk),     \tMAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),     \tbuf,     \tressz);  \tif (result == FALSE) { \t\talert(ou, &quot;could not add resource&quot;, 0); \t\tfree(buf);     \treturn 4; \t}  \tif (!EndUpdateResource(hUpdateRes, FALSE)) {     \talert(ou, &quot;could not write changes to file&quot;, 0); \t\tfree(buf);     \treturn 4; \t} \tfree(buf);     return 0; }  int main(int argc, char** argv) { \tchar* mf = NULL; \tchar* ou = NULL; \tchar* v; \tint resk = 1; \tint k;  \tif(argc &lt; 2) { \t\tusage(); \t\treturn 2; \t}  \tfor(k=1; k &lt; argc; ++k) { \t\tif(argv[k][0] == '-') { \t\t\tif(argv[k][1] =='m') { \/\/ manifest \t\t\t\tmf = argv[k+1]; \t\t\t\t++k; \t\t\t\tcontinue; \t\t\t} \t\t\telse if(argv[k][1] == 'o' ) { \/\/ outputresource \t\t\t\tif(argv[k+1])  \t\t\t\t\tou = argv[k+1]; \t\t\t\telse { \t\t\t\t\tou = strchr(argv[k], ':'); \t\t\t\t\tif(!ou) { \t\t\t\t\t\tusage(); \t\t\t\t\t\treturn 3; \t\t\t\t\t} \t\t\t\t\t++ou; \t\t\t\t} \t\t\t\t++k; \t\t\t\tv = strchr(ou, ';'); \t\t\t\tif(v) { \t\t\t\t\tresk = atoi(v + 1); \t\t\t\t\t*v = '\\0'; \t\t\t\t} \t\t\t\telse \t\t\t\t\tresk = 1; \t\t\t\tcontinue; \t\t\t} \t\t} \t\tusage(); \t\treturn 2; \t}  \tif(!mf || !ou) { \t\tusage(); \t\treturn 2; \t}  \treturn update_res(ou, resk, mf); } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0410 \u0432\u043e\u0442 InnoSetup \u043f\u0440\u043e\u0442\u0438\u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0439 \u2014 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432 \u043d\u0435 \u043f\u0440\u0438\u043d\u0435\u0441, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043e \u0441\u0432\u0438\u0441\u0442\u043e\u043c.<\/p>\n<p>  \u041f\u043e\u043a\u0430 \u2014 \u0442\u0430\u043a, \u0430 \u0434\u0430\u043b\u0435\u0435 \u043f\u043e\u0435\u0434\u0443 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e, \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0437\u0440\u0435\u043b.<\/p>\n<p>  \u041d\u043e \u0432\u0441\u0435 \u0436\u0435 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u2014 \u0432\u0434\u0440\u0443\u0433 \u044f \u0447\u0435\u0433\u043e \u0443\u043f\u0443\u0441\u043a\u0430\u044e, \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f\u2026      \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/232341\/\"> http:\/\/habrahabr.ru\/post\/232341\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/files\/23b\/519\/e38\/23b519e38cd94ec8a2ee411d1d86b648.png\" alt=\"image\" align=\"left\" width=\"350\"\/>  <\/p>\n<h4>\u041f\u0440\u0435\u0430\u043c\u0431\u0443\u043b\u0430<\/h4>\n<p>  \u0415\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0421++, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e \u043f\u043e \u043c\u0435\u0440\u0435 \u0441\u0438\u043b. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u2014 \u0432 \u0447\u0435\u043c \u0436\u0435 \u0434\u0435\u043b\u043e? \u0423\u0432\u044b, \u044d\u0442\u043e \u043f\u0430\u0447\u043a\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u043e\u0434 \u043c\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 Adobe InDesign.<\/p>\n<p>  \u0418 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u043e\u0432\u044b\u0439 Creative Suite, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e. \u0427\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0443\u0441\u0438\u043b\u0438\u044f \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e \u043d\u043e\u0432\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u0438 \u043f\u043e\u0434\u043e\u0433\u043d\u0443\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440. \u041f\u043e\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u0443\u0436 \u0435\u0441\u043b\u0438 \u0434\u043e\u0448\u0435\u043b \u0434\u043e \u0441\u0442\u0430\u0434\u0438\u0438 \u00ab\u043e\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u00bb, \u0442\u043e \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0425\u043e\u0442\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441\u044b \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 PlaceGun \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u043e\u0435. \u041d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u2014 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437.<\/p>\n<p>  \u0418 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u2014 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u044d\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0434 \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0432\u0441\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0437\u0430 \u0440\u0430\u0437, \u0430 \u043d\u0435 <i>\u00ab\u043e\u0442\u043a\u0440\u044b\u043b \u0432\u0438\u0436\u043b\u0443 \u2014 \u0441\u043e\u0431\u0440\u0430\u043b \u2014 \u0437\u0430\u043a\u0440\u044b\u043f \u2014 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b\u00bb<\/i>. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b <b>\u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/b><\/p>\n<ul>\n<li>MS VS 2005<\/li>\n<li>MS VS 2005 sp1<\/li>\n<li>MS VS 2008<\/li>\n<li>MS VS 2010<\/li>\n<li>MS VS 2012<\/li>\n<\/ul>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-232341","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/232341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=232341"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/232341\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=232341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=232341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=232341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}