<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9087075508981084919</id><updated>2026-10-09T13:24:14.671+03:00</updated><category term="C#"/><category term="mobile"/><category term="compact framework"/><category term="control"/><category term="j2me"/><category term="java"/><category term="example"/><category term="windows"/><category term="code"/><category term="asp.net"/><category term="dot net"/><category term="html"/><category term="javascript"/><category term="php"/><category term="string"/><category term="windows mobile"/><category term="device"/><category term="form"/><category term="install"/><category term="win forms"/><category term="wince"/><category term="winforms"/><category term="winmobile"/><category term=".net"/><category term="installed"/><category term="midp"/><category term="mysql"/><category term="process"/><category term="source code"/><category term="sql"/><category term="window"/><category term="windows vista"/><category term="Auto size"/><category term="IA64"/><category term="browser"/><category term="c++"/><category term="check"/><category term="columns"/><category term="compare tables"/><category term="excel"/><category term="function"/><category term="installer"/><category term="label"/><category term="manage windows"/><category term="program"/><category term="sample"/><category term="select"/><category term="setup"/><category term="setup project"/><category term="sql server"/><category term="validation"/><category term="visual studio"/><category term="win7"/><category term="x64"/><category term="x86"/><category term="Autosize"/><category term="Excel 2003"/><category term="ajax"/><category term="algorithem"/><category term="blackberry"/><category term="button"/><category term="cldc"/><category term="convertion"/><category term="cookies"/><category term="date"/><category term="delete"/><category term="download"/><category term="file"/><category term="framework 2.0"/><category term="image"/><category term="image processing"/><category term="images"/><category term="input"/><category term="itanium"/><category term="jar"/><category term="join"/><category term="merge"/><category term="msi"/><category term="nsis"/><category term="redistributable"/><category term="registry"/><category term="remove"/><category term="session"/><category term="sort"/><category term="string format"/><category term="substring_index"/><category term="table"/><category term="text"/><category term="uninstall"/><category term="version"/><category term="versioning"/><category term="visual c++"/><category term="wap"/><category term="web"/><category term="web control"/><category term="webbrowser"/><category term="windows 7"/><category term="windows form"/><category term="winvista"/><category term="winxp"/><category term="xhtml"/><category term="xml"/><category term="4.7"/><category term="6.0"/><category term="AutoCompleteExtender"/><category term="BannerBitmap"/><category term="Bootstrapper"/><category term="CustomItem"/><category term="Excel 2007"/><category term="INT"/><category term="LTR"/><category term="Left to Right"/><category term="Microsoft"/><category term="Microsoft Visual SourceSafe"/><category term="OpenType"/><category term="PINVOKE"/><category term="PostScript"/><category term="RDA"/><category term="Reflection"/><category term="Remote Data Access"/><category term="Right to Left"/><category term="SMALLINT"/><category term="SimpleXMLElement"/><category term="SplashBitmap"/><category term="TINYINT"/><category term="Thread"/><category term="UAC"/><category term="Visual C++ 2008 SP1"/><category term="Visual SourceSafe"/><category term="adjust width"/><category term="adobe"/><category term="algo"/><category term="algorithm"/><category term="align"/><category term="all users"/><category term="android"/><category term="angle"/><category term="applications"/><category term="arguments"/><category term="array"/><category term="attach window"/><category term="auto size label"/><category term="background"/><category term="banner"/><category term="benchmark"/><category term="better"/><category term="binary search"/><category term="bit"/><category term="bitwise"/><category term="bootstraper"/><category term="border"/><category term="bubblesort"/><category term="bypass"/><category term="bypass hosts"/><category term="byte"/><category term="c sharp"/><category term="canvas"/><category term="center"/><category term="center label"/><category term="centos"/><category term="cheking"/><category term="chrome"/><category term="class"/><category term="clear"/><category term="clear cookies"/><category term="clone"/><category term="color"/><category term="combine"/><category term="command line"/><category term="compare"/><category term="compare schemas"/><category term="component"/><category term="computer"/><category term="convert"/><category term="cookie"/><category term="copy"/><category term="country"/><category term="crop"/><category term="current user"/><category term="database"/><category term="datatable"/><category term="date input"/><category term="date-range"/><category term="date-ranges"/><category term="daterange"/><category term="dateranges"/><category term="debug"/><category term="debugger"/><category term="delete all session"/><category term="delete cookies"/><category term="delimited"/><category term="delimiter"/><category term="deskew"/><category term="destroy"/><category term="destroy session"/><category term="determine"/><category term="device info"/><category term="dllimport"/><category term="dotnet"/><category term="double"/><category term="dropdown"/><category term="elavation"/><category term="embed"/><category term="empty"/><category term="ensure single instance"/><category term="everyone"/><category term="expert"/><category term="explorer"/><category term="extension"/><category term="extractvalue"/><category term="fast"/><category term="faster"/><category term="firefox"/><category term="flags"/><category term="flash"/><category term="font"/><category term="fontawesome"/><category term="fonts"/><category term="format"/><category term="fpdf"/><category term="free"/><category term="free font"/><category term="free javascript obfuscator"/><category term="free obfuscator"/><category term="freejsobfuscator"/><category term="get"/><category term="get device id"/><category term="get device info"/><category term="get device name"/><category term="get version"/><category term="group_concat"/><category term="hosts"/><category term="html table"/><category term="id"/><category term="ie7"/><category term="imap"/><category term="information"/><category term="instr"/><category term="iso2"/><category term="iso3"/><category term="israel"/><category term="israeli id"/><category term="jad"/><category term="java me"/><category term="javascript obfuscator"/><category term="jquery"/><category term="js"/><category term="just me"/><category term="key press"/><category term="language"/><category term="library"/><category term="link"/><category term="list"/><category term="listview"/><category term="location"/><category term="login problem"/><category term="lwuit"/><category term="macromedia"/><category term="maximized"/><category term="median"/><category term="method"/><category term="mid"/><category term="minimized"/><category term="module"/><category term="monitor"/><category term="netbeans"/><category term="nsDialogs"/><category term="nth element"/><category term="object"/><category term="open"/><category term="operation"/><category term="optimize"/><category term="os"/><category term="package"/><category term="paint"/><category term="parameters"/><category term="pdf"/><category term="php-module"/><category term="picture"/><category term="picturebox"/><category term="pin"/><category term="player"/><category term="plugin"/><category term="png"/><category term="position"/><category term="post"/><category term="post build"/><category term="programmatically"/><category term="read info"/><category term="remote"/><category term="remove cookies"/><category term="remove sessions"/><category term="replace"/><category term="restrict"/><category term="rim"/><category term="running"/><category term="runtime"/><category term="script"/><category term="scroll"/><category term="search"/><category term="selectbox"/><category term="selectedIndex"/><category term="selectedValue"/><category term="seperated"/><category term="serialize"/><category term="sessions"/><category term="short"/><category term="short id"/><category term="sign problem"/><category term="single instance"/><category term="skype"/><category term="skype for windows"/><category term="skype stuck on loading screen"/><category term="slider"/><category term="smart"/><category term="solution"/><category term="solved"/><category term="sp1"/><category term="speed"/><category term="splash"/><category term="split"/><category term="stored-procedure"/><category term="string replace"/><category term="style"/><category term="sync"/><category term="synchronization"/><category term="synchronize"/><category term="textbox"/><category term="transparent"/><category term="transparent label"/><category term="unique"/><category term="unix"/><category term="upload"/><category term="vcredist"/><category term="vss"/><category term="web service"/><category term="webservice. asp.net"/><category term="win8"/><category term="windows 8"/><category term="windows installer"/><category term="windows xp"/><category term="windows7"/><category term="xml attribute"/><category term="xml content"/><category term="xml node"/><category term="xpath"/><category term="zip"/><title type='text'>MDB Blog</title><subtitle type='html'>My Development Blog!&#xa;Information and code samples/examples on: Compact Framework using C#, J2ME using java, Web development using ASP.NET, Windows Forms on C# and other special tricks at excel, word. enjoy...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>67</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-4505652969096804838</id><published>2022-12-06T11:05:00.007+02:00</published><updated>2022-12-06T11:07:08.217+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="benchmark"/><category scheme="http://www.blogger.com/atom/ns#" term="better"/><category scheme="http://www.blogger.com/atom/ns#" term="faster"/><category scheme="http://www.blogger.com/atom/ns#" term="instr"/><category scheme="http://www.blogger.com/atom/ns#" term="mid"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="optimize"/><category scheme="http://www.blogger.com/atom/ns#" term="speed"/><category scheme="http://www.blogger.com/atom/ns#" term="substring_index"/><title type='text'>MySQL: SUBSTRING_INDEX vs MID+INSTR (which is better)</title><content type='html'>&lt;div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Hello there.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;SUBSTRING_INDEX vs MID+INSTR &lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;I wanted to pull from domain name out of an email (or just remove the username part of an email).&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;There are two simple functions (and even more...) to do it:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;1] &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring-index&quot; target=&quot;_blank&quot;&gt;SUBSTRING_INDEX&lt;/a&gt;(&#39;testuser@domain.com&#39;,&#39;@&#39;,-1)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;use built in function &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring-index&quot; target=&quot;_blank&quot;&gt;SUBSTRING_INDEX&lt;/a&gt; to explode the string by &#39;@&#39; and get the last element.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;b&gt;2] &lt;a href=&quot;https://dev.mysql.com/doc/refman/en/string-functions.html#function_mid&quot; target=&quot;_blank&quot;&gt;MID&lt;/a&gt;(&#39;testuser@domain.com&#39;, &lt;a href=&quot;https://dev.mysql.com/doc/refman/en/string-functions.html#function_instr&quot; target=&quot;_blank&quot;&gt;INSTR&lt;/a&gt;(&#39;testuser@domain.com&#39;,&#39;@&#39;)+1, 999)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;find &#39;@&#39; position using &lt;a href=&quot;https://dev.mysql.com/doc/refman/en/string-functions.html#function_instr&quot; target=&quot;_blank&quot;&gt;INSTR&lt;/a&gt; and get all string from that position until the end of string by &lt;a href=&quot;https://dev.mysql.com/doc/refman/en/string-functions.html#function_mid&quot; target=&quot;_blank&quot;&gt;MID&lt;/a&gt; function.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;But which one of them have better performance? &lt;/b&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Using &lt;/span&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/en/select-benchmarking.html&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;/span&gt;BENCHMARK&lt;/a&gt; function for Measuring the Speed of Expressions and Functions.&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;1] SELECT&amp;nbsp; &lt;a href=&quot;https://dev.mysql.com/doc/refman/en/select-benchmarking.html&quot; target=&quot;_blank&quot;&gt;BENCHMARK&lt;/a&gt;(100000000,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring-index&quot; target=&quot;_blank&quot;&gt;SUBSTRING_INDEX&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;(&#39;testuser@domain.com&#39;,&#39;@&#39;,-1))&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;/* Affected rows: 0&amp;nbsp; Found rows: 1&amp;nbsp; Warnings: 0&amp;nbsp; &lt;span style=&quot;background-color: #fcff01;&quot;&gt;Duration for 1 query: 12.625 sec.&lt;/span&gt; */&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;2] SELECT&amp;nbsp; &lt;a href=&quot;https://dev.mysql.com/doc/refman/en/select-benchmarking.html&quot; target=&quot;_blank&quot;&gt;BENCHMARK&lt;/a&gt;(100000000, &lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/en/string-functions.html#function_mid&quot; target=&quot;_blank&quot;&gt;MID&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;(&#39;testuser@domain.com&#39;, &lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/en/string-functions.html#function_instr&quot; target=&quot;_blank&quot;&gt;INSTR&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;(&#39;testuser@domain.com&#39;,&#39;@&#39;)+1, 999))&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;/* Affected rows: 0&amp;nbsp; Found rows: 1&amp;nbsp; Warnings: 0&amp;nbsp; &lt;span style=&quot;background-color: #fcff01;&quot;&gt;Duration for 1 query: 19.157 sec.&lt;/span&gt; */&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/en/select-benchmarking.html&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;/span&gt;BENCHMARK&lt;/a&gt; function results may vary between different devices, but on the same device can give quite clear results.&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Summary:&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring-index&quot; target=&quot;_blank&quot;&gt;SUBSTRING_INDEX&lt;/a&gt; won and have better results than &lt;a href=&quot;https://dev.mysql.com/doc/refman/en/string-functions.html#function_mid&quot; target=&quot;_blank&quot;&gt;MID&lt;/a&gt; + &lt;a href=&quot;https://dev.mysql.com/doc/refman/en/string-functions.html#function_instr&quot; target=&quot;_blank&quot;&gt;INSTR&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/4505652969096804838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2022/12/mysql-substringindex-vs-mid-instr-which.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/4505652969096804838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/4505652969096804838'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2022/12/mysql-substringindex-vs-mid-instr-which.html' title='MySQL: SUBSTRING_INDEX vs MID+INSTR (which is better)'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-7096575199901613265</id><published>2022-07-11T10:33:00.007+03:00</published><updated>2022-07-11T10:33:44.777+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ajax"/><category scheme="http://www.blogger.com/atom/ns#" term="empty"/><category scheme="http://www.blogger.com/atom/ns#" term="form"/><category scheme="http://www.blogger.com/atom/ns#" term="get"/><category scheme="http://www.blogger.com/atom/ns#" term="input"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="post"/><category scheme="http://www.blogger.com/atom/ns#" term="select"/><category scheme="http://www.blogger.com/atom/ns#" term="serialize"/><title type='text'>JQuery serialize on form is EMPTY (ajax/post/get)</title><content type='html'>&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;Hi All,&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;I had several times a problem, that the collected data by jQuery API&#39;s &lt;a href=&quot;https://api.jquery.com/serialize/&quot; target=&quot;_blank&quot;&gt;serialize()&lt;/a&gt; or &lt;a href=&quot;https://api.jquery.com/serializeArray/&quot; target=&quot;_blank&quot;&gt;serializeArray()&lt;/a&gt; &lt;b&gt;was empty&lt;/b&gt;, although the inputs were not empty.&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;Follow these checkups to by pass the problem.&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;1] when the input don&#39;t &lt;b&gt;name attribute &lt;/b&gt;the result will be empty.&lt;/p&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;form&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;form1&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;value=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;test value&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;button&amp;gt;&lt;/span&gt;submit&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&lt;span class=&quot;message-body devtools-monospace&quot;&gt;&lt;span class=&quot;cm-variable&quot;&gt;//$&lt;/span&gt;(&lt;span class=&quot;cm-string&quot;&gt;&#39;#form1&#39;&lt;/span&gt;).&lt;span class=&quot;cm-property&quot;&gt;serialize&lt;/span&gt;()&lt;/span&gt;  ==&amp;gt; &quot;&quot; (empty)&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;b&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;b&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;SOLUTION:&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;form&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;form1&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;value=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;test value&quot; &lt;/span&gt;&lt;span style=&quot;background-color: #fcff01;&quot;&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;value=&lt;/span&gt;&quot;ANYNAME&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;button&amp;gt;&lt;/span&gt;submit&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&lt;span class=&quot;message-body devtools-monospace&quot;&gt;&lt;span class=&quot;cm-variable&quot;&gt;//$&lt;/span&gt;(&lt;span class=&quot;cm-string&quot;&gt;&#39;#form1&#39;&lt;/span&gt;).&lt;span class=&quot;cm-property&quot;&gt;serialize&lt;/span&gt;()&lt;/span&gt;  ==&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&lt;span class=&quot;message-body devtools-monospace&quot;&gt;&lt;span class=&quot;objectBox objectBox-string&quot;&gt;&quot;ANYNAME=test+value&quot;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;2] when the input &lt;b&gt;is DISABLED &lt;/b&gt;the result will be empty.&lt;/div&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;form&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;form1&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;value=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;test value&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;name=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;ANYNAME&quot;&lt;/span&gt; &lt;span style=&quot;background-color: #fcff01;&quot;&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;disabled=&lt;/span&gt;&quot;true&quot;&lt;/span&gt; &lt;span style=&quot;color: #007700;&quot;&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;button&amp;gt;&lt;/span&gt;submit&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&lt;span class=&quot;message-body devtools-monospace&quot;&gt;&lt;span class=&quot;cm-variable&quot;&gt;//$&lt;/span&gt;(&lt;span class=&quot;cm-string&quot;&gt;&#39;#form1&#39;&lt;/span&gt;).&lt;span class=&quot;cm-property&quot;&gt;serialize&lt;/span&gt;()&lt;/span&gt;  ==&amp;gt; &quot;&quot; (empty)&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;NOTE: sometimes the inputs are disabled upon form submit (loader shown),&amp;nbsp;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;and while calling &lt;a href=&quot;https://api.jquery.com/serialize/&quot; target=&quot;_blank&quot;&gt;serialize&lt;/a&gt;/&lt;a href=&quot;https://api.jquery.com/serializeArray/&quot; target=&quot;_blank&quot;&gt;serializeArray&lt;/a&gt; the disabled inputs (selects/...) are ignored and empty values received.&lt;br /&gt;&lt;/div&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&amp;nbsp;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;span class=&quot;message-body-wrapper&quot;&gt;&lt;span class=&quot;message-flex-body&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;3] make sure your form&#39;s HTML is well formatted. broken HTML code might hurt functionality.&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;HOPE HELPED HERE :)&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre dir=&quot;ltr&quot; style=&quot;line-height: 125%; margin: 0px; text-align: left;&quot;&gt;&lt;/pre&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/7096575199901613265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2022/07/jquery-serialize-on-form-is-empty.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7096575199901613265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7096575199901613265'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2022/07/jquery-serialize-on-form-is-empty.html' title='JQuery serialize on form is EMPTY (ajax/post/get)'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-8040939397401740762</id><published>2021-12-12T10:04:00.010+02:00</published><updated>2021-12-15T08:42:05.570+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="4.7"/><category scheme="http://www.blogger.com/atom/ns#" term="download"/><category scheme="http://www.blogger.com/atom/ns#" term="font"/><category scheme="http://www.blogger.com/atom/ns#" term="fontawesome"/><category scheme="http://www.blogger.com/atom/ns#" term="fonts"/><category scheme="http://www.blogger.com/atom/ns#" term="fpdf"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="free font"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenType"/><category scheme="http://www.blogger.com/atom/ns#" term="pdf"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="PostScript"/><title type='text'>using FontAwesome in PHP FPDF </title><content type='html'>&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;Hi All,&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;I found it impossible to use &lt;a href=&quot;https://fontawesome.com/v4.7.0/&quot; target=&quot;_blank&quot;&gt;FontAwesome 4.7.0 Free version&lt;/a&gt;, inside &lt;a href=&quot;http://www.fpdf.org/&quot;&gt;FPDF PHP&lt;/a&gt; engine.&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;When trying to upload the &lt;b&gt;FontAwesome.4.7.full.otf &lt;/b&gt;into &lt;a href=&quot;http://www.fpdf.org/makefont/&quot; target=&quot;_blank&quot;&gt;FPDF&#39;s Font File Generation&lt;/a&gt;, I&#39;m getting an error:&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;&lt;b&gt;Error&lt;/b&gt;: OpenType fonts based on PostScript outlines are not supported&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;So my solution,&amp;nbsp;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;to re-build the FontAwesome font 4.7 free version (under same license!),&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;with mapping of regular characters to icons HEX CODES: 0x21 to 0xFF.&amp;nbsp;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;So for example,&amp;nbsp;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;character code 0x21 is now mapped to * (&lt;a href=&quot;https://fontawesome.com/v4.7/icon/asterisk&quot; target=&quot;_blank&quot;&gt;FontAwesome&#39;s asterisk&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;And then, just use it inside PHP FPDF as follows:&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;// Import and prepare font for usage by engine:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$pdf-&amp;gt;AddFont(&#39;FontAwesome47-P1&#39;,&#39;&#39;,&#39;FontAwesome47-P1.php&#39;);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;// print FontAwesome&#39;s asterisk&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span&gt;&lt;span&gt;$pdf-&amp;gt;SetFont(&#39;FontAwesome47-P1&#39; &#39;&#39;, 14);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$pdf-&amp;gt;Text($x, $y, chr(0x21));&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;Note:&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;Remember to upload the files FontAwesome47-P1.php + FontAwesome47-P1.z, &lt;br /&gt;that generated on &lt;a href=&quot;http://www.fpdf.org/makefont/&quot; target=&quot;_blank&quot;&gt;FPDF&#39;s Font File Generation&lt;/a&gt; to the FPDF&#39;s font folder.&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;Characters code MAP of new fonts exists as preview when opening the google-drive links below.&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;View MAP + DOWNLOAD: &lt;/b&gt;&lt;a href=&quot;https://drive.google.com/file/d/1Y3NlxBZtXPcFUIwiLeQWzdzdoSe9f6xo/view?usp=sharing&quot; style=&quot;font-weight: bold;&quot; target=&quot;_blank&quot;&gt;FontAwesome47-P1.otf (google drive)&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;View MAP +&amp;nbsp;&lt;/b&gt;&lt;b&gt;DOWNLOAD&lt;/b&gt;&lt;b&gt;:&amp;nbsp;&lt;/b&gt;&lt;a href=&quot;https://drive.google.com/file/d/1XjjEyhkcD0mO6FTf0w9XHB4bwjMCL2ij/view?usp=sharing&quot; style=&quot;font-weight: bold;&quot; target=&quot;_blank&quot;&gt;FontAwesome47-P2.otf (google drive)&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;View MAP +&amp;nbsp;&lt;/b&gt;&lt;b&gt;DOWNLOAD&lt;/b&gt;&lt;b&gt;:&amp;nbsp;&lt;/b&gt;&lt;a href=&quot;https://drive.google.com/file/d/10WBuA63DMbNPRWjKSKJpVSk4I1OPwh2R/view?usp=sharing&quot; style=&quot;font-weight: bold;&quot; target=&quot;_blank&quot;&gt;FontAwesome47-P3.otf (google drive)&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;View MAP +&amp;nbsp;&lt;/b&gt;&lt;b&gt;DOWNLOAD&lt;/b&gt;&lt;b&gt;:&amp;nbsp;&lt;/b&gt;&lt;a href=&quot;https://drive.google.com/file/d/1lPeh5IGXY8Re6nNXEU7i0Wf63o97Svx0/view?usp=sharing&quot; style=&quot;font-weight: bold;&quot; target=&quot;_blank&quot;&gt;FontAwesome47-P4.otf (google drive)&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;PHP+Z Files ready-to-use for PHP FPDF (with&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;text-align: right;&quot;&gt;&lt;b&gt;ISO-8859-1 encoding):&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-align: right;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://drive.google.com/file/d/1BjPTWGKBFyjwyYaYwa7myBQd2uikiWEn/view?usp=sharing&quot; target=&quot;_blank&quot;&gt;FontAwesome47-P1-4 (php+z files) DOWNLOAD (google drive)&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;Best regards!&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;Please write comments...&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/8040939397401740762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2021/12/using-fontawesome-in-php-fpdf.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/8040939397401740762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/8040939397401740762'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2021/12/using-fontawesome-in-php-fpdf.html' title='using FontAwesome in PHP FPDF '/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-5276059556206297573</id><published>2021-10-17T15:13:00.000+03:00</published><updated>2021-10-17T15:13:02.626+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="combine"/><category scheme="http://www.blogger.com/atom/ns#" term="INT"/><category scheme="http://www.blogger.com/atom/ns#" term="join"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="SMALLINT"/><category scheme="http://www.blogger.com/atom/ns#" term="TINYINT"/><title type='text'>MySQL | join/combine 2 SMALLINT/TINYINT into 1 INT</title><content type='html'>
        &lt;div style=&quot;direction:ltr;line-height:1.4;text-align:left&quot;&gt;
            Hi All.&lt;br /&gt;
            &lt;br /&gt;
            Today we will try to combine two MYSQL small integer values into one integer value.&lt;br /&gt;
            Obviously, there is limit for the size of integer.&lt;br /&gt;
            We will discuss only UNSIGNED integer column types (non negative values).&lt;br/&gt; 
            &lt;br /&gt;
            2 Solutions are suggested below:&lt;br /&gt;
            &lt;b&gt;Solution-1:&lt;/b&gt;
            concatenate base-9 value of each number with &#39;9&#39; separator.&lt;br /&gt;
            &lt;b&gt;Solution-2:&lt;/b&gt;
            concatenate the original values with padding (left) zeros.&lt;br /&gt;
            [Note: if the values allowed to be NULL, solution-2 is not supported!].
            &lt;h3&gt;# LIMITS #&lt;/h3&gt;
            First, lets learn about the range limits of each data-type:
            &lt;table border=&quot;1&quot; cellpadding=&quot;5&quot; style=&quot;border-collapse:collapse&quot;&gt;
                &lt;tr&gt;&lt;th&gt;Datatype&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;UNSIGNED Range&lt;/th&gt;&lt;th&gt;Max value (base9)&lt;/th&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-weight:bold;color:#437ac7;&quot;&gt;INT&lt;/span&gt;&lt;/td&gt;&lt;td&gt;A normal-size integer&lt;/td&gt;&lt;td&gt;0 to 4294967295&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-weight:bold;color:#437ac7;&quot;&gt;SMALLINT&lt;/span&gt;&lt;/td&gt;&lt;td&gt;A small integer&lt;/td&gt;&lt;td&gt;0 to 65535&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;padding:2px 4px;font-size:80%;color:#c7254e;background-color:#f9f2f4;border-radius:4px;line-height:2;&quot;&gt;CONV(65535, 10, 9) = 108806&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-weight:bold;color:#437ac7;&quot;&gt;TINYINT&lt;/span&gt;&lt;/td&gt;&lt;td&gt;A very small integer&lt;/td&gt;&lt;td&gt;0 to 255&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;padding:2px 4px;font-size:80%;color:#c7254e;background-color:#f9f2f4;border-radius:4px;line-height:2;&quot;&gt;CONV(255, 10, 9) = 313&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;/table&gt;
            &lt;h3&gt;# SOLUTION-1 (Support NULL values) #&lt;/h3&gt;
            Combine and merge two small integers, &lt;br /&gt;
            into 1 integer by converting each number to base-9 integer,&lt;br /&gt;
            and then concatenate with the digit &#39;9&#39; as separator.&lt;br /&gt;
            &lt;br /&gt;
            Two SMALLINTs cannot be saved inside INT value: &lt;br /&gt; 108806&lt;b&gt;9&lt;/b&gt;108806 &gt; 4294967295.&lt;br /&gt;
            But combining SMALLINT with TINYINT is possible (and aswell two TINYINT).&lt;br /&gt;
            &lt;br /&gt;
            MYSQL CODE:&lt;br /&gt;
            &lt;pre style=&quot;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px;line-height:2;&quot;&gt;
############ TABLE DEFINITION:
CREATE TABLE `table_test` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`sint1` SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
`tint2` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE);

############ SELECT:
SELECT  T.*, 
        CONV(SUBSTRING_INDEX(combined,&#39;9&#39;,1), 9,10) as _sint1, 
        CONV(SUBSTRING_INDEX(combined,&#39;9&#39;,-1),9,10) as _tint2
FROM (
	SELECT 	id, sint1, tint2, 
                CONCAT( IFNULL(CONV(sint1, 10, 9),&#39;&#39;), 
                        &#39;9&#39;, 
                        IFNULL(CONV(tint2, 10, 9),&#39;&#39;)
                ) AS combined
	FROM table_test
) AS T

            &lt;/pre&gt;&lt;br /&gt;
            And output will be:&lt;br /&gt;
            &lt;table border=&quot;1&quot; cellpadding=&quot;5&quot; style=&quot;border-collapse:collapse&quot;&gt;
                &lt;tr&gt;&lt;th&gt;id&lt;/th&gt;&lt;th&gt;sint1&lt;/th&gt;&lt;th&gt;tint2&lt;/th&gt;&lt;th&gt;&lt;span style=&quot;color:#a00&quot;&gt;&amp;gt;combined&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;span style=&quot;color:#00a&quot;&gt;&amp;gt;_sint1&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;span style=&quot;color:#00a&quot;&gt;&amp;gt;_tint2&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;9&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;NULL&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;NULL&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1234&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;16219&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;1234&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;NULL&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;255&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;9313&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;NULL&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;255&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;3123&lt;/td&gt;&lt;td&gt;38&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;4250942&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3123&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;38&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;3410&lt;/td&gt;&lt;td&gt;243&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;46089300&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3410&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;243&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;2685&lt;/td&gt;&lt;td&gt;207&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;36139250&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2685&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;207&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;1327&lt;/td&gt;&lt;td&gt;224&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;17349268&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;1327&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;224&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;2047&lt;/td&gt;&lt;td&gt;102&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;27249123&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2047&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;102&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;2953&lt;/td&gt;&lt;td&gt;189&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;40419230&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2953&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;189&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;3686&lt;/td&gt;&lt;td&gt;117&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;50459140&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3686&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;117&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;4455&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;6100920&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;4455&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;18&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;2482&lt;/td&gt;&lt;td&gt;66&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;3357973&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2482&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;66&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;3072&lt;/td&gt;&lt;td&gt;74&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;4183982&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3072&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;74&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;2036&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;2712946&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2036&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;42&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;2047&lt;/td&gt;&lt;td&gt;139&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;27249164&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2047&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;139&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;1573&lt;/td&gt;&lt;td&gt;236&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;21379282&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;1573&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;236&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;2464&lt;/td&gt;&lt;td&gt;173&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;33379212&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2464&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;173&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;3656&lt;/td&gt;&lt;td&gt;155&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;50129182&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3656&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;155&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;3305&lt;/td&gt;&lt;td&gt;120&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;44729143&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3305&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;120&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;5894&lt;/td&gt;&lt;td&gt;121&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;80689144&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;5894&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;121&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;/table&gt;

            &lt;br/&gt;
            &lt;h3&gt;# SOLUTION-2 (NULLS not supported) #&lt;/h3&gt;
            Here we just merge the original values with LEFT-PADDING of zeros.&lt;br /&gt;
            &lt;br /&gt;
            MYSQL CODE:&lt;br /&gt;
            &lt;pre style=&quot;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px;line-height:2;&quot;&gt;
############ TABLE DEFINITION:
CREATE TABLE `table_test` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`sint1` SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
`tint2` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE);

############ SELECT:
SELECT  T.*, 
        SUBSTR(combined,1,LENGTH(combined)-3)+0 AS _sint1,
        RIGHT(combined,3)+0 AS _tint2
FROM (
	SELECT 	id, sint1, tint2, 
                CONCAT(sint1, LPAD(tint2,3,0)) AS combined
	FROM table_test
) AS T
            &lt;/pre&gt;
            And output will be:&lt;br /&gt;
            &lt;table border=&quot;1&quot; cellpadding=&quot;5&quot; style=&quot;border-collapse:collapse&quot;&gt;
                &lt;tr&gt;&lt;th&gt;id&lt;/th&gt;&lt;th&gt;sint1&lt;/th&gt;&lt;th&gt;tint2&lt;/th&gt;&lt;th&gt;&lt;span style=&quot;color:#a00&quot;&gt;&amp;gt;combined&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;span style=&quot;color:#00a&quot;&gt;&amp;gt;_sint1&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;span style=&quot;color:#00a&quot;&gt;&amp;gt;_tint2&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;3123&lt;/td&gt;&lt;td&gt;38&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;3123038&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3123&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;38&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;3410&lt;/td&gt;&lt;td&gt;243&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;3410243&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3410&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;243&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;2685&lt;/td&gt;&lt;td&gt;207&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;2685207&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2685&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;207&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;1327&lt;/td&gt;&lt;td&gt;224&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;1327224&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;1327&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;224&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;2047&lt;/td&gt;&lt;td&gt;102&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;2047102&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2047&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;102&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;2953&lt;/td&gt;&lt;td&gt;189&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;2953189&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2953&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;189&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;3686&lt;/td&gt;&lt;td&gt;117&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;3686117&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3686&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;117&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;4455&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;4455018&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;4455&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;18&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;2482&lt;/td&gt;&lt;td&gt;66&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;2482066&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2482&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;66&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;3072&lt;/td&gt;&lt;td&gt;74&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;3072074&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3072&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;74&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;2036&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;2036042&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2036&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;42&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;2047&lt;/td&gt;&lt;td&gt;139&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;2047139&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2047&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;139&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;1573&lt;/td&gt;&lt;td&gt;236&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;1573236&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;1573&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;236&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;2464&lt;/td&gt;&lt;td&gt;173&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;2464173&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;2464&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;173&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;3656&lt;/td&gt;&lt;td&gt;155&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;3656155&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3656&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;155&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;3305&lt;/td&gt;&lt;td&gt;120&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;3305120&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;3305&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;120&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;5894&lt;/td&gt;&lt;td&gt;121&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#a00&quot;&gt;5894121&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;5894&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=&quot;color:#00a&quot;&gt;121&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;/table&gt;
            &lt;br /&gt;
            This solution can work with two SMALLINT,&lt;br /&gt; if one of them limited up to 42949,&lt;br /&gt;
            and it will be the left operand.&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
        &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/5276059556206297573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2021/10/mysql-joincombine-2-smallinttinyint.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/5276059556206297573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/5276059556206297573'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2021/10/mysql-joincombine-2-smallinttinyint.html' title='MySQL | join/combine 2 SMALLINT/TINYINT into 1 INT'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-394536854291346635</id><published>2020-12-03T12:48:00.007+02:00</published><updated>2021-01-30T09:17:04.829+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="algo"/><category scheme="http://www.blogger.com/atom/ns#" term="algorithm"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="date-range"/><category scheme="http://www.blogger.com/atom/ns#" term="date-ranges"/><category scheme="http://www.blogger.com/atom/ns#" term="daterange"/><category scheme="http://www.blogger.com/atom/ns#" term="dateranges"/><category scheme="http://www.blogger.com/atom/ns#" term="fast"/><category scheme="http://www.blogger.com/atom/ns#" term="merge"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="smart"/><category scheme="http://www.blogger.com/atom/ns#" term="source code"/><title type='text'>php merge dateranges code algorithm</title><content type='html'>&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;Here is a code for merging date-ranges in array.
The method gives new array, with the maximum mergining between the date-ranges, 
  meaning if there is a date-range that already exists with-in other, it can just skip,
  so just if two or more dates can be combined into one big date-range - it will be made :)
  .&amp;nbsp;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;

&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;-------------------------------Example #1:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;  
&lt;pre&gt;  &lt;b&gt;array&lt;/b&gt; 
  0 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-06&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-10&#39;&lt;/font&gt;
  1 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-07&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-12&#39;&lt;/font&gt;
  2 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-13&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-16&#39;&lt;/font&gt;
  3 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-22&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-24&#39;&lt;/font&gt;

RESULT:
&lt;b&gt;array&lt;/b&gt; 
  0 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-06&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-16&#39;&lt;/font&gt;
  1 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-22&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-24&#39;&lt;/font&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;-------------------------------Example #2:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;  
&lt;pre dir=&quot;ltr&quot;&gt;&lt;b&gt;array&lt;/b&gt; &lt;i&gt;(size=8)&lt;/i&gt;
  0 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-01&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-01&#39;&lt;/font&gt;
  1 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-03&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-03&#39;&lt;/font&gt;
  2 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-09&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-10&#39;&lt;/font&gt;
  3 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-11&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-22&#39;&lt;/font&gt;
  4 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-14&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-02-02&#39;&lt;/font&gt;
  5 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-02-02&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-02-03&#39;&lt;/font&gt;
  6 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-02-04&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-02-04&#39;&lt;/font&gt;
  7 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-02-05&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-02-07&#39;&lt;/font&gt;

RESULT:
&lt;b&gt;array&lt;/b&gt; &lt;i&gt;(size=3)&lt;/i&gt;           
  0 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-01&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-01&#39;&lt;/font&gt;
  1 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-03&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-03&#39;&lt;/font&gt;
  2 &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &#39;s&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-01-09&#39;&lt;/font&gt; &#39;e&#39; &lt;font color=&quot;#888a85&quot;&gt;=&amp;gt;&lt;/font&gt; &lt;font color=&quot;#cc0000&quot;&gt;&#39;2020-02-07&#39;&lt;/font&gt;
&lt;/pre&gt;
&lt;/div&gt;




&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;And here is the CODE: &lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;code style=&quot;color: black; overflow-wrap: normal; word-wrap: normal;&quot;&gt;
&lt;/code&gt;&lt;pre nbsp=&quot;&quot; style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: rgb(240, 240, 240) none repeat scroll 0% 0%; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; overflow-wrap: normal; word-wrap: normal;&quot;&gt;
$arrDateranges = array(
    array(&#39;s&#39; =&amp;gt; &#39;2020-01-22&#39;, &#39;e&#39; =&amp;gt; &#39;2020-01-24&#39;),
    array(&#39;s&#39; =&amp;gt; &#39;2020-01-06&#39;, &#39;e&#39; =&amp;gt; &#39;2020-01-10&#39;),
    array(&#39;s&#39; =&amp;gt; &#39;2020-01-07&#39;, &#39;e&#39; =&amp;gt; &#39;2020-01-12&#39;),
    array(&#39;s&#39; =&amp;gt; &#39;2020-01-13&#39;, &#39;e&#39; =&amp;gt; &#39;2020-01-16&#39;),
);
$arrMerged = mergeDateRanges($arrDateranges);
var_dump($arrDateranges);
var_dump($arrMerged);

//---------------------------------------------------------

// helper funciton to get NEXT date (or any modified date)
function getRelativeDate($p_sDate, $p_sModify, $p_sFormatIn = &#39;Y-m-d&#39;, $p_sFormatOut = &#39;Y-m-d&#39;) {
    $oDT = DateTime::createFromFormat($p_sFormatIn, $p_sDate);
    $oDT-&amp;gt;modify($p_sModify);
    return $oDT-&amp;gt;format($p_sFormatOut);
}

function mergeDateRanges($p_arrDateranges) {
    // sort by start date
    usort($p_arrDateranges, function($a1, $a2) {
        return $a1[&#39;s&#39;] === $a2[&#39;s&#39;] ? 0 : ($a1[&#39;s&#39;] &amp;lt; $a2[&#39;s&#39;] ? -1 : 1);
    });
    
    $arrMerged = array();
    $arrLastDR = null;
    foreach ($p_arrDateranges as $arrDR) {
        if ($arrLastDR === null) {
            $arrLastDR = $arrDR;
            continue;
        }
        //
        // NOTE: dateS is sorted thus $sDateS &amp;gt;= $arrLastDR[&#39;s&#39;]
        //
        if ($arrDR[&#39;e&#39;] &amp;lt;= $arrLastDR[&#39;e&#39;]) {
            continue; // already in the range.
        }
        // --- [e] &amp;gt; lastDR[e] ---
        $sLastDateE_1 = getRelativeDate($arrLastDR[&#39;e&#39;], &#39;+1 day&#39;);
        if ($arrDR[&#39;s&#39;] &amp;lt;= $sLastDateE_1) { // lapping date-range until day+1
            $arrLastDR[&#39;e&#39;] = $arrDR[&#39;e&#39;];
            continue;
        }

        // there is gap, so need to create new date-range
        array_push($arrMerged, $arrLastDR);
        $arrLastDR = $arrDR;
    }

    if ($arrLastDR === null) {
        array_push($arrMerged, $arrLastDR);
    }
    return $arrMerged;
}


&lt;/code&gt;&lt;/pre&gt;
  
&lt;/div&gt;

</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/394536854291346635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2020/12/php-merge-dateranges-algorithm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/394536854291346635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/394536854291346635'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2020/12/php-merge-dateranges-algorithm.html' title='php merge dateranges code algorithm'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-2855689223708477426</id><published>2020-02-24T13:22:00.000+02:00</published><updated>2020-02-24T13:22:21.795+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="login problem"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="sign problem"/><category scheme="http://www.blogger.com/atom/ns#" term="skype"/><category scheme="http://www.blogger.com/atom/ns#" term="skype for windows"/><category scheme="http://www.blogger.com/atom/ns#" term="skype stuck on loading screen"/><category scheme="http://www.blogger.com/atom/ns#" term="solution"/><category scheme="http://www.blogger.com/atom/ns#" term="solved"/><category scheme="http://www.blogger.com/atom/ns#" term="win7"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="windows7"/><title type='text'>Skype | stuck on loading screen [SOLVED] [SOLUTION]</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Hello!&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
This thread is about a &lt;b&gt;sign-in problem &lt;/b&gt;of SKYPE version 8.56.0.103,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
where the application is stuck on loading screen.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
here:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1NEx3cvvcLujUN_O9EnOaZGPLJChKmq1RxtlfPHrXz3owWu-En9j231Yk8Y5U6w8iIqWTvGvz1BQztXjc64NtW_ld6udSkTKbLPN_qaKCbYOlxmcFkkLJuQ0jGjgb_eshhoy-duJrfTA/s1600/sc1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;535&quot; data-original-width=&quot;586&quot; height=&quot;182&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1NEx3cvvcLujUN_O9EnOaZGPLJChKmq1RxtlfPHrXz3owWu-En9j231Yk8Y5U6w8iIqWTvGvz1BQztXjc64NtW_ld6udSkTKbLPN_qaKCbYOlxmcFkkLJuQ0jGjgb_eshhoy-duJrfTA/s200/sc1.jpg&quot; style=&quot;border: 2px solid rgb(102, 102, 102);&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl2EqBowl8A20c8BaeZsuSqo-TmDssL16mvLhmyMx6FTIa1gh3Mmke1J2PvaKxNn7K1KHfAvTmTWH1vIN5qREr5RCX-XAwnBooaZSfprqRW5HRBxUuEnzHy9Zw3bESKlhhMDKEaV28t2c/s1600/sc2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;822&quot; data-original-width=&quot;920&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl2EqBowl8A20c8BaeZsuSqo-TmDssL16mvLhmyMx6FTIa1gh3Mmke1J2PvaKxNn7K1KHfAvTmTWH1vIN5qREr5RCX-XAwnBooaZSfprqRW5HRBxUuEnzHy9Zw3bESKlhhMDKEaV28t2c/s200/sc2.jpg&quot; style=&quot;border: 2px solid rgb(102, 102, 102);&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Here is how I&#39;ve solved the problem!&lt;br /&gt;
&lt;br /&gt;
I&#39;m working at the moment with windows7,&lt;br /&gt;
but i assume that the solution will work for any windows version.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step1:&lt;/b&gt;&lt;br /&gt;
make sure you have your Skype username/password saved,&lt;br /&gt;
as you will need to re-login later on.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step2:&lt;/b&gt;&lt;br /&gt;
Make sure Skype on your desktop is closed. (if not - close/quit)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step3:&lt;/b&gt;&lt;br /&gt;
Open your appdata Local folder:&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;C:\Users\&lt;span style=&quot;background-color: yellow;&quot;&gt;&lt;i&gt;YourUserNameHere&lt;/i&gt;&lt;/span&gt;\AppData\Roaming&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
alternative for opening the folder:&lt;br /&gt;
- search on windows start search for %appdata%&lt;br /&gt;
- click on &lt;b&gt;Roaming&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYuFf2Z9Q-4IDEFgmjUUlY12_akkC76JHz9uKgmjHY7GhABRa9T8Ra7Nuf7asvr-f9RSus-cNRozjj3p2K0zUV6XQMDBvKUfVFkZG_SXrLkkiut7d2jXGJT59re25xOCXmhLcxokOog8E/s1600/appdata-local-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;477&quot; data-original-width=&quot;407&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYuFf2Z9Q-4IDEFgmjUUlY12_akkC76JHz9uKgmjHY7GhABRa9T8Ra7Nuf7asvr-f9RSus-cNRozjj3p2K0zUV6XQMDBvKUfVFkZG_SXrLkkiut7d2jXGJT59re25xOCXmhLcxokOog8E/s200/appdata-local-1.png&quot; style=&quot;border: 2px solid rgb(102, 102, 102);&quot; width=&quot;170&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step4:&lt;/b&gt;&lt;br /&gt;
On the Roaming folder, Enter &lt;b&gt;Microsoft &lt;/b&gt;folder,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Find &lt;b&gt;Skype for Desktop &lt;/b&gt;folder, and rename it to &quot;___skype&quot;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
(just to have backup)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Step5:&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Just restart your skype and everything works :)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Let me know.&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
:)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
:)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/2855689223708477426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2020/02/skype-stuck-on-loading-screen-solved.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2855689223708477426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2855689223708477426'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2020/02/skype-stuck-on-loading-screen-solved.html' title='Skype | stuck on loading screen [SOLVED] [SOLUTION]'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1NEx3cvvcLujUN_O9EnOaZGPLJChKmq1RxtlfPHrXz3owWu-En9j231Yk8Y5U6w8iIqWTvGvz1BQztXjc64NtW_ld6udSkTKbLPN_qaKCbYOlxmcFkkLJuQ0jGjgb_eshhoy-duJrfTA/s72-c/sc1.jpg" height="72" width="72"/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-4013217591686825751</id><published>2016-12-22T09:37:00.000+02:00</published><updated>2016-12-22T09:37:53.771+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".net"/><category scheme="http://www.blogger.com/atom/ns#" term="browser"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="control"/><category scheme="http://www.blogger.com/atom/ns#" term="dot net"/><category scheme="http://www.blogger.com/atom/ns#" term="dotnet"/><category scheme="http://www.blogger.com/atom/ns#" term="dropdown"/><category scheme="http://www.blogger.com/atom/ns#" term="programmatically"/><category scheme="http://www.blogger.com/atom/ns#" term="select"/><category scheme="http://www.blogger.com/atom/ns#" term="selectbox"/><category scheme="http://www.blogger.com/atom/ns#" term="selectedIndex"/><category scheme="http://www.blogger.com/atom/ns#" term="selectedValue"/><category scheme="http://www.blogger.com/atom/ns#" term="webbrowser"/><category scheme="http://www.blogger.com/atom/ns#" term="winforms"/><title type='text'>c# | WebBrowser control - programmatically select item on html `select`</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Hi There,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
As many times, we need to interact with the C# (.Net) Webbrowser Control,&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
it is useful to be able to interact and programmatically change the selected item&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
on an HTML select control.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
I don&#39;t know, why it is hard to find this easy solution, but the code is as follow:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre dir=&quot;ltr&quot; style=&quot;background: rgb(240, 240, 240) none repeat scroll 0% 0%; border: 1px dashed rgb(204, 204, 204); color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName(&quot;select&quot;) 
foreach (HtmlElement heItem in col) 
{ 
  if (heItem.GetAttribute(&quot;className&quot;).Contains(&quot;exampleClassName&quot;) == true) 
  { 
    &lt;b&gt;heItem.SetAttribute(&quot;selectedIndex&quot;, &quot;3&quot;);&lt;/b&gt; // select value at #3
    break; // incase of needed... 
  } 
} &lt;/code&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; &lt;/code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;And finally, just easy as u code...&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need change by value and not by index,&lt;br /&gt;
I assume you can check the values of the select control (sometimes called: dropdown),&lt;br /&gt;
and once you find the correct index of the desired value,&lt;br /&gt;
use the code above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;MDB-BLOG :)&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/4013217591686825751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2016/12/c-browser-control-programmatically.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/4013217591686825751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/4013217591686825751'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2016/12/c-browser-control-programmatically.html' title='c# | WebBrowser control - programmatically select item on html `select`'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-2189182907447423343</id><published>2016-10-31T17:28:00.002+02:00</published><updated>2016-10-31T17:30:00.328+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="country"/><category scheme="http://www.blogger.com/atom/ns#" term="download"/><category scheme="http://www.blogger.com/atom/ns#" term="flags"/><category scheme="http://www.blogger.com/atom/ns#" term="images"/><category scheme="http://www.blogger.com/atom/ns#" term="iso2"/><category scheme="http://www.blogger.com/atom/ns#" term="iso3"/><category scheme="http://www.blogger.com/atom/ns#" term="png"/><category scheme="http://www.blogger.com/atom/ns#" term="zip"/><title type='text'>List of country flags (png) by ISO3</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
As I needed a list of country flag images named with ISO3, and couldn&#39;t find,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
I uploaded my version free (see license on bottom).&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Above there are two ZIP containing country flags images (PNG format)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
sizes of &lt;b&gt;64x64&amp;nbsp; &lt;/b&gt;and&amp;nbsp; &lt;b&gt;128x128&lt;/b&gt;&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
of the ~250 countries&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
as the file name is &lt;a href=&quot;http://unstats.un.org/unsd/tradekb/Knowledgebase/Country-Code&quot; target=&quot;_blank&quot;&gt;ISO3&lt;/a&gt; standard &lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
and not two letter (&lt;a href=&quot;https://en.wikipedia.org/wiki/ISO_3166-2&quot; title=&quot;ISO 3166-2&quot;&gt;ISO 3166-2&lt;/a&gt;) or full name as most flags out there...&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;a-b-Ia-V&quot; data-tooltip-align=&quot;b,c&quot; data-tooltip-class=&quot;a-b-g-Ca&quot; data-tooltip-delay=&quot;500&quot; data-tooltip-offset=&quot;-6&quot; data-tooltip-only-on-overflow=&quot;true&quot; data-tooltip-unhoverable=&quot;true&quot; data-tooltip=&quot;flags_iso3_128x128.rar&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;a-b-Ia-V&quot; data-tooltip-align=&quot;b,c&quot; data-tooltip-class=&quot;a-b-g-Ca&quot; data-tooltip-delay=&quot;500&quot; data-tooltip-offset=&quot;-6&quot; data-tooltip-only-on-overflow=&quot;true&quot; data-tooltip-unhoverable=&quot;true&quot; data-tooltip=&quot;flags_iso3_128x128.rar&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Download flags_iso3_128x128.rar&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;a-b-Ia-V&quot; data-tooltip-align=&quot;b,c&quot; data-tooltip-class=&quot;a-b-g-Ca&quot; data-tooltip-delay=&quot;500&quot; data-tooltip-offset=&quot;-6&quot; data-tooltip-only-on-overflow=&quot;true&quot; data-tooltip-unhoverable=&quot;true&quot; data-tooltip=&quot;flags_iso3_128x128.rar&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://www.megafileupload.com/gdW6/flags_iso3_128x128.rar&quot;&gt;http://www.megafileupload.com/gdW6/flags_iso3_128x128.rar&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;a-b-Ia-V&quot; data-tooltip-align=&quot;b,c&quot; data-tooltip-class=&quot;a-b-g-Ca&quot; data-tooltip-delay=&quot;500&quot; data-tooltip-offset=&quot;-6&quot; data-tooltip-only-on-overflow=&quot;true&quot; data-tooltip-unhoverable=&quot;true&quot; data-tooltip=&quot;flags_iso3_128x128.rar&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://www.sendspace.com/file/5ht6yg&quot;&gt;https://www.sendspace.com/file/5ht6yg&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;a-b-Ia-V&quot; data-tooltip-align=&quot;b,c&quot; data-tooltip-class=&quot;a-b-g-Ca&quot; data-tooltip-delay=&quot;500&quot; data-tooltip-offset=&quot;-6&quot; data-tooltip-only-on-overflow=&quot;true&quot; data-tooltip-unhoverable=&quot;true&quot; data-tooltip=&quot;flags_iso3_128x128.rar&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Example:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLJGNveAhdyTvU-AIeKMHLJR5B9MuZGUkw5EbsN80_cIGoPhK_Dck0OK-YoLIvACVfYVRRJmKSxICzegiUU7QT-6yjOdkx3aS5_jXJC8SZarBqK_aQZLPz7eLrjwn3-4KNUFdkPIqhPA/s1600/gb_128x128.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLJGNveAhdyTvU-AIeKMHLJR5B9MuZGUkw5EbsN80_cIGoPhK_Dck0OK-YoLIvACVfYVRRJmKSxICzegiUU7QT-6yjOdkx3aS5_jXJC8SZarBqK_aQZLPz7eLrjwn3-4KNUFdkPIqhPA/s400/gb_128x128.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;a-b-Ia-V&quot; data-tooltip-align=&quot;b,c&quot; data-tooltip-class=&quot;a-b-g-Ca&quot; data-tooltip-delay=&quot;500&quot; data-tooltip-offset=&quot;-6&quot; data-tooltip-only-on-overflow=&quot;true&quot; data-tooltip-unhoverable=&quot;true&quot; data-tooltip=&quot;flags_iso3_128x128.rar&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;a-b-Ia-V&quot; data-tooltip-align=&quot;b,c&quot; data-tooltip-class=&quot;a-b-g-Ca&quot; data-tooltip-delay=&quot;500&quot; data-tooltip-offset=&quot;-6&quot; data-tooltip-only-on-overflow=&quot;true&quot; data-tooltip-unhoverable=&quot;true&quot; data-tooltip=&quot;flags_iso3_128x128.rar&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Download flags_iso3_64x64.rar&lt;/b&gt; &lt;/div&gt;
&lt;div class=&quot;a-b-Ia-V&quot; data-tooltip-align=&quot;b,c&quot; data-tooltip-class=&quot;a-b-g-Ca&quot; data-tooltip-delay=&quot;500&quot; data-tooltip-offset=&quot;-6&quot; data-tooltip-only-on-overflow=&quot;true&quot; data-tooltip-unhoverable=&quot;true&quot; data-tooltip=&quot;flags_iso3_128x128.rar&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://www.megafileupload.com/kq53/flags_iso3_64x64.rar&quot;&gt;http://www.megafileupload.com/kq53/flags_iso3_64x64.rar&lt;/a&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://www.sendspace.com/file/bimuu8&quot;&gt;https://www.sendspace.com/file/bimuu8&lt;/a&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Example:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8z0j1GIRHAqZynGwBA-rrjY7s5KIR3-VJRwgZjGWYIflfDwT6Fxs8x2KeRLYK7BbTYepfAZkY80ZUwgHC44wiPC8jahERMhCscB_xyb9vKwCDQ8QbZF8o-sgpKbSoY7C2JEjKLgDJ_b4/s1600/gb_64x64.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8z0j1GIRHAqZynGwBA-rrjY7s5KIR3-VJRwgZjGWYIflfDwT6Fxs8x2KeRLYK7BbTYepfAZkY80ZUwgHC44wiPC8jahERMhCscB_xyb9vKwCDQ8QbZF8o-sgpKbSoY7C2JEjKLgDJ_b4/s400/gb_64x64.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
license and images are all taken from:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://github.com/stefangabos/world_countries&quot;&gt;https://github.com/stefangabos/world_countries&lt;/a&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/2189182907447423343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2016/10/list-of-country-flags-png-by-iso3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2189182907447423343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2189182907447423343'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2016/10/list-of-country-flags-png-by-iso3.html' title='List of country flags (png) by ISO3'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLJGNveAhdyTvU-AIeKMHLJR5B9MuZGUkw5EbsN80_cIGoPhK_Dck0OK-YoLIvACVfYVRRJmKSxICzegiUU7QT-6yjOdkx3aS5_jXJC8SZarBqK_aQZLPz7eLrjwn3-4KNUFdkPIqhPA/s72-c/gb_128x128.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-539414938160555581</id><published>2016-02-13T20:11:00.001+02:00</published><updated>2016-02-13T20:11:29.370+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="free javascript obfuscator"/><category scheme="http://www.blogger.com/atom/ns#" term="free obfuscator"/><category scheme="http://www.blogger.com/atom/ns#" term="freejsobfuscator"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript obfuscator"/><title type='text'> Free Javascript Obfuscator Online</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; id=&quot;site-description&quot; style=&quot;text-align: left;&quot;&gt;
Protects JavaScript code from stealing/reading and shrinks its size.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; id=&quot;site-description&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Free Javascript Obfuscator is a professional tool for obfuscation of 
javascript. It Converts JavaScript source code into scrambled and 
completely unreadable form, preventing it from analyzing and theft.&lt;br /&gt;

&lt;b&gt;Visit: &lt;a href=&quot;http://freejsobfuscator.com/&quot;&gt;http://freejsobfuscator.com/&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
u can choose if to process by your will: parameters / functions / strings / new lines / indentations and it is 100% free!&lt;br /&gt;
&lt;br /&gt;

&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/539414938160555581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2016/02/free-javascript-obfuscator-online.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/539414938160555581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/539414938160555581'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2016/02/free-javascript-obfuscator-online.html' title=' Free Javascript Obfuscator Online'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-5372499957432552906</id><published>2015-11-22T14:13:00.001+02:00</published><updated>2015-11-22T14:13:27.333+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="centos"/><category scheme="http://www.blogger.com/atom/ns#" term="extension"/><category scheme="http://www.blogger.com/atom/ns#" term="imap"/><category scheme="http://www.blogger.com/atom/ns#" term="module"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="php-module"/><category scheme="http://www.blogger.com/atom/ns#" term="unix"/><title type='text'>How to install php imap extension on Centos (or any)</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
The php package (extension) for IMAP is usually:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;php-imap&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Sometimes, for example on amazon ec2, when installing PHP ver. 5.5 or 5.6,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
In order to install this (or any other) PHP extension,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
that not come with the default PHP,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
You should installed the one related to your PHP version.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
For example,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
one of my servers have PHP 5.6 installed on it,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
but when running&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;/code&gt;&lt;/div&gt;
&lt;pre dir=&quot;ltr&quot; style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&amp;nbsp;yum install php-imap&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre dir=&quot;ltr&quot; style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;b&gt;which gives:&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre dir=&quot;ltr&quot; style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;Error: php56-imap conflicts with php-imap-5.3.29-1.8.amzn1.x86_64
Error: php56-common conflicts with php-common-5.3.29-1.8.amzn1.x86_64
Error: php55-common conflicts with php-common-5.3.29-1.8.amzn1.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest &lt;/code&gt;&lt;/pre&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;so instead, check first which version currently installed:&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;yum list installed | grep php&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;b&gt;which gives:&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;php56.x86_64                          5.6.14-1.119.amzn1           @amzn-updates
php56-cli.x86_64                      5.6.14-1.119.amzn1           @amzn-updates
php56-common.x86_64                   5.6.14-1.119.amzn1           @amzn-updates
php56-imap.x86_64                     5.6.14-1.119.amzn1           @amzn-updates
php56-jsonc.x86_64                    1.3.6-1.19.amzn1             @amzn-main
php56-mbstring.x86_64                 5.6.14-1.119.amzn1           @amzn-updates
php56-mysqlnd.x86_64                  5.6.14-1.119.amzn1           @amzn-updates
php56-pdo.x86_64                      5.6.14-1.119.amzn1           @amzn-updates
php56-process.x86_64                  5.6.14-1.119.amzn1           @amzn-updates
php56-xml.x86_64                      5.6.14-1.119.amzn1           @amzn-updates &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Which means that your PHP version is 5.6 (you can also run php -v)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;php -v&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;b&gt;which gives:&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;PHP 5.6.14 (cli) (built: Oct 16 2015 22:58:32)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
All needed now is to install the correct version.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;If you install php55-imap (or any other package) it won&#39;t work!&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Some have several PHP versions installed.&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
command:&lt;b&gt; &lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;yum install php56-imap&lt;/pre&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
don&#39;t forget to restart your apache after that.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;service httpd restart&lt;/pre&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;br /&gt; and done... :)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Hope it helps.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/5372499957432552906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2015/11/how-to-install-php-imap-extension-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/5372499957432552906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/5372499957432552906'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2015/11/how-to-install-php-imap-extension-on.html' title='How to install php imap extension on Centos (or any)'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-7495588764280031145</id><published>2015-11-13T15:43:00.000+02:00</published><updated>2015-11-13T15:43:05.263+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="convert"/><category scheme="http://www.blogger.com/atom/ns#" term="convertion"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="html table"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="SimpleXMLElement"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>PHP | XML to Html Table elment convertion</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
In this thread, &lt;br /&gt;I will show generic &amp;amp; universal function that &lt;br /&gt;gets XML string, &lt;br /&gt;convert it,&lt;br /&gt;and display it as an HTML table. &lt;br /&gt;(you can add any css style to design your table later on of course)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The following code is using XML example from &lt;a href=&quot;http://www.w3schools.com/xml/simple.xml&quot;&gt;http://www.w3schools.com/xml/simple.xml&lt;/a&gt;.&lt;br /&gt;The XML looks like that:&lt;br /&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;breakfast_menu&amp;gt;
&amp;nbsp; &amp;lt;food&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Belgian Waffles&amp;lt;/name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;price&amp;gt;$5.95&amp;lt;/price&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Two of our famous...&amp;lt;/description&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;calories&amp;gt;650&amp;lt;/calories&amp;gt;
&amp;nbsp; &amp;lt;/food&amp;gt;
&amp;nbsp; &amp;lt;food&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Strawberry Belgian Waffles&amp;lt;/name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;price&amp;gt;$7.95&amp;lt;/price&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Light Belgian waffles...&amp;lt;/description&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;calories&amp;gt;900&amp;lt;/calories&amp;gt;
&amp;nbsp; &amp;lt;/food&amp;gt;
&amp;nbsp; &amp;lt;food&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Berry-Berry Belgian Waffles&amp;lt;/name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;price&amp;gt;$8.95&amp;lt;/price&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Light Belgian....&amp;lt;/description&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;calories&amp;gt;900&amp;lt;/calories&amp;gt;
&amp;nbsp; &amp;lt;/food&amp;gt;
&amp;nbsp; &amp;lt;food&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;French Toast&amp;lt;/name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;price&amp;gt;$4.50&amp;lt;/price&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Thick slices made....&amp;lt;/description&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;calories&amp;gt;600&amp;lt;/calories&amp;gt;
&amp;nbsp; &amp;lt;/food&amp;gt;
&amp;nbsp; &amp;lt;food&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Homestyle Breakfast&amp;lt;/name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;price&amp;gt;$6.95&amp;lt;/price&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Two eggs, bacon...&amp;lt;/description&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;calories&amp;gt;950&amp;lt;/calories&amp;gt;
&amp;nbsp; &amp;lt;/food&amp;gt;
&amp;lt;/breakfast_menu&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The function &lt;b&gt;xmlToHtmlTable&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
gets&amp;nbsp;&lt;a href=&quot;http://php.net/manual/en/class.simplexmlelement.php&quot; target=&quot;_blank&quot;&gt;a SimpleXMLElement&lt;/a&gt; parameter which points to main parent for which will print all his children,&lt;br /&gt;and returns html table representing the XML as string.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Code:&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;pre nbsp=&quot;&quot; style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO20ToCvdi90D6fDeE99h3F33RcGWWwBatWYaR9Lzzwnovr4gHuf-wZx5ULNq_5JQfey4wx-EM6qv4pBT4UPWdYzDc1ocTMl0Qt1e7CdXr9tqICmJP_S85uqGFAdtAYmcB889gRBtYU_7L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; &amp;lt;?php&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;// get XML remotely / locally / or / just set it as string &#39;&amp;lt;root&amp;gt;...&amp;lt;/root&amp;gt;&#39;&amp;nbsp; 
&amp;nbsp;$sXml = file_get_contents(&#39;http://www.w3schools.com/xml/simple.xml&#39;);&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;// parse XML&amp;nbsp; 
&amp;nbsp;$oXML = simplexml_load_string($sXml);&amp;nbsp; 
&amp;nbsp;if (!$oXML) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; die(&#39;xml format not valid or simplexml module missing.&#39;);&amp;nbsp; 
&amp;nbsp;}&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;// assuming running the root&amp;nbsp; 
&amp;nbsp;$oXmlRoot = $oXML; // or can be [$oXML-&amp;gt;food]&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;//echo &#39;&amp;lt;pre&amp;gt;&#39;; print_r( $oXmlRoot ); echo &#39;&amp;lt;/pre&amp;gt;&#39;;&amp;nbsp; 
&amp;nbsp;echo xmlToHtmlTable($oXmlRoot);&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;function xmlToHtmlTable($p_oXmlRoot) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $bIsHeaderProceessed = false;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sTHead = &#39;&#39;;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sTBody = &#39;&#39;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($p_oXmlRoot as $oNode) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sTBody .= &#39;&amp;lt;tr&amp;gt;&#39;;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($oNode as $sName =&amp;gt; $oValue){&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!$bIsHeaderProceessed) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sTHead .= &quot;&amp;lt;th&amp;gt;{$sName}&amp;lt;/th&amp;gt;&quot;;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sValue = (string)$oValue;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sTBody .= &quot;&amp;lt;td&amp;gt;{$sValue}&amp;lt;/td&amp;gt;&quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $bIsHeaderProceessed = true;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sTBody .= &#39;&amp;lt;/tr&amp;gt;&#39;;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sHTML = &quot;&amp;lt;table border=1&amp;gt;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;thead&amp;gt;&amp;lt;tr&amp;gt;{$sTHead}&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tbody&amp;gt;{$sTBody}&amp;lt;/tbody&amp;gt;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&quot;;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $sHTML;&amp;nbsp; 
&amp;nbsp;}&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;
&lt;b&gt; &lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;This will output:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFGlnKKOhILE555OXlhMOxNBWiIYQY4biLYz_XPzB1Ts_YQkkKHZHWG5ZWPAmBokxYhI1ccWyExNlkbV5sTqlIIUdsgtPbzNiPPF8iqGFQECALSBnrBUWAeyQ4T7YiwDQZ-gWUot4SBkQ/s1600/xmlToHtmlTable.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFGlnKKOhILE555OXlhMOxNBWiIYQY4biLYz_XPzB1Ts_YQkkKHZHWG5ZWPAmBokxYhI1ccWyExNlkbV5sTqlIIUdsgtPbzNiPPF8iqGFQECALSBnrBUWAeyQ4T7YiwDQZ-gWUot4SBkQ/s640/xmlToHtmlTable.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Hope it helps!&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
MDB BLOG!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/7495588764280031145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2015/11/php-xml-to-html-table-elment-convertion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7495588764280031145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7495588764280031145'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2015/11/php-xml-to-html-table-elment-convertion.html' title='PHP | XML to Html Table elment convertion'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFGlnKKOhILE555OXlhMOxNBWiIYQY4biLYz_XPzB1Ts_YQkkKHZHWG5ZWPAmBokxYhI1ccWyExNlkbV5sTqlIIUdsgtPbzNiPPF8iqGFQECALSBnrBUWAeyQ4T7YiwDQZ-gWUot4SBkQ/s72-c/xmlToHtmlTable.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-1418502129606394086</id><published>2015-06-19T15:00:00.000+03:00</published><updated>2015-06-19T15:00:18.090+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="group_concat"/><category scheme="http://www.blogger.com/atom/ns#" term="join"/><category scheme="http://www.blogger.com/atom/ns#" term="median"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="nth element"/><category scheme="http://www.blogger.com/atom/ns#" term="substring_index"/><title type='text'>MySQL | find median (Nth element) without join!</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
This is my suggestion to find on mysql select command&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
the &lt;b&gt;Median (Nth element)&lt;/b&gt; without joining the table to itself (or to new custom one).&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
My method, uses &lt;u&gt;string manipulation&lt;/u&gt;,&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
so I&#39;m not sure it is good for big tables.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;i&gt;(I tested it with medium size tables on Mysql 5.5.28)&lt;/i&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
The &lt;u&gt;advantage&lt;/u&gt; of this method,&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
that it works also if we need to find the MEDIAN for each group in the select query.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
the code is using: &lt;a href=&quot;https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index&quot; target=&quot;_blank&quot;&gt; SUBSTRING_INDEX&lt;/a&gt; and &lt;a href=&quot;https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat&quot; target=&quot;_blank&quot;&gt;GROUP_CONCAT&lt;/a&gt; methods.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is test code for test table:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;pre class=&quot;lang-sql prettyprint prettyprinted&quot;&gt;&lt;code&gt;&lt;span class=&quot;kwd&quot;&gt;DROP&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;TABLE&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; test&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;test_median
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;CREATE&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;TABLE&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; test&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;test_median &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;book&#39;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; grp&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; val &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;book&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;book&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;book&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;book&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;book&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;book&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;

&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;note&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;

&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;bike&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;UNION&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;bike&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and the code for finding the median for each group:&lt;br /&gt;
&lt;pre class=&quot;lang-sql prettyprint prettyprinted&quot;&gt;&lt;code&gt;&lt;span class=&quot;kwd&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; grp&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
         SUBSTRING_INDEX&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; SUBSTRING_INDEX&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; GROUP_CONCAT&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;val &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ORDER&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;BY&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; val&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;,&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; COUNT&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(*)/&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;,&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;-1&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;as&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; the_median&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
         GROUP_CONCAT&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;val &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;ORDER&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;BY&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; val&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;as&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; all_vals_for_debug
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; test&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;test_median
&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;GROUP&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;BY&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; grp&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;lang-sql prettyprint prettyprinted&quot;&gt;&lt;code&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
The output:&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot; caption=&quot;test_median (3 rows)&quot;&gt;
      &lt;thead&gt;
&lt;tr&gt;
          &lt;th class=&quot;col0&quot;&gt;grp&lt;/th&gt;
          &lt;th class=&quot;col1&quot;&gt;the_median&lt;/th&gt;
          &lt;th class=&quot;col2&quot;&gt;all_vals_for_debug&lt;/th&gt;
        &lt;/tr&gt;
&lt;/thead&gt;
      &lt;tbody&gt;
&lt;tr&gt;
          &lt;td class=&quot;col0&quot;&gt;bike&lt;/td&gt;
          &lt;td class=&quot;col1&quot;&gt;22&lt;/td&gt;
          &lt;td class=&quot;col2&quot;&gt;22,26&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
          &lt;td class=&quot;col0&quot;&gt;book&lt;/td&gt;
          &lt;td class=&quot;col1&quot;&gt;4&lt;/td&gt;
          &lt;td class=&quot;col2&quot;&gt;2,2,3,4,7,8,9&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
          &lt;td class=&quot;col0&quot;&gt;note&lt;/td&gt;
          &lt;td class=&quot;col1&quot;&gt;11&lt;/td&gt;
          &lt;td class=&quot;col2&quot;&gt;11&lt;/td&gt;
        &lt;/tr&gt;
&lt;/tbody&gt;
    &lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
Hope it helps you there...&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;lang-sql prettyprint prettyprinted&quot;&gt;&lt;code&gt;&lt;span class=&quot;pln&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/1418502129606394086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2015/06/mysql-find-median-nth-element-without.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/1418502129606394086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/1418502129606394086'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2015/06/mysql-find-median-nth-element-without.html' title='MySQL | find median (Nth element) without join!'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-2974257494177201794</id><published>2015-05-27T12:11:00.002+03:00</published><updated>2016-02-19T12:52:43.124+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="delete"/><category scheme="http://www.blogger.com/atom/ns#" term="delete all session"/><category scheme="http://www.blogger.com/atom/ns#" term="destroy"/><category scheme="http://www.blogger.com/atom/ns#" term="destroy session"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="remove"/><category scheme="http://www.blogger.com/atom/ns#" term="remove sessions"/><category scheme="http://www.blogger.com/atom/ns#" term="session"/><category scheme="http://www.blogger.com/atom/ns#" term="sessions"/><title type='text'>php | destroy/delete all sessions</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
I recently searched for an option deleting all &lt;u&gt;running&lt;/u&gt;/&lt;u&gt;active&lt;/u&gt; sessions,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
for changing some important logic on my server.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Important:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;just restarting apache won&#39;t help!&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
because php handles php-sessions by itself.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
now,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
I wonder how to make it, without changing php code.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
The solution, is to &lt;b&gt;delete the PHP session files&lt;/b&gt; created by PHP engine.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;Step #1 - find where PHP store php files&lt;/u&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
on php.ini there is configured &lt;a href=&quot;http://php.net/manual/en/session.configuration.php&quot; target=&quot;_blank&quot;&gt;session.save_path&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
which points to the correct path.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
by default, it configured to &quot;&quot; (empty), and it is:&lt;/div&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;On Ubuntu or Debian machines: saved on &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/var/lib/php5 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;On RHEL and CentOS systems: saved on &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/var/lib/php/session&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;If you need to find it: print &lt;a href=&quot;http://php.net/manual/en/function.session-save-path.php&quot; target=&quot;_blank&quot;&gt;session_save_path()&lt;/a&gt; on your php file.&amp;nbsp;&amp;nbsp;&amp;nbsp; You may run from command line:&amp;nbsp; &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;php -r &#39;echo session_save_path(), &quot;\n&quot;;&#39;&lt;/span&gt;&lt;i&gt;
&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;Step #2 - just delete the files&lt;/u&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Execute the following bash script:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;rm&amp;nbsp; -&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;f&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &amp;nbsp; /var/lib/php/session/*&lt;/span&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;or &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;rm&amp;nbsp; -f&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;/span&gt;&lt;/span&gt; &amp;nbsp; &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/var/lib/php5/sess&lt;/span&gt;*&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
(-f will force delete without prompting!!)&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
And that&#39;s it...&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Now when a user will execute web-request,&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
his session will be considered empty,&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
and will be re-generated (&lt;u&gt;under the same session name&lt;/u&gt;)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/2974257494177201794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2015/05/php-destroydelete-all-sessions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2974257494177201794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2974257494177201794'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2015/05/php-destroydelete-all-sessions.html' title='php | destroy/delete all sessions'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-5045817932810315708</id><published>2014-12-25T15:23:00.001+02:00</published><updated>2014-12-25T15:23:44.611+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="center label"/><category scheme="http://www.blogger.com/atom/ns#" term="label"/><category scheme="http://www.blogger.com/atom/ns#" term="nsDialogs"/><category scheme="http://www.blogger.com/atom/ns#" term="nsis"/><title type='text'>NSIS | create CENTER aligned text control</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
I searched on the internet for CENTER LABEL on NSIS,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
but didn&#39;t find.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
I saw that the ${SS_CENTER} style, not working with ${NSD_CreateLabel}&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
So I build my own code, using the STATIC control.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${SS_CENTER} 0 29 180 439 60 &quot;WELCOME TEXT&quot;&lt;br /&gt;
Pop $0&lt;br /&gt;
CreateFont $1 &quot;Arial&quot; 9&lt;br /&gt;
SendMessage $0 ${WM_SETFONT} $1 1&lt;br /&gt;
SetCtlColors $0 0x000000 &#39;0xff0000&#39;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Hope it help...&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/5045817932810315708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2014/12/nsis-create-center-aligned-text-control.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/5045817932810315708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/5045817932810315708'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2014/12/nsis-create-center-aligned-text-control.html' title='NSIS | create CENTER aligned text control'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-2567157609194575049</id><published>2013-02-13T16:30:00.000+02:00</published><updated>2013-02-14T08:46:09.331+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".net"/><category scheme="http://www.blogger.com/atom/ns#" term="browser"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="clear"/><category scheme="http://www.blogger.com/atom/ns#" term="clear cookies"/><category scheme="http://www.blogger.com/atom/ns#" term="cookie"/><category scheme="http://www.blogger.com/atom/ns#" term="cookies"/><category scheme="http://www.blogger.com/atom/ns#" term="delete"/><category scheme="http://www.blogger.com/atom/ns#" term="delete cookies"/><category scheme="http://www.blogger.com/atom/ns#" term="process"/><category scheme="http://www.blogger.com/atom/ns#" term="remove"/><category scheme="http://www.blogger.com/atom/ns#" term="remove cookies"/><category scheme="http://www.blogger.com/atom/ns#" term="session"/><category scheme="http://www.blogger.com/atom/ns#" term="web control"/><category scheme="http://www.blogger.com/atom/ns#" term="webbrowser"/><category scheme="http://www.blogger.com/atom/ns#" term="winforms"/><title type='text'>c# Winforms WebBrowser - Clear all cookies</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;div&gt;Hello,&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
I recently search for a method to delete all cookies from the build in .NET WinForms &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx&quot; target=&quot;_blank&quot;&gt;WebBrowser&lt;/a&gt; control.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
I didn&#39;t found any &lt;b&gt;working &lt;/b&gt;solution for it, nor working example.&lt;/div&gt;
&lt;div&gt;
It being told to use &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/aa385114%28v=vs.85%29.aspx&quot; target=&quot;_blank&quot;&gt;InternetSetOption,&lt;/a&gt; but nothing found about it.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
So, i will write here my solution for &lt;b&gt;clearing and deleting all cookies.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
My solution using &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/aa385114%28v=vs.85%29.aspx&quot; target=&quot;_blank&quot;&gt;InternetSetOption&lt;/a&gt;&amp;nbsp;with the option flag: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/aa385328%28v=vs.85%29.aspx#INTERNET_OPTION_SUPPRESS_BEHAVIOR&quot; target=&quot;_blank&quot;&gt;INTERNET_OPTION_SUPPRESS_BEHAVIOR&lt;/a&gt;, which described as:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;border: 1px solid black; text-align: left;&quot;&gt;
&lt;i&gt;&lt;/i&gt;
            &lt;br /&gt;
&lt;i&gt;A general purpose option that is used to suppress behaviors on a process-wide basis. The lpBuffer parameter of the function must be a pointer to a DWORD containing the specific behavior to suppress. This option cannot be queried with InternetQueryOption.&lt;/i&gt;
            &lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
This option flag should be used together with INTERNET_SUPPRESS_COOKIE_PERSIST options, which means:&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;border: 1px solid black; text-align: left;&quot;&gt;
&lt;i&gt;&lt;/i&gt;
                &lt;br /&gt;
&lt;i&gt;Suppresses the persistence of cookies, even if the server has specified them as persistent.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
So the&amp;nbsp;example&amp;nbsp;code for it&amp;nbsp;will be:&lt;/div&gt;
&lt;/div&gt;
&lt;pre style=&quot;background-color: #f1f1f1; border: 1px solid black; padding: 10px; white-space: pre-wrap;&quot;&gt;static void Main()
{
    SuppressWininetBehavior();

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

[System.Runtime.InteropServices.DllImport(&quot;wininet.dll&quot;, CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetOption(int hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);

private static unsafe void SuppressWininetBehavior()
{
    /* SOURCE: http://msdn.microsoft.com/en-us/library/windows/desktop/aa385328%28v=vs.85%29.aspx
        * INTERNET_OPTION_SUPPRESS_BEHAVIOR (81):
        *      A general purpose option that is used to suppress behaviors on a process-wide basis. 
        *      The lpBuffer parameter of the function must be a pointer to a DWORD containing the specific behavior to suppress. 
        *      This option cannot be queried with InternetQueryOption. 
        *      
        * INTERNET_SUPPRESS_COOKIE_PERSIST (3):
        *      Suppresses the persistence of cookies, even if the server has specified them as persistent.
        *      Version:  Requires Internet Explorer 8.0 or later.
        */

    int option = (int)3/* INTERNET_SUPPRESS_COOKIE_PERSIST*/;
    int* optionPtr = &amp;amp;option;

    bool success = InternetSetOption(0, 81/*INTERNET_OPTION_SUPPRESS_BEHAVIOR*/, new IntPtr(optionPtr), sizeof(int));
    if (!success)
    {
        MessageBox.Show(&quot;Something went wrong !&amp;gt;?&quot;);
    }
}
&lt;/pre&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left; &quot;&gt;
&lt;br /&gt;
Please make sure your project is allows unsafe code. (under Properties =&amp;gt; Build Tab)
        &lt;br /&gt;
&lt;br /&gt;
This code is deleting&amp;nbsp;the COOKIES per PROCESS on startup ONLY. &lt;br /&gt;
[tested on WIN-7 and working great]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Best Regards,
        &lt;br /&gt;
MDB-BLOG :)
    &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/2567157609194575049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2013/02/c-winforms-webbrowser-clear-all-cookies.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2567157609194575049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2567157609194575049'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2013/02/c-winforms-webbrowser-clear-all-cookies.html' title='c# Winforms WebBrowser - Clear all cookies'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-7131523962345712174</id><published>2013-02-10T14:51:00.001+02:00</published><updated>2013-02-10T14:51:44.267+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="delimited"/><category scheme="http://www.blogger.com/atom/ns#" term="delimiter"/><category scheme="http://www.blogger.com/atom/ns#" term="extractvalue"/><category scheme="http://www.blogger.com/atom/ns#" term="function"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="seperated"/><category scheme="http://www.blogger.com/atom/ns#" term="sql"/><category scheme="http://www.blogger.com/atom/ns#" term="text"/><category scheme="http://www.blogger.com/atom/ns#" term="xpath"/><title type='text'>MySQL xpath ExtractValue with delimiter</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
Hello,&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
I recently noticed the XPATH option inside MySQL.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
What a wonderfull way for handling XML. (&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html&quot;&gt;http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html&lt;/a&gt;)&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
I used &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html#function_extractvalue&quot; target=&quot;_blank&quot;&gt;ExtractFunction&lt;/a&gt;, and noticed that this function is &lt;strong&gt;space&lt;/strong&gt; delimited:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;border: 1px solid black;&quot;&gt;
&lt;em&gt;Because &lt;/em&gt;&lt;code class=&quot;literal&quot;&gt;&lt;em&gt;ExtractValue()&lt;/em&gt;&lt;/code&gt;&lt;em&gt; returns      multiple matches as a single space-delimited string&lt;/em&gt;&lt;/div&gt;
&lt;br /&gt;
So I needed to create the same function with custom text delimted (comma, semi-colon or anything you want).&lt;br /&gt;
&lt;br /&gt;
The function called: &lt;strong&gt;EXTRACTVALUE_ALL &lt;/strong&gt;which is the same as &lt;strong&gt;&lt;span style=&quot;color: navy;&quot;&gt;EXTRACTVALUE &lt;/span&gt;&lt;/strong&gt;just get a delimiter text to seperate between results. (seperated text).&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;Tested on MySQL 5.5.28.&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;strong&gt;Create Function CODE:&lt;/strong&gt;&lt;!--StartFragment--&gt;&lt;br /&gt;
&lt;pre class=&quot;Cpp&quot; name=&quot;code&quot; style=&quot;background-color: #f1f1f1; border: 1px solid black; padding: 10px;&quot;&gt;&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;DROP&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FUNCTION&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-function&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: navy;&quot;&gt;IF&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;EXISTS&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;EXTRACTVALUE_ALL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;DELIMITER&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;|
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;CREATE&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FUNCTION&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;EXTRACTVALUE_ALL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;p_xml&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-datatype&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: maroon;&quot;&gt;TEXT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;p_xpathExpr&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-datatype&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: maroon;&quot;&gt;TEXT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;p_delimiter&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-datatype&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: maroon;&quot;&gt;TEXT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;RETURNS&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;strong&gt;&lt;span class=&quot;sql1-datatype&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;TEXT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;BEGIN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-plsql-reservedword&quot;&gt;DECLARE&lt;/span&gt;&lt;/strong&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;total_elements&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-datatype&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: maroon;&quot;&gt;INT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-plsql-reservedword&quot;&gt;&lt;strong&gt;DECLARE&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;xpath_expression_count&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;xpath_expression_index&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;sql1-datatype&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: maroon;&quot;&gt;TEXT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-plsql-reservedword&quot;&gt;&lt;strong&gt;DECLARE&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;single_tag&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;result&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;sql1-datatype&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: maroon;&quot;&gt;TEXT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;;

&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-comment&quot;&gt;&lt;em&gt;&lt;span style=&quot;color: grey;&quot;&gt;# calc TOTAL elements
&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SET&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;xpath_expression_count&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-function&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: navy;&quot;&gt;CONCAT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-string&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&#39;count(&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;p_xpathExpr&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-string&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&#39;)&#39;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;);
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;SELECT&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-function&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: navy;&quot;&gt;EXTRACTVALUE&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;p_xml&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;xpath_expression_count&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INTO&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;total_elements&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;;

&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-comment&quot;&gt;&lt;em&gt;&lt;span style=&quot;color: grey;&quot;&gt;# run over elements (create long text)
&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SET&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;result&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-string&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;;
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;SET&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;xpath_expression_index&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-function&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: navy;&quot;&gt;CONCAT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;p_xpathExpr&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-string&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&#39;[$@i]&#39;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;);
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;SET&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;@&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-number&quot;&gt;&lt;span style=&quot;color: purple;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-plsql-reservedword&quot;&gt;&lt;strong&gt;WHILE&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;@&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;total_elements&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;strong&gt;&lt;span class=&quot;sql1-plsql-reservedword&quot;&gt;DO
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SET&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;single_tag&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-function&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: navy;&quot;&gt;EXTRACTVALUE&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;p_xml&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;xpath_expression_index&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;);
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;SET&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;result&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-function&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: navy;&quot;&gt;IF&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;result&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-string&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;single_tag&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-function&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: navy;&quot;&gt;CONCAT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;result&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;p_delimiter&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;single_tag&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;));
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;SET&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;@&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;@&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-number&quot;&gt;&lt;span style=&quot;color: purple;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;;
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;END&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-plsql-reservedword&quot;&gt;&lt;strong&gt;WHILE&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;;

&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-comment&quot;&gt;&lt;em&gt;&lt;span style=&quot;color: grey;&quot;&gt;# return total result
&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;RETURN&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-identifier&quot;&gt;&lt;span style=&quot;color: olive;&quot;&gt;result&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;;
&lt;/span&gt;&lt;span class=&quot;sql1-reservedword&quot;&gt;&lt;strong&gt;END&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sql1-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;sql1-symbol&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;|
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Usage Code:&lt;/strong&gt;&lt;br /&gt;
&lt;pre class=&quot;Cpp&quot; name=&quot;code&quot; style=&quot;background-color: #f1f1f1; border: 1px solid black; padding: 10px;&quot;&gt;SET @XXXMMMMLLL = &#39;&lt;root&gt;&amp;nbsp;&lt;a1&gt;&amp;nbsp;&lt;time&gt;time1&lt;/time&gt;&amp;nbsp;&lt;/a1&gt;&amp;nbsp;&lt;a1&gt;&amp;nbsp;&lt;time&gt;time2&lt;/time&gt;&amp;nbsp;&lt;/a1&gt;&lt;/root&gt;&#39;;

SELECT EXTRACTVALUE_ALL(@XXXMMMMLLL, &#39;/descendant-or-self::time&#39;, &#39;&amp;nbsp; |&amp;nbsp; &#39;);
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Output:&lt;/strong&gt;&lt;br /&gt;
&lt;pre class=&quot;Cpp&quot; name=&quot;code&quot; style=&quot;background-color: #f1f1f1; border: 1px solid black; padding: 10px;&quot;&gt;time1  |  time2
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Rememeber that you will need a MYSQL permission for creating new functions.&lt;br /&gt;
&lt;br /&gt;
MDB-BLOG :)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/7131523962345712174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2013/02/mysql-xpath-extractvalue-with-delimiter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7131523962345712174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7131523962345712174'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2013/02/mysql-xpath-extractvalue-with-delimiter.html' title='MySQL xpath ExtractValue with delimiter'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-2859568066435891992</id><published>2013-01-02T12:43:00.000+02:00</published><updated>2013-01-07T15:56:20.613+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arguments"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="command line"/><category scheme="http://www.blogger.com/atom/ns#" term="elavation"/><category scheme="http://www.blogger.com/atom/ns#" term="explorer"/><category scheme="http://www.blogger.com/atom/ns#" term="installer"/><category scheme="http://www.blogger.com/atom/ns#" term="nsis"/><category scheme="http://www.blogger.com/atom/ns#" term="parameters"/><category scheme="http://www.blogger.com/atom/ns#" term="process"/><category scheme="http://www.blogger.com/atom/ns#" term="program"/><category scheme="http://www.blogger.com/atom/ns#" term="UAC"/><category scheme="http://www.blogger.com/atom/ns#" term="win7"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="windows vista"/><category scheme="http://www.blogger.com/atom/ns#" term="winvista"/><category scheme="http://www.blogger.com/atom/ns#" term="winxp"/><title type='text'>NSIS - Launch a program as user from UAC elevated installer</title><content type='html'>&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;direction: ltr;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://nsis.sourceforge.net/Main_Page&quot;&gt;NSIS&lt;/a&gt; - Launch&amp;nbsp;a program as user from &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/bb756996.aspx&quot;&gt;UAC&lt;/a&gt;&amp;nbsp;elevated installer&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
==========================================&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
I noticed that if a program is running as&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/bb756996.aspx&quot;&gt;UAC&lt;/a&gt;&amp;nbsp;elevated (admin or high user privileges),&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
any opening process by this process will get the same privileges as the executing program,&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
which means, that any process opened by this&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/bb756996.aspx&quot;&gt;UAC&lt;/a&gt;&amp;nbsp;elevated program &lt;strong&gt;will be elevated also&lt;/strong&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
I found a solution for it, for&amp;nbsp;opening the process UN-ELEVATED from ELEVATED running program.&lt;br /&gt;
I show this information as for NSIS installer, but can be used in ANY development&amp;nbsp;environment&amp;nbsp;(C#, NSIS, C++, JAVA, VB, and any).&lt;br /&gt;
&lt;br /&gt;
The idea is to run the process in UN-ELEVATED mode, using windows&#39;s file explorer process `explorer.exe` (&lt;a href=&quot;http://en.wikipedia.org/wiki/File_Explorer_(Windows)&quot;&gt;info&lt;/a&gt;).&lt;br /&gt;
Lets say the process that we want to launch is on `$TEMP\MyUnElevatedProcess.exe`.&lt;br /&gt;
So, for NSIS code, I will just write:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;Cpp&quot; name=&quot;code&quot; style=&quot;background-color: #f1f1f1; border: 1px solid black; padding: 10px;&quot;&gt;Exec &#39;&quot;$WINDIR\explorer.exe&quot; &quot;$TEMP\MyUnElevatedProcess.exe&quot;&#39;
&lt;/pre&gt;
&lt;br /&gt;
And this will do the work...&lt;br /&gt;
The process `MyUnElevatedProcess.exe` will run with same ELEVATION that have your windows login, as have `$WINDIR\explorer.exe`.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #f1f1f1;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;u&gt;&lt;strong&gt;Execute with parameters:&lt;/strong&gt;&lt;/u&gt;&lt;br /&gt;
In addition, if the UN-ELEVATED process need to executed with parameters, you will need to create another file that executes the&amp;nbsp;UN-ELEVATED process (for example a BATCH file which just run the process with the command line parameters).&lt;br /&gt;
a good example can be:&lt;br /&gt;
&lt;pre class=&quot;Cpp&quot; name=&quot;code&quot; style=&quot;background-color: #f1f1f1; border: 1px solid black; padding: 10px;&quot;&gt;; assuming that the file `MyUnElevatedProcess.exe` exists on `$TEMP\`

; create shortcut with ARGUMENTS
CreateShortCut &quot;$TEMP\Shortcut.lnk&quot; &quot;$TEMP\MyUnElevatedProcess.exe&quot; &quot;/arg1 /arg2 /arg3&quot;

; execute the file NON elevated
Exec &#39;&quot;$WINDIR\explorer.exe&quot; &quot;$TEMP\Shortcut.lnk&quot;&#39;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember,&lt;br /&gt;
if your main program (the executing), is not ELEVATED, this logic is not relevant, because then you can just run `&lt;span style=&quot;background-color: #f1f1f1;&quot;&gt;Exec`&amp;nbsp;&lt;/span&gt;(open-process function in NSIS) which will have the same elevation as your process.&lt;br /&gt;
&lt;br /&gt;
I hope it helps,&lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB-BLOG&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/2859568066435891992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2013/01/nsis-lunch-program-as-user-from-uac.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2859568066435891992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/2859568066435891992'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2013/01/nsis-lunch-program-as-user-from-uac.html' title='NSIS - Launch a program as user from UAC elevated installer'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-8558153777619973227</id><published>2011-05-22T10:23:00.001+03:00</published><updated>2011-05-22T10:25:22.319+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="attach window"/><category scheme="http://www.blogger.com/atom/ns#" term="border"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="form"/><category scheme="http://www.blogger.com/atom/ns#" term="location"/><category scheme="http://www.blogger.com/atom/ns#" term="pin"/><category scheme="http://www.blogger.com/atom/ns#" term="position"/><category scheme="http://www.blogger.com/atom/ns#" term="win7"/><category scheme="http://www.blogger.com/atom/ns#" term="window"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="windows vista"/><category scheme="http://www.blogger.com/atom/ns#" term="winforms"/><category scheme="http://www.blogger.com/atom/ns#" term="winvista"/><category scheme="http://www.blogger.com/atom/ns#" term="winxp"/><title type='text'>c# WinForm | Check form window size and location</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Hello,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I wanted to open a new window form, exactly near another form. (pinning one form to another).&lt;br /&gt;
Because of the border difference among Windows XP, Vista and Windows7 (win7), &lt;b&gt;it didn&#39;t work easily&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
So to determine windows size under win7/vista, I had to check if &lt;a href=&quot;http://windows.microsoft.com/en-US/windows-vista/What-is-Windows-Aero&quot;&gt;Windows Aero&lt;/a&gt;. (checking made by short&amp;easy code)&lt;br /&gt;
&lt;br /&gt;
Now, after checking this, I had to also support winXP (which does not have AERO technology).&lt;br /&gt;
&lt;br /&gt;
For finding the left and right window border size (width) I used the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.aspx&quot;&gt;SystemInformation Class&lt;/a&gt; which provides information about the current system environment.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
I recommend to check if it works for other &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formborderstyle.aspx&quot;&gt;FormBorderStyle&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The code:&lt;br /&gt;
&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f0f0f0; border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid;&quot;&gt;internal&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;IsAeroEnabled()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool&amp;nbsp;isEnabled&amp;nbsp;=&amp;nbsp;false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(Environment.OSVersion.Version.Major&amp;nbsp;&gt;=&amp;nbsp;6)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DwmIsCompositionEnabled(out&amp;nbsp;isEnabled);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch&amp;nbsp;(Exception&amp;nbsp;ex)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Logger.WriteLog(ex);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;isEnabled;&lt;br /&gt;
}&lt;br /&gt;
[DllImport(&quot;dwmapi.dll&quot;)]&lt;br /&gt;
internal&amp;nbsp;static&amp;nbsp;extern&amp;nbsp;int&amp;nbsp;DwmIsCompositionEnabled(out&amp;nbsp;bool&amp;nbsp;enabled);&lt;/div&gt;&lt;br /&gt;
Best regard,&lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB Blog&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/8558153777619973227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2011/05/c-winform-check-form-window-size-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/8558153777619973227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/8558153777619973227'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2011/05/c-winform-check-form-window-size-and.html' title='c# WinForm | Check form window size and location'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-3015000566655727893</id><published>2011-05-02T10:33:00.000+03:00</published><updated>2011-05-02T10:33:43.305+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bypass"/><category scheme="http://www.blogger.com/atom/ns#" term="bypass hosts"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="file"/><category scheme="http://www.blogger.com/atom/ns#" term="hosts"/><category scheme="http://www.blogger.com/atom/ns#" term="win forms"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Check HOSTS file - C# WinForms</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Hello,&lt;br /&gt;
&lt;br /&gt;
In today&#39;s post i&#39;m giving a good &lt;u&gt;(and simple)&lt;/u&gt; anti-hacking tool which allow your application to CHECK for any changes in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Hosts_%28file%29&quot; target=&quot;_blank&quot;&gt;Windows HOSTS file&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
So, the operation is simple:&lt;br /&gt;
Just read the hosts file content, and validate that &lt;u&gt;your site DNS&lt;/u&gt; is not included in the list. &lt;br /&gt;
[basiclly, check if hosts file contains your dns name]&lt;br /&gt;
if so, the user probably is trying to &lt;b&gt;bypass your server&lt;/b&gt; so you can stop him from doing so.&lt;br /&gt;
&lt;br /&gt;
The code:&lt;br /&gt;
&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f0f0f0; border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid;&quot;&gt;&lt;span style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none&#39;&gt;&lt;span style=&#39;font-size:
9.5pt;font-family:Consolas;color:blue&#39;&gt;static&lt;/span&gt;&lt;span style=&#39;font-size:
9.5pt;font-family:Consolas&#39;&gt; &lt;span style=&#39;color:blue&#39;&gt;bool&lt;/span&gt; IsDnsByPassed(&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; p_dnsName)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none&#39;&gt;&lt;span style=&#39;font-size:
9.5pt;font-family:Consolas&#39;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none&#39;&gt;&lt;span style=&#39;font-size:
9.5pt;font-family:Consolas&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;string&lt;/span&gt; path = &lt;span style=&#39;color:#2B91AF&#39;&gt;Path&lt;/span&gt;.Combine(&lt;span
style=&#39;color:#2B91AF&#39;&gt;Environment&lt;/span&gt;.GetFolderPath(&lt;span style=&#39;color:#2B91AF&#39;&gt;Environment&lt;/span&gt;.&lt;span
style=&#39;color:#2B91AF&#39;&gt;SpecialFolder&lt;/span&gt;.System), &lt;span style=&#39;color:#A31515&#39;&gt;@&amp;quot;drivers\etc\hosts&amp;quot;&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none&#39;&gt;&lt;span style=&#39;font-size:
9.5pt;font-family:Consolas&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;string&lt;/span&gt; hostsText = &lt;span style=&#39;color:#2B91AF&#39;&gt;File&lt;/span&gt;.ReadAllText(path);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none&#39;&gt;&lt;span style=&#39;font-size:
9.5pt;font-family:Consolas&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;return&lt;/span&gt; hostsText.ToLower().Contains(p_dnsName.ToLower());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none&#39;&gt;&lt;span style=&#39;font-size:
9.5pt;font-family:Consolas&#39;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Note:&lt;br /&gt;
Although reading the HOSTS file is allowed to all user, &lt;b&gt;do not&lt;/b&gt; try to &lt;b&gt;edit&lt;/b&gt; the HOSTS file, because on Vista &amp; Windows7 this operation is allowed only for administrators. if your application is NOT running as Admin, then you won&#39;t have permission for this (and an &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.exception.aspx&quot;&gt;Exception&lt;/a&gt; will be thrown).&lt;br /&gt;
&lt;br /&gt;
Best regard,&lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB-Blog&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/3015000566655727893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2011/05/check-hosts-file-c-winforms.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/3015000566655727893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/3015000566655727893'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2011/05/check-hosts-file-c-winforms.html' title='Check HOSTS file - C# WinForms'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-6250097383920714496</id><published>2011-02-10T10:12:00.000+02:00</published><updated>2011-02-10T10:12:09.088+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="banner"/><category scheme="http://www.blogger.com/atom/ns#" term="BannerBitmap"/><category scheme="http://www.blogger.com/atom/ns#" term="embed"/><category scheme="http://www.blogger.com/atom/ns#" term="images"/><category scheme="http://www.blogger.com/atom/ns#" term="installer"/><category scheme="http://www.blogger.com/atom/ns#" term="js"/><category scheme="http://www.blogger.com/atom/ns#" term="msi"/><category scheme="http://www.blogger.com/atom/ns#" term="post build"/><category scheme="http://www.blogger.com/atom/ns#" term="script"/><category scheme="http://www.blogger.com/atom/ns#" term="splash"/><category scheme="http://www.blogger.com/atom/ns#" term="SplashBitmap"/><category scheme="http://www.blogger.com/atom/ns#" term="visual studio"/><category scheme="http://www.blogger.com/atom/ns#" term="windows installer"/><title type='text'>MSI | Embed images inside MSI installer file</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;In this post I show how to embed images inside MSI installer file.&lt;br /&gt;
&lt;br /&gt;
The first try i made was to try adding splash image and banners to the installer through Visual-Studio User-Interface. (just added two jpg files into &quot;Common Files Folder&quot;, and set the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/8s4dddtk(v=vs.80).aspx&quot;&gt;SplashBitmap&lt;/a&gt; and &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/3kbk77sf.aspx&quot;&gt;BannerBitmap&lt;/a&gt; attributes). But doing so, created a problem - when changing the image, new version installer did NOT changed the images (or the images disappeared).&lt;br /&gt;
So i needed another solution...&lt;br /&gt;
&lt;br /&gt;
The next solution is just to INSERT those images (banner&amp;amp;splash) &lt;b&gt;directly&lt;/b&gt; into the MSI file created by Visual-Studio.&lt;br /&gt;
I created file &lt;b&gt;run.js&lt;/b&gt; file, which automaticlly runs when the build process finished, and edits the MSI. This is achieved by setting the &lt;a herf=&quot;http://msdn.microsoft.com/en-us/library/6h314436.aspx&quot; href=&quot;&quot;&gt;PostBuildEvent&lt;/a&gt; on the Windows Installer project. &lt;br /&gt;
&lt;br /&gt;
The event that added is to the PostBuildEvent: (remember to copy the file to the main folder of the Windows Installer project)&lt;br /&gt;
&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f0f0f0; border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid;&quot;&gt;cscript.exe &quot;$(ProjectDir)run.js&quot; &quot;$(BuiltOuputPath)&quot;&lt;/div&gt;&lt;br /&gt;
In this way, you don&#39;t have to add any image file to your project, and it s embedded in the msi file (which u can edit any time).&lt;br /&gt;
&lt;br /&gt;
The run.js file:&lt;br /&gt;
&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f0f0f0; border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid;&quot;&gt;&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: darkgreen; font-family: Consolas; font-size: 9.5pt;&quot;&gt;// run.js &lt;msi-file&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: darkgreen; font-family: Consolas; font-size: 9.5pt;&quot;&gt;// Performs a post-build fixup of an msi&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; (WScript.Arguments.Length != 1)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;WScript.StdErr.WriteLine(WScript.ScriptName + &lt;span style=&quot;color: maroon;&quot;&gt;&quot; file&quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;WScript.Quit(1);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; filespec = WScript.Arguments(0);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; installer = WScript.CreateObject(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;WindowsInstaller.Installer&quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; database = installer.OpenDatabase(filespec, 1&lt;span style=&quot;color: darkgreen;&quot;&gt;/*msiOpenDatabaseModeTransact*/&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; sql&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; view&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; record&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;UPDATE default banner image&quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sql = &lt;span style=&quot;color: maroon;&quot;&gt;&quot;UPDATE `Binary` SET `Data` = ? WHERE `Name`= &#39;DefBannerBitmap&#39;&quot;&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;view = database.OpenView(sql)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;record = installer.CreateRecord(1);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;record.SetStream(1, &lt;span style=&quot;color: maroon;&quot;&gt;&quot;C:\\installer_banner_img.jpg&quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; view.Execute(record);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; view.Close();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;ADD splash image&quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sql = &lt;span style=&quot;color: maroon;&quot;&gt;&quot;INSERT INTO `Binary` (`Name`, `Data`) VALUES (&#39;DefSplashBitmap&#39;, ?)&quot;&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;view = database.OpenView(sql)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;record = installer.CreateRecord(1);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; record.SetStream(1, &lt;span style=&quot;color: maroon;&quot;&gt;&quot;C:\\Installer_splash_img.jpg&quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; view.Execute(record);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; view.Close();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;Update splash control&quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sql = &lt;span style=&quot;color: maroon;&quot;&gt;&quot;UPDATE `Control` SET `Text`=&#39;DefSplashBitmap&#39; WHERE `Dialog_`=&#39;SplashForm&#39; AND `Control`=&#39;SplashBmp&#39;&quot;&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;view = database.OpenView(sql)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; view.Execute();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; view.Close();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; database.Commit();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; (e) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;WScript.StdErr.Write(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;|||ERROR||| &quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdErr.WriteLine(e.Message);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Quit(1);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Note:&lt;br /&gt;
Before running this script, add a splash screen to the installer (using User-Interface view in Visual Studio)&lt;br /&gt;
&lt;br /&gt;
(*) this is also a good example how to &lt;b&gt;add/update binary(image) into your MSI using a sql script&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Best regard,&lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB-Blog&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/6250097383920714496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2011/02/msi-embed-images-inside-msi-installer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/6250097383920714496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/6250097383920714496'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2011/02/msi-embed-images-inside-msi-installer.html' title='MSI | Embed images inside MSI installer file'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-8260555157114006742</id><published>2011-02-01T18:56:00.000+02:00</published><updated>2011-02-01T18:56:13.628+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="c sharp"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="cheking"/><category scheme="http://www.blogger.com/atom/ns#" term="determine"/><category scheme="http://www.blogger.com/atom/ns#" term="flash"/><category scheme="http://www.blogger.com/atom/ns#" term="installed"/><category scheme="http://www.blogger.com/atom/ns#" term="macromedia"/><category scheme="http://www.blogger.com/atom/ns#" term="player"/><category scheme="http://www.blogger.com/atom/ns#" term="registry"/><category scheme="http://www.blogger.com/atom/ns#" term="win forms"/><category scheme="http://www.blogger.com/atom/ns#" term="winforms"/><title type='text'>C# | Determine if Adobe (Macromedia) Flash player installed.</title><content type='html'>All started when I needed to integrate an &lt;b&gt;Adobe (Macromedia) Flash object&lt;/b&gt; in my C# WinForm application.&lt;br /&gt;
I saw several posts about it, where &lt;u&gt;two&lt;/u&gt; solutions where presents:&lt;br /&gt;
1. Add WebBrowser Control and just nevigate to the &quot;test.swf&quot; file.&lt;br /&gt;
2. Create COM object of ADOBE MACROMEDIA.&lt;br /&gt;
&lt;br /&gt;
I liked the 1st option more, because I don&#39;t need to handle COM objects (and to add another DLL to the app).&lt;br /&gt;
Here is the code I used:&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;WebBrowser wb = new WebBrowser();&lt;br /&gt;
//wb.Location = SOME LOCATION&lt;br /&gt;
//wb.Size = SOME SIZE&lt;br /&gt;
wb.AllowNavigation = false;&lt;br /&gt;
wb.IsWebBrowserContextMenuEnabled = false;&lt;br /&gt;
this.Controls.Add(wb); // this = FORM&lt;br /&gt;
wb.Navigate(@&quot;C:\test.swf&quot;);&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
BUT, Then i noticed that when a pc &lt;b&gt;do NOT&lt;/b&gt; have Adobe (Macromedia) Flash player &lt;b&gt;installed&lt;/b&gt;, the webbrowser display a big red X.&lt;br /&gt;
SO, before I use the FLASH image in my winform application, &lt;u&gt;I needed to check if FLASH player is INSTALLED or not!&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
The idea is to check the registry for:&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion&lt;/div&gt;&lt;br /&gt;
&lt;b style=&quot;color: red;&quot;&gt;And indeed it worked!&lt;/b&gt;&lt;br /&gt;
Here is the full code for testing if FLASH installed (and also get the major Version):&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;internal&amp;nbsp;static&amp;nbsp;int?&amp;nbsp;GetFlashPlayerVersion()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;using&amp;nbsp;(RegistryKey&amp;nbsp;rk&amp;nbsp;=&amp;nbsp;Registry.LocalMachine.OpenSubKey(@&quot;SOFTWARE\Macromedia\FlashPlayer&quot;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(rk&amp;nbsp;!=&amp;nbsp;null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;version&amp;nbsp;=&amp;nbsp;rk.GetValue(&quot;CurrentVersion&quot;)&amp;nbsp;as&amp;nbsp;string;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(string.IsNullOrEmpty(version)&amp;nbsp;==&amp;nbsp;false)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;idx&amp;nbsp;=&amp;nbsp;version.IndexOf(&quot;,&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(idx&amp;nbsp;&gt;&amp;nbsp;0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(int.TryParse(version.Substring(0,&amp;nbsp;idx),&amp;nbsp;out&amp;nbsp;value)&amp;nbsp;==&amp;nbsp;true)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;null;&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;And the code which using the method:&lt;/b&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;int? flashVersion = WindowsUtils.GetFlashPlayerVersion();&lt;br /&gt;
if (flashVersion.HasValue == true &amp;&amp; flashVersion &gt; 6)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WebBrowser wb = new WebBrowser();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wb.AllowNavigation = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wb.IsWebBrowserContextMenuEnabled = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.Controls.Add(wb); // this = FORM&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wb.Navigate(@&quot;C:\test.swf&quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Best regards,&lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB-Blog&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/8260555157114006742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2011/02/c-determine-if-adobe-macromedia-flash.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/8260555157114006742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/8260555157114006742'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2011/02/c-determine-if-adobe-macromedia-flash.html' title='C# | Determine if Adobe (Macromedia) Flash player installed.'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-7295618597387723101</id><published>2010-12-08T16:58:00.005+02:00</published><updated>2010-12-19T11:44:17.541+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="all users"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="current user"/><category scheme="http://www.blogger.com/atom/ns#" term="everyone"/><category scheme="http://www.blogger.com/atom/ns#" term="example"/><category scheme="http://www.blogger.com/atom/ns#" term="install"/><category scheme="http://www.blogger.com/atom/ns#" term="installed"/><category scheme="http://www.blogger.com/atom/ns#" term="installer"/><category scheme="http://www.blogger.com/atom/ns#" term="just me"/><category scheme="http://www.blogger.com/atom/ns#" term="msi"/><category scheme="http://www.blogger.com/atom/ns#" term="registry"/><category scheme="http://www.blogger.com/atom/ns#" term="sample"/><category scheme="http://www.blogger.com/atom/ns#" term="setup"/><category scheme="http://www.blogger.com/atom/ns#" term="setup project"/><category scheme="http://www.blogger.com/atom/ns#" term="win forms"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="windows 7"/><category scheme="http://www.blogger.com/atom/ns#" term="windows vista"/><category scheme="http://www.blogger.com/atom/ns#" term="windows xp"/><title type='text'>C# | Check if app is installed for “All users” or &quot;Just me&quot;</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;b&gt;Today I bring a very HARD-to-find topic about getting an installed application &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd765197(v=VS.85).aspx&quot;&gt;&quot;Installation context&quot;&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;
An installation context may be &lt;u&gt;Per-Machine Installation Context (ALLUSERS=1)&lt;/u&gt; and &lt;u&gt;Per-User Installation Context (ALLUSERS=&quot;&quot;)&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;
When installing an application, the user may select one of two options:&lt;i&gt;&lt;br /&gt;
&lt;b&gt;a.&lt;/b&gt; Install [APP] for yourself&lt;br /&gt;
&lt;b&gt;b.&lt;/b&gt; or for anyone who uses this computer&lt;/i&gt;&lt;br /&gt;
[a] installs only for the &lt;b&gt;current user&lt;/b&gt;(just me) while [b] installs for the &lt;u&gt;Local System user&lt;/u&gt; which is for all-users(everyone).&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6GhYGRsk4dC__pF1yGRxQB7xvftGpAsNs-kFeUBmvrmNiVT_FrCQEXwNwJFTKEs9Iga11khifk_CxKOxvhIuiLxa3X1i6l1SkfZKbahTGbhpeywZytMbfvpEHmILUKy9G18i48gpgEwU/s1600/install.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;261&quot; n4=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6GhYGRsk4dC__pF1yGRxQB7xvftGpAsNs-kFeUBmvrmNiVT_FrCQEXwNwJFTKEs9Iga11khifk_CxKOxvhIuiLxa3X1i6l1SkfZKbahTGbhpeywZytMbfvpEHmILUKy9G18i48gpgEwU/s320/install.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In this post I will give a code for checking is an installed application &lt;b&gt;was&lt;/b&gt; installed for &quot;Everyone&quot; or &quot;Just me&quot;.&lt;br /&gt;
&lt;br /&gt;
The validation process is check if the APPLICATION-NAME exists in the registry keys under UserData.&lt;br /&gt;
(*) &lt;b&gt;Everyone&lt;/b&gt; - check under &lt;span style=&#39;color: blue;&#39;&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\&lt;b&gt;S-1-5-18&lt;/b&gt;\Products\&lt;/span&gt; (&lt;b&gt;S-1-5-18&lt;/b&gt; represents the Local System user)&lt;br /&gt;
&lt;br /&gt;
(*) &lt;b&gt;Just me (Current user)&lt;/b&gt; - check under &lt;span style=&#39;color: blue;&#39;&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\&lt;b&gt;S-?!?!?!?!&lt;/b&gt;\Products\&lt;/span&gt; (&lt;b&gt;S-?!?!?!?!&lt;/b&gt; represents the Current user. this value found by the code: &lt;span style=&#39;font-size:9.5pt;font-family:Consolas;color:#2B91AF&#39;&gt;WindowsIdentity&lt;/span&gt;&lt;span style=&#39;font-size:9.5pt;font-family:Consolas&#39;&gt;.GetCurrent().User.Value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Code] Method&#39;s return type:&lt;br /&gt;
&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f0f0f0; border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid;font-size:9.5pt;font-family:Consolas;&quot;&gt;&lt;span style=&#39;color:blue&#39;&gt;private&lt;/span&gt; &lt;span&gt;&lt;span style=&#39;color:blue&#39;&gt;enum&lt;/span&gt; &lt;span style=&#39;color:#2B91AF&#39;&gt;InstallationContexts&lt;/span&gt; { NotInstalled, Everyone, JustMe };&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
[Code] Method declaration:&lt;br /&gt;
&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f0f0f0; border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid;font-size:8pt;font-family:Consolas;&quot;&gt;&lt;span style=&#39;;color:blue&#39;&gt;private&lt;/span&gt;&lt;span style=&#39;&#39;&gt; &lt;span style=&#39;color:#2B91AF&#39;&gt;InstallationContexts&lt;/span&gt; GetInstalledContext(&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; p_appDisplayName)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:green&#39;&gt;//The S-1-5-18&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;=&lt;br /&gt;
Local System user (Everyone) | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:green&#39;&gt;//The S-XXXXXX&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;=&lt;br /&gt;
Current user (Just me)&lt;span style=&#39;mso-spacerun:yes&#39;&gt;       &lt;/span&gt;|&lt;br /&gt;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-?!?!?!?!\Products\&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;   &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;string&lt;/span&gt; key;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;string&lt;/span&gt; keyFormat = &lt;span style=&#39;color:#A31515&#39;&gt;@&amp;quot;SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\{0}\Products\&amp;quot;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:green&#39;&gt;// Check if installed for -&amp;gt; Everyone&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;key = &lt;span
style=&#39;color:blue&#39;&gt;string&lt;/span&gt;.Format(keyFormat, &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;S-1-5-18&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;bool&lt;/span&gt; res = GetInstalledContext_IsRegKeyExists(key, p_appDisplayName, &lt;span style=&#39;color:#2B91AF&#39;&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;if&lt;/span&gt; (res == &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;        &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;return&lt;/span&gt; &lt;span style=&#39;color:#2B91AF&#39;&gt;InstallationContexts&lt;/span&gt;.Everyone;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:green&#39;&gt;// Check if installed for -&amp;gt; Just me&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;key = &lt;span
style=&#39;color:blue&#39;&gt;string&lt;/span&gt;.Format(keyFormat, &lt;span style=&#39;color:#2B91AF&#39;&gt;WindowsIdentity&lt;/span&gt;.GetCurrent().User.Value);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;res = GetInstalledContext_IsRegKeyExists(key, p_appDisplayName, &lt;span
style=&#39;color:#2B91AF&#39;&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;if&lt;/span&gt; (res == &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;        &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;return&lt;/span&gt; &lt;span style=&#39;color:#2B91AF&#39;&gt;InstallationContexts&lt;/span&gt;.JustMe;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;return&lt;/span&gt; &lt;span style=&#39;color:#2B91AF&#39;&gt;InstallationContexts&lt;/span&gt;.NotInstalled;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
;color:blue&#39;&gt;private&lt;/span&gt;&lt;span style=&#39;
&#39;&gt; &lt;span style=&#39;color:blue&#39;&gt;bool&lt;/span&gt; GetInstalledContext_IsRegKeyExists(&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; p_regKey, &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; p_appDisplayName, &lt;span
style=&#39;color:#2B91AF&#39;&gt;StringComparison&lt;/span&gt; p_scompare)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;using&lt;/span&gt; (&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryKey&lt;/span&gt; regkey = &lt;span style=&#39;color:#2B91AF&#39;&gt;Registry&lt;/span&gt;.LocalMachine.OpenSubKey(p_regKey))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;        &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;if&lt;/span&gt; (regkey != &lt;span style=&#39;color:blue&#39;&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;        &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;            &lt;/span&gt;&lt;span
style=&#39;color:#2B91AF&#39;&gt;RegistryKey&lt;/span&gt; rk;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;            &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;string&lt;/span&gt;[] arrProducs = regkey.GetSubKeyNames();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;            &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;for&lt;/span&gt; (&lt;span style=&#39;color:blue&#39;&gt;int&lt;/span&gt; i = 0; i &amp;lt; arrProducs.Length; i++)&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;br /&gt;
&lt;span style=&#39;mso-spacerun:yes&#39;&gt;            &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;               &lt;/span&gt;&lt;span style=&#39;color:blue&#39;&gt;using&lt;/span&gt; (rk = regkey.OpenSubKey(arrProducs[i] + &lt;span style=&#39;color:#A31515&#39;&gt;@&amp;quot;\InstallProperties&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;               &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;                 &lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt; if&lt;/span&gt; (rk != &lt;span style=&#39;color:blue&#39;&gt;null&lt;/span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;   &lt;/span&gt;&lt;span
style=&#39;mso-pacerun:yes&#39;&gt;                     &lt;/span&gt;p_appDisplayName.Equals(rk.GetValue(&lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;DisplayName&amp;quot;&lt;/span&gt;).ToString(), p_scompare) == &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;                   &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;                        &lt;/span&gt;&lt;span style=&#39;color:blue&#39;&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;                   &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;               &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;            &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;    &lt;/span&gt;&lt;span
style=&#39;color:blue&#39;&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;
&#39;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
[Code] Method&#39;s usage example:&lt;br /&gt;
&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f0f0f0; border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid;font-size:9.5pt;font-family:Consolas;&quot;&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;InstallationContexts &lt;/span&gt;&lt;span&gt; appContext = GetInstalledContext(&lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;APP-DISPLAY-NAME&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
This code gives the ability to detect previously installed application or previously installed software is installed to ALLUSERS (everyone) or only to CURRENT USER (just me).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&#39;color:#707070; font-size: 10px;&#39;&gt;Addition on 19.12.2010:&lt;/span&gt;&lt;br /&gt;
(*) This checking operation is valid &lt;u&gt;ONLY&lt;/u&gt; for an application and software which were installed using Microsoft&#39;s &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/cc185688%28VS.85%29.aspx&quot;&gt;Windows Installer&lt;/a&gt;.&lt;br /&gt;
For general checking for installed application, check my post about &lt;a href=&quot;http://mdb-blog.blogspot.com/2010/09/c-check-if-programapplication-is.html&quot;&gt;check if program/application is installed&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enjoy...&lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB-Blog&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/7295618597387723101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2010/12/c-check-if-app-is-installed-for-all.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7295618597387723101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7295618597387723101'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2010/12/c-check-if-app-is-installed-for-all.html' title='C# | Check if app is installed for “All users” or &quot;Just me&quot;'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6GhYGRsk4dC__pF1yGRxQB7xvftGpAsNs-kFeUBmvrmNiVT_FrCQEXwNwJFTKEs9Iga11khifk_CxKOxvhIuiLxa3X1i6l1SkfZKbahTGbhpeywZytMbfvpEHmILUKy9G18i48gpgEwU/s72-c/install.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-9147197107584930074</id><published>2010-12-02T12:04:00.000+02:00</published><updated>2010-12-02T12:04:42.452+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="check"/><category scheme="http://www.blogger.com/atom/ns#" term="computer"/><category scheme="http://www.blogger.com/atom/ns#" term="dot net"/><category scheme="http://www.blogger.com/atom/ns#" term="example"/><category scheme="http://www.blogger.com/atom/ns#" term="install"/><category scheme="http://www.blogger.com/atom/ns#" term="installed"/><category scheme="http://www.blogger.com/atom/ns#" term="manage windows"/><category scheme="http://www.blogger.com/atom/ns#" term="program"/><category scheme="http://www.blogger.com/atom/ns#" term="remote"/><category scheme="http://www.blogger.com/atom/ns#" term="source code"/><category scheme="http://www.blogger.com/atom/ns#" term="uninstall"/><title type='text'>C# | check if program/application is installed on remote computer</title><content type='html'>As an advance to my previous post about &lt;a href=&quot;http://mdb-blog.blogspot.com/2010/09/c-check-if-programapplication-is.html&quot;&gt;checking if a program or an application is installed on my comptuer&lt;/a&gt;, I bringing a code for doing this validation on &lt;b&gt;a remote computer&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
The code is the same as checking for installed app in local comptuer (&lt;a href=&quot;http://mdb-blog.blogspot.com/2010/09/c-check-if-programapplication-is.html&quot;&gt;as described here&lt;/a&gt;) except that checking remote machine registry.&lt;br /&gt;
The remote machine registry checking is preformed using the static method &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/8zha3xws.aspx&quot;&gt;OpenRemoteBaseKey&lt;/a&gt; of the class &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/microsoft.win32.registrykey.aspx&quot;&gt;RegistryKey&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The code:&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;&lt;span style=&#39;font-size:9.5pt;font-family:Consolas; mso-fareast-font-family:&quot;Times New Roman&quot;;color:blue&#39;&gt;public&lt;/span&gt;&lt;span style=&#39;font-size:9.5pt;font-family:Consolas;mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt; &lt;span style=&#39;color:blue&#39;&gt;static&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style=&#39;color:blue&#39;&gt;bool&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;IsAppInstalled&lt;/span&gt;(&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;p_machineName&lt;/span&gt;, &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;p_name&lt;/span&gt;)&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; {&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;keyName&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;u1:p&gt;&amp;nbsp;&lt;/u1:p&gt; &lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:green&#39;&gt;// search in: &lt;span class=SpellE&gt;CurrentUser&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=SpellE&gt;keyName&lt;/span&gt; = &lt;span style=&#39;color:#A31515&#39;&gt;@&amp;quot;SOFTWARE\Microsoft\Windows\&lt;span class=SpellE&gt;CurrentVersion&lt;/span&gt;\Uninstall&amp;quot;&lt;/span&gt;;&lt;br&gt; &lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if&lt;/span&gt; (&lt;span class=SpellE&gt;ExistsInRemoteSubKey&lt;/span&gt;(&lt;span class=SpellE&gt;p_machineName&lt;/span&gt;, &lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryHive&lt;/span&gt;.CurrentUser&lt;/span&gt;, &lt;span class=SpellE&gt;keyName&lt;/span&gt;, &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;&lt;span class=SpellE&gt;DisplayName&lt;/span&gt;&amp;quot;&lt;/span&gt;, &lt;span class=SpellE&gt;p_name&lt;/span&gt;) == &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;)&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;u1:p&gt;&amp;nbsp;&lt;/u1:p&gt; &lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:green&#39;&gt;// search in: LocalMachine_32&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/span&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=SpellE&gt;keyName&lt;/span&gt; = &lt;span style=&#39;color:#A31515&#39;&gt;@&amp;quot;SOFTWARE\Microsoft\Windows\&lt;span class=SpellE&gt;CurrentVersion&lt;/span&gt;\Uninstall&amp;quot;&lt;/span&gt;;&lt;br&gt; &lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if&lt;/span&gt; (&lt;span class=SpellE&gt;ExistsInRemoteSubKey&lt;/span&gt;(&lt;span class=SpellE&gt;p_machineName&lt;/span&gt;, &lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryHive&lt;/span&gt;.LocalMachine&lt;/span&gt;, &lt;span class=SpellE&gt;keyName&lt;/span&gt;, &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;&lt;span class=SpellE&gt;DisplayName&lt;/span&gt;&amp;quot;&lt;/span&gt;, &lt;span class=SpellE&gt;p_name&lt;/span&gt;) == &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;)&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;u1:p&gt;&amp;nbsp;&lt;/u1:p&gt; &lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;color:green&#39;&gt;// search in: LocalMachine_64&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/span&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=SpellE&gt;keyName&lt;/span&gt; = &lt;span style=&#39;color:#A31515&#39;&gt;@&amp;quot;SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall&amp;quot;&lt;/span&gt;;&lt;br&gt; &lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if&lt;/span&gt; (&lt;span class=SpellE&gt;ExistsInRemoteSubKey&lt;/span&gt;(&lt;span class=SpellE&gt;p_machineName&lt;/span&gt;, &lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryHive&lt;/span&gt;.LocalMachine&lt;/span&gt;, &lt;span class=SpellE&gt;keyName&lt;/span&gt;, &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;&lt;span class=SpellE&gt;DisplayName&lt;/span&gt;&amp;quot;&lt;/span&gt;, &lt;span class=SpellE&gt;p_name&lt;/span&gt;) == &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;)&lt;br&gt; &lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;u1:p&gt;&amp;nbsp;&lt;/u1:p&gt; &lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;false&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; }&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;private&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;static&lt;/span&gt; &lt;span class=SpellE&gt;&lt;span style=&#39;color:blue&#39;&gt;bool&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;ExistsInRemoteSubKey&lt;/span&gt;(&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;p_machineName&lt;/span&gt;, &lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryHive&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;p_hive&lt;/span&gt;, &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;p_subKeyName&lt;/span&gt;, &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;p_attributeName&lt;/span&gt;, &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;p_name&lt;/span&gt;)&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; {&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryKey&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;subkey&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;displayName&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;u1:p&gt;&amp;nbsp;&lt;/u1:p&gt; &lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;using&lt;/span&gt; (&lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryKey&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;regHive&lt;/span&gt; = &lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryKey&lt;/span&gt;.OpenRemoteBaseKey&lt;/span&gt;(&lt;span class=SpellE&gt;p_hive&lt;/span&gt;, &lt;span class=SpellE&gt;p_machineName&lt;/span&gt;))&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;using&lt;/span&gt; (&lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;RegistryKey&lt;/span&gt;&lt;/span&gt; &lt;span class=SpellE&gt;regKey&lt;/span&gt; = &lt;span class=SpellE&gt;regHive.OpenSubKey&lt;/span&gt;(&lt;span class=SpellE&gt;p_subKeyName&lt;/span&gt;))&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;if&lt;/span&gt; (&lt;span class=SpellE&gt;regKey&lt;/span&gt; != &lt;span style=&#39;color:blue&#39;&gt;null&lt;/span&gt;)&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=SpellE&gt;foreach&lt;/span&gt;&lt;/span&gt; (&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; &lt;span class=SpellE&gt;kn&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;in&lt;/span&gt; &lt;span class=SpellE&gt;regKey.GetSubKeyNames&lt;/span&gt;())&lt;br&gt; &lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;using&lt;/span&gt; (&lt;span class=SpellE&gt;subkey&lt;/span&gt; = &lt;span class=SpellE&gt;regKey.OpenSubKey&lt;/span&gt;(&lt;span class=SpellE&gt;kn&lt;/span&gt;))&lt;br&gt; &lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=SpellE&gt;displayName&lt;/span&gt; = &lt;span class=SpellE&gt;subkey.GetValue&lt;/span&gt;(&lt;span class=SpellE&gt;p_attributeName&lt;/span&gt;) &lt;span style=&#39;color:blue&#39;&gt;as&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;if&lt;/span&gt; (&lt;span class=SpellE&gt;p_name.Equals&lt;/span&gt;(&lt;span class=SpellE&gt;displayName&lt;/span&gt;, &lt;span class=SpellE&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase&lt;/span&gt;) == &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;) &lt;span style=&#39;color:green&#39;&gt;// key found!&lt;/span&gt;&lt;br&gt; &lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;{&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=GramE&gt;return&lt;/span&gt;&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;;&lt;br&gt; &lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;}&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;false&lt;/span&gt;;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; }&lt;u1:p&gt;&lt;/u1:p&gt;&lt;br&gt; &lt;span style=&#39;color:blue&#39;&gt;&lt;u1:p&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/u1:p&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
How to use this code:&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR:#f0f0f0;font-size:9.5pt;font-family:Consolas;&quot; align=&quot;left&quot;&gt;&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt;&lt;span style=&#39;&#39;&gt; MACHINE_NAME = &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;MY-PC-NAME&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt;&lt;span style=&#39;&#39;&gt; APPLICATION_NAME = &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;APP-NAME&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;try&lt;/span&gt;&lt;span style=&#39;&#39;&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;{&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;&lt;span style=&#39;color:blue&#39;&gt;bool&lt;/span&gt; isAppInstalled = IsAppInstalled(MACHINE_NAME, APPLICATION_NAME);&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; msg = &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt;.Format(&lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;Application &#39;{0}&#39; is {1} on the remote-machine &#39;{2}&#39;!&amp;quot;&lt;/span&gt;,&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt; &lt;/span&gt;APPLICATION_NAME,&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt; &lt;/span&gt;isAppInstalled ? &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;installed&amp;quot;&lt;/span&gt; : &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;NOT installed&amp;quot;&lt;/span&gt;,&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt; &lt;/span&gt;MACHINE_NAME);&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;MessageBox&lt;/span&gt;.Show(msg);&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;}&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;catch&lt;/span&gt;&lt;span style=&#39;&#39;&gt; (&lt;span style=&#39;color:#2B91AF&#39;&gt;Exception&lt;/span&gt; ex)&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;{&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;&lt;span style=&#39;color:#2B91AF&#39;&gt;MessageBox&lt;/span&gt;.Show(ex.Message);&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style=&#39;&#39;&gt;}&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy...&lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB-Blog&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/9147197107584930074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2010/12/c-check-if-programapplication-is.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/9147197107584930074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/9147197107584930074'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2010/12/c-check-if-programapplication-is.html' title='C# | check if program/application is installed on remote computer'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-8760354349607380568</id><published>2010-11-28T15:03:00.000+02:00</published><updated>2010-11-28T15:03:58.291+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bootstraper"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="IA64"/><category scheme="http://www.blogger.com/atom/ns#" term="package"/><category scheme="http://www.blogger.com/atom/ns#" term="redistributable"/><category scheme="http://www.blogger.com/atom/ns#" term="vcredist"/><category scheme="http://www.blogger.com/atom/ns#" term="visual c++"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual C++ 2008 SP1"/><category scheme="http://www.blogger.com/atom/ns#" term="x64"/><category scheme="http://www.blogger.com/atom/ns#" term="x86"/><title type='text'>c# | Check if VcRedist installed (x86/x64/IA64)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;The following code checks if vcredist (&lt;b&gt;Microsoft Visual C++ 2008 SP1 Redistributable Package&lt;/b&gt;) is installed.&lt;br /&gt;
This check is used when we want to assure that the Visual C++ 2008 SP1 is INSTALLED perior to the application launch.&lt;br /&gt;
&lt;br /&gt;
The code is using the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa370363.aspx&quot;&gt;MsiQueryProductState&lt;/a&gt; function from the &lt;b&gt;msi.dll&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
We check the product codes of vcredist_x86, vcredist_x64 and vcredist_IA64 using MsiQueryProductState to validate if the product is installed or not!&lt;br /&gt;
(vcredist product codes are listed &lt;a href=&quot;http://mdb-blog.blogspot.com/2010/11/bootstrapper-package-detect-vcredist.html&quot;&gt;HERE&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
The Code:&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;&lt;div style=&quot;font-size:9.5pt;font-family:Consolas&quot;&gt;&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;color:blue&#39;&gt;public&lt;/span&gt;&lt;span style=&#39;&#39;&gt; &lt;span style=&#39;color:blue&#39;&gt;enum&lt;/span&gt; &lt;span style=&#39;color:#2B91AF&#39;&gt;INSTALLSTATE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_NOTUSED = -7,  &lt;span style=&#39;color:green&#39;&gt;// component disabled&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_BADCONFIG = -6,  &lt;span style=&#39;color:green&#39;&gt;// configuration datacorrupt&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_INCOMPLETE = -5,  &lt;span style=&#39;color:green&#39;&gt;// installationsuspended or in progress&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_SOURCEABSENT = -4,  &lt;span style=&#39;color:green&#39;&gt;// run from source,source is unavailable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_MOREDATA = -3,  &lt;span style=&#39;color:green&#39;&gt;// return bufferoverflow&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_INVALIDARG = -2,  &lt;span style=&#39;color:green&#39;&gt;// invalid functionargument&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_UNKNOWN = -1,  &lt;span style=&#39;color:green&#39;&gt;// unrecognized productor feature&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_BROKEN = 0,  &lt;span style=&#39;color:green&#39;&gt;// broken&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_ADVERTISED = 1,  &lt;span style=&#39;color:green&#39;&gt;// advertised feature&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_REMOVED = 1,  &lt;span style=&#39;color:green&#39;&gt;// component being removed(action state, not settable)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_ABSENT = 2,  &lt;span style=&#39;color:green&#39;&gt;// uninstalled (or actionstate absent but clients remain)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_LOCAL = 3,  &lt;span style=&#39;color:green&#39;&gt;// installed on local drive&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_SOURCE = 4,  &lt;span style=&#39;color:green&#39;&gt;// run from source, CD ornet&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   INSTALLSTATE_DEFAULT = 5,  &lt;span style=&#39;color:green&#39;&gt;// use default, local orsource&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;[&lt;span style=&#39;color:#2B91AF&#39;&gt;DllImport&lt;/span&gt;(&lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;msi.dll&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;color:blue&#39;&gt;private&lt;/span&gt;&lt;span style=&#39;&#39;&gt; &lt;span style=&#39;color:blue&#39;&gt;static&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;extern&lt;/span&gt; &lt;span style=&#39;color:#2B91AF&#39;&gt;INSTALLSTATE&lt;/span&gt; MsiQueryProductState(&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt; product);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;color:blue&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;color:blue&#39;&gt;public&lt;/span&gt;&lt;span style=&#39;&#39;&gt; &lt;span style=&#39;color:blue&#39;&gt;static&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;bool&lt;/span&gt;IsVCRedistInstalled()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   &lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt;[] strCodes = &lt;span style=&#39;color:blue&#39;&gt;new&lt;/span&gt;&lt;span style=&#39;color:blue&#39;&gt;string&lt;/span&gt;[]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:green&#39;&gt;//vcredist_x86 - ProductCode&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{9A25302D-30C0-39D9-BD6F-21E6EC160475}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{86CE1746-9EFF-3C9C-8755-81EA8903AC34}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{CA8A885F-E95B-3FC6-BB91-F4D9377C7686}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{820B6609-4C97-3A2B-B644-573B06A0F0CC}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{6AFCA4E1-9B78-3640-8F72-A7BF33448200}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{F03CB3EF-DC16-35CE-B3C1-C68EA09E5E97}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{402ED4A1-8F5B-387A-8688-997ABF58B8F2}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{887868A2-D6DE-3255-AA92-AA0B5A59B874}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{527BBE2F-1FED-3D8B-91CB-4DB0F838E69E}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{57660847-B1F7-35BD-9118-F62EB863A598}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:green&#39;&gt;//vcredist_x64 - ProductCode&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{8220EEFE-38CD-377E-8595-13398D740ACE}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{56F27690-F6EA-3356-980A-02BA379506EE}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{14297226-E0A0-3781-8911-E9D529552663}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{9B3F0A88-790D-3AD9-9F96-B19CF2746452}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{D285FC5F-3021-32E9-9C59-24CA325BDC5C}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{092EE08C-60DE-3FE6-B113-90076EC06D0D}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{A96702F7-EFC8-3EED-BE46-22C809D4EBE5}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{92B8FD1F-C1AE-3750-8577-631B0AA85DF5}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{2DFD8316-9EF1-3210-908C-4CB61961C1AC}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{E34002C7-8CE7-3F76-B36C-09FA973BC4F6}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:green&#39;&gt;//vcredist_IA64 - ProductCode&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{5827ECE1-AEB0-328E-B813-6FC68622C1F9}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{9363B366-8370-34F7-8164-25052EBF35FD}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{4EC84186-70BB-3121-9C1B-C63512D7126E}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{1F7B9797-A3C8-3B98-85C4-00620F221CE8}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{6BE0A7C7-3462-30EE-8B77-D21D7848D967}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{BF58DC07-38AB-3887-8000-70173F9650EA}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{D289009A-2728-3D0A-833E-F08E0E58934C}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{9476DC14-00C3-3C36-A435-00D714CF77B8}&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:#A31515&#39;&gt;&amp;quot;{678835D7-D524-3C0E-9C33-1D3767FDA6BF}&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   };&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   &lt;span style=&#39;color:#2B91AF&#39;&gt;INSTALLSTATE&lt;/span&gt; state;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   &lt;span style=&#39;color:blue&#39;&gt;for&lt;/span&gt; (&lt;span style=&#39;color:blue&#39;&gt;int&lt;/span&gt; i = 0;i &amp;lt; strCodes.Length; i++)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       state = MsiQueryProductState(strCodes[i]);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       &lt;span style=&#39;color:blue&#39;&gt;if&lt;/span&gt; (state == &lt;span style=&#39;color:#2B91AF&#39;&gt;INSTALLSTATE&lt;/span&gt;.INSTALLSTATE_LOCAL||&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;           state == &lt;span style=&#39;color:#2B91AF&#39;&gt;INSTALLSTATE&lt;/span&gt;.INSTALLSTATE_DEFAULT)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;           &lt;span style=&#39;color:blue&#39;&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;       }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;   &lt;span style=&#39;color:blue&#39;&gt;return&lt;/span&gt; &lt;span style=&#39;color:blue&#39;&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&#39;&#39;&gt;&lt;span style=&#39;&#39;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
You may also &lt;b&gt;extent and improve&lt;/b&gt; this method to check only those Product Codes that matching current architecture (x86/x64/IA64).&lt;br /&gt;
&lt;br /&gt;
Hope it helps, &lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB-Blog&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/8760354349607380568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2010/11/c-check-if-vcredist-installed.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/8760354349607380568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/8760354349607380568'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2010/11/c-check-if-vcredist-installed.html' title='c# | Check if VcRedist installed (x86/x64/IA64)'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9087075508981084919.post-7156529584670816175</id><published>2010-11-24T14:54:00.003+02:00</published><updated>2010-11-25T10:26:07.238+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="compact framework"/><category scheme="http://www.blogger.com/atom/ns#" term="dot net"/><category scheme="http://www.blogger.com/atom/ns#" term="framework 2.0"/><category scheme="http://www.blogger.com/atom/ns#" term="IA64"/><category scheme="http://www.blogger.com/atom/ns#" term="install"/><category scheme="http://www.blogger.com/atom/ns#" term="itanium"/><category scheme="http://www.blogger.com/atom/ns#" term="redistributable"/><category scheme="http://www.blogger.com/atom/ns#" term="runtime"/><category scheme="http://www.blogger.com/atom/ns#" term="setup"/><category scheme="http://www.blogger.com/atom/ns#" term="setup project"/><category scheme="http://www.blogger.com/atom/ns#" term="sp1"/><category scheme="http://www.blogger.com/atom/ns#" term="visual c++"/><category scheme="http://www.blogger.com/atom/ns#" term="visual studio"/><category scheme="http://www.blogger.com/atom/ns#" term="x64"/><category scheme="http://www.blogger.com/atom/ns#" term="x86"/><title type='text'>Bootstrapper Package | detect vcredist installed | Microsoft Visual C++ 2008 SP1 Redistributable Package</title><content type='html'>As a countinue post of my previous &lt;a href=&quot;http://mdb-blog.blogspot.com/2010/11/bootstrapper-package-visual-studio-2010.html&quot;&gt;http://mdb-blog.blogspot.com/2010/11/bootstrapper-package-visual-studio-2010.html&lt;/a&gt; about Bootstrapper Package ( Visual Studio 2010) of Microsoft .NET Framework Version 2.0 Redistributable, i give an example for:&lt;br /&gt;
&lt;b&gt;Bootstrapper Package for Microsoft Visual C++ 2008 SP1 Redistributable Package&lt;/b&gt;&lt;br /&gt;
(also known as Visual C++ 9.0 runtime redistributable package)&lt;br /&gt;
&lt;br /&gt;
As I searched for many sites, I couldn&#39;t find any &lt;b&gt;GOOD&lt;/b&gt; article about detecting this resi package.&lt;br /&gt;
So, I built a &lt;u&gt;bootstrapper package&lt;/u&gt; using the information I found on Aaron&#39;s post: &quot;How to detect the presence of the Visual C++ 9.0 runtime redistributable package&quot; at &lt;a href=&quot;http://blogs.msdn.com/b/astebner/archive/2009/01/29/9384143.aspx&quot;&gt;http://blogs.msdn.com/b/astebner/archive/2009/01/29/9384143.aspx&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
First of all, we have to detect if one of (vcredist_x86, vcredist_x64, vcredist_IA64) is INSTALLED! &lt;br /&gt;
To do so, we will use the &lt;a href=&quot;http://msdn2.microsoft.com/en-gb/library/aa370363.aspx&quot;&gt;MsiQueryProductState API&lt;/a&gt; inside our &lt;b&gt;Product.xml&lt;/b&gt; in the bootstrapper package folder. (for more information about bootstrapper package files watch my &lt;a href=&quot;http://mdb-blog.blogspot.com/2010/11/bootstrapper-package-visual-studio-2010.html&quot;&gt;previous post&lt;/a&gt;.&lt;br /&gt;
Because there is a difference in the &lt;b&gt;Product-Code&lt;/b&gt; between the &lt;u&gt;localized versions&lt;/u&gt; of the redistributables for VC++ 2008, i checked and write down all the product codes in the following table:&lt;br /&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;&lt;table border=1&gt;&lt;tr style=&quot;color: firebrick; font-weight: bold;&quot;&gt;&lt;td&gt;vcredist_x86.exe&lt;/td&gt;&lt;td&gt;ProductCode&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{9A25302D-30C0-39D9-BD6F-21E6EC160475}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;ChineseSimplified&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{86CE1746-9EFF-3C9C-8755-81EA8903AC34}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;ChineseTraditional&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{CA8A885F-E95B-3FC6-BB91-F4D9377C7686}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;French&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{820B6609-4C97-3A2B-B644-573B06A0F0CC}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;German&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{6AFCA4E1-9B78-3640-8F72-A7BF33448200}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Italian&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{F03CB3EF-DC16-35CE-B3C1-C68EA09E5E97}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Japanese&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{402ED4A1-8F5B-387A-8688-997ABF58B8F2}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Korean&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{887868A2-D6DE-3255-AA92-AA0B5A59B874}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Russian&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{527BBE2F-1FED-3D8B-91CB-4DB0F838E69E}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Spanish&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{57660847-B1F7-35BD-9118-F62EB863A598}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;UpgradeCode &lt;u&gt;for all&lt;/u&gt; {AA783A14-A7A3-3D33-95F0-9A351D530011}&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;table border=1&gt;&lt;tr style=&quot;color: firebrick; font-weight: bold;&quot;&gt;&lt;td&gt;vcredist_x64.exe&lt;/td&gt;&lt;td&gt;ProductCode&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{8220EEFE-38CD-377E-8595-13398D740ACE}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;ChineseSimplified&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{56F27690-F6EA-3356-980A-02BA379506EE}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;ChineseTraditional&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{14297226-E0A0-3781-8911-E9D529552663}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;French&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{9B3F0A88-790D-3AD9-9F96-B19CF2746452}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;German&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{D285FC5F-3021-32E9-9C59-24CA325BDC5C}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Italian&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{092EE08C-60DE-3FE6-B113-90076EC06D0D}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Japanese&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{A96702F7-EFC8-3EED-BE46-22C809D4EBE5}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Korean&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{92B8FD1F-C1AE-3750-8577-631B0AA85DF5}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Russian&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{2DFD8316-9EF1-3210-908C-4CB61961C1AC}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Spanish&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{E34002C7-8CE7-3F76-B36C-09FA973BC4F6}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;UpgradeCode &lt;u&gt;for all&lt;/u&gt; {AA783A14-A7A3-3D33-95F0-9A351D530011}&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;table border=1&gt;&lt;tr style=&quot;color: firebrick; font-weight: bold;&quot;&gt;&lt;td&gt;vcredist_IA64.exe&lt;/td&gt;&lt;td&gt;ProductCode&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{5827ECE1-AEB0-328E-B813-6FC68622C1F9}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;ChineseSimplified&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{9363B366-8370-34F7-8164-25052EBF35FD}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;ChineseTraditional&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{4EC84186-70BB-3121-9C1B-C63512D7126E}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;French&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{1F7B9797-A3C8-3B98-85C4-00620F221CE8}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;German&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{6BE0A7C7-3462-30EE-8B77-D21D7848D967}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Italian&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{BF58DC07-38AB-3887-8000-70173F9650EA}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Japanese&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{D289009A-2728-3D0A-833E-F08E0E58934C}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Korean&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{9476DC14-00C3-3C36-A435-00D714CF77B8}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Russian&lt;/b&gt;&lt;/td&gt;&lt;td&gt;[Installer NOT exists!]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Spanish&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{678835D7-D524-3C0E-9C33-1D3767FDA6BF}&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;UpgradeCode &lt;u&gt;for all&lt;/u&gt; {AA783A14-A7A3-3D33-95F0-9A351D530011}&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
All left is to create the bootstrapper folder (name it &lt;u&gt;Vcredist2008sp1&lt;/u&gt;):&lt;br /&gt;
(*) en (FOLDER)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*) package.xml&lt;br /&gt;
(*) Product.xml&lt;br /&gt;
(*) redist.txt&lt;br /&gt;
(*) vcredist_x86.exe (&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&quot;&gt;download here&lt;/a&gt;)&lt;br /&gt;
(*) vcredist_x64.exe (&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=BA9257CA-337F-4B40-8C14-157CFDFFEE4E&quot;&gt;download here&lt;/a&gt;)&lt;br /&gt;
(*) vcredist_IA64.exe (&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=DCC211E6-AB82-41D6-8DEC-C79937393FE8&quot;&gt;download here&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;color: firebrick;&quot;&gt;package.xml file:&lt;/b&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;&amp;lt;?xml&amp;nbsp;version=&quot;1.0&quot;&amp;nbsp;encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Package&amp;nbsp;Name=&quot;DisplayName&quot;&amp;nbsp;Culture=&quot;Culture&quot;&amp;nbsp;xmlns=&quot;http://schemas.microsoft.com/developer/2004/01/bootstrapper&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;Strings&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;String&amp;nbsp;Name=&quot;Culture&quot;&amp;gt;en&amp;lt;/String&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;String&amp;nbsp;Name=&quot;DisplayName&quot;&amp;gt;Microsoft&amp;nbsp;Visual&amp;nbsp;C++&amp;nbsp;2008&amp;nbsp;SP1&amp;nbsp;Redistributable&amp;nbsp;Package&amp;lt;/String&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;String&amp;nbsp;Name=&quot;AdminRequired&quot;&amp;gt;Administrator&amp;nbsp;permissions&amp;nbsp;are&amp;nbsp;required&amp;nbsp;to&amp;nbsp;install&amp;nbsp;the&amp;nbsp;Microsoft&amp;nbsp;Visual&amp;nbsp;C++&amp;nbsp;2008&amp;nbsp;SP1&amp;nbsp;Redistributable&amp;nbsp;Package&amp;nbsp;Contact&amp;nbsp;your&amp;nbsp;administrator.&amp;lt;/String&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;String&amp;nbsp;Name=&quot;CancelledInstall&quot;&amp;gt;The&amp;nbsp;user&amp;nbsp;has&amp;nbsp;cancelled&amp;nbsp;the&amp;nbsp;installation.&amp;nbsp;The&amp;nbsp;Microsoft&amp;nbsp;Visual&amp;nbsp;C++&amp;nbsp;2008&amp;nbsp;SP1&amp;nbsp;Redistributable&amp;nbsp;Package&amp;nbsp;has&amp;nbsp;not&amp;nbsp;been&amp;nbsp;installed.&amp;lt;/String&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;String&amp;nbsp;Name=&quot;GeneralFailure&quot;&amp;gt;A&amp;nbsp;failure&amp;nbsp;occurred&amp;nbsp;attempting&amp;nbsp;to&amp;nbsp;install&amp;nbsp;the&amp;nbsp;Microsoft&amp;nbsp;Visual&amp;nbsp;C++&amp;nbsp;2008&amp;nbsp;SP1&amp;nbsp;Redistributable&amp;nbsp;Package.&amp;lt;/String&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;String&amp;nbsp;Name=&quot;ErrorDownloading&quot;&amp;gt;A&amp;nbsp;failure&amp;nbsp;occurred&amp;nbsp;while&amp;nbsp;downloading&amp;nbsp;Microsoft&amp;nbsp;Visual&amp;nbsp;C++&amp;nbsp;2008&amp;nbsp;SP1&amp;nbsp;Redistributable&amp;nbsp;Package.&amp;lt;/String&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/Strings&amp;gt;&lt;br /&gt;
&amp;lt;/Package&amp;gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b style=&quot;color: firebrick;&quot;&gt;Product.xml file:&lt;/b&gt;&lt;br /&gt;
1. PackageFiles (installation files):&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;&amp;lt;PackageFiles&amp;nbsp;CopyAllPackageFiles=&quot;false&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;PackageFile&amp;nbsp;Name=&quot;vcredist_x86.exe&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;PackageFile&amp;nbsp;Name=&quot;vcredist_x64.exe&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;PackageFile&amp;nbsp;Name=&quot;vcredist_IA64.exe&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;lt;/PackageFiles&amp;gt;&lt;/div&gt;&lt;br /&gt;
2. InstallChecks (valiadation prefurmed):&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;&amp;lt;InstallChecks&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;!--VCRedistx86&amp;nbsp;-&amp;nbsp;ProductCodes--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_English_Installed&quot;&amp;nbsp;Product=&quot;{9A25302D-30C0-39D9-BD6F-21E6EC160475}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_ChineseSimplified_Installed&quot;&amp;nbsp;Product=&quot;{86CE1746-9EFF-3C9C-8755-81EA8903AC34}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_ChineseTraditional_Installed&quot;&amp;nbsp;Product=&quot;{CA8A885F-E95B-3FC6-BB91-F4D9377C7686}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_French_Installed&quot;&amp;nbsp;Product=&quot;{820B6609-4C97-3A2B-B644-573B06A0F0CC}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_German_Installed&quot;&amp;nbsp;Product=&quot;{6AFCA4E1-9B78-3640-8F72-A7BF33448200}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_Italian_Installed&quot;&amp;nbsp;Product=&quot;{F03CB3EF-DC16-35CE-B3C1-C68EA09E5E97}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_Japanese_Installed&quot;&amp;nbsp;Product=&quot;{402ED4A1-8F5B-387A-8688-997ABF58B8F2}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_Korean_Installed&quot;&amp;nbsp;Product=&quot;{887868A2-D6DE-3255-AA92-AA0B5A59B874}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_Russian_Installed&quot;&amp;nbsp;Product=&quot;{527BBE2F-1FED-3D8B-91CB-4DB0F838E69E}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx86_Spanish_Installed&quot;&amp;nbsp;Product=&quot;{57660847-B1F7-35BD-9118-F62EB863A598}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;!--VCRedistx64&amp;nbsp;-&amp;nbsp;ProductCodes--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_English_Installed&quot;&amp;nbsp;Product=&quot;{8220EEFE-38CD-377E-8595-13398D740ACE}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_ChineseSimplified_Installed&quot;&amp;nbsp;Product=&quot;{56F27690-F6EA-3356-980A-02BA379506EE}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_ChineseTraditional_Installed&quot;&amp;nbsp;Product=&quot;{14297226-E0A0-3781-8911-E9D529552663}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_French_Installed&quot;&amp;nbsp;Product=&quot;{9B3F0A88-790D-3AD9-9F96-B19CF2746452}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_German_Installed&quot;&amp;nbsp;Product=&quot;{D285FC5F-3021-32E9-9C59-24CA325BDC5C}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_Italian_Installed&quot;&amp;nbsp;Product=&quot;{092EE08C-60DE-3FE6-B113-90076EC06D0D}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_Japanese_Installed&quot;&amp;nbsp;Product=&quot;{A96702F7-EFC8-3EED-BE46-22C809D4EBE5}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_Korean_Installed&quot;&amp;nbsp;Product=&quot;{92B8FD1F-C1AE-3750-8577-631B0AA85DF5}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_Russian_Installed&quot;&amp;nbsp;Product=&quot;{2DFD8316-9EF1-3210-908C-4CB61961C1AC}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistx64_Spanish_Installed&quot;&amp;nbsp;Product=&quot;{E34002C7-8CE7-3F76-B36C-09FA973BC4F6}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;!--VCRedistIA64&amp;nbsp;-&amp;nbsp;ProductCodes--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_English_Installed&quot;&amp;nbsp;Product=&quot;{5827ECE1-AEB0-328E-B813-6FC68622C1F9}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_ChineseSimplified_Installed&quot;&amp;nbsp;Product=&quot;{9363B366-8370-34F7-8164-25052EBF35FD}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_ChineseTraditional_Installed&quot;&amp;nbsp;Product=&quot;{4EC84186-70BB-3121-9C1B-C63512D7126E}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_French_Installed&quot;&amp;nbsp;Product=&quot;{1F7B9797-A3C8-3B98-85C4-00620F221CE8}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_German_Installed&quot;&amp;nbsp;Product=&quot;{6BE0A7C7-3462-30EE-8B77-D21D7848D967}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_Italian_Installed&quot;&amp;nbsp;Product=&quot;{BF58DC07-38AB-3887-8000-70173F9650EA}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_Japanese_Installed&quot;&amp;nbsp;Product=&quot;{D289009A-2728-3D0A-833E-F08E0E58934C}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_Korean_Installed&quot;&amp;nbsp;Product=&quot;{9476DC14-00C3-3C36-A435-00D714CF77B8}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;!--RUSSIAN&amp;nbsp;installer&amp;nbsp;not&amp;nbsp;exists&amp;nbsp;--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;MsiProductCheck&amp;nbsp;Property=&quot;VCRedistIA64_Spanish_Installed&quot;&amp;nbsp;Product=&quot;{678835D7-D524-3C0E-9C33-1D3767FDA6BF}&quot;&amp;nbsp;/&amp;gt;&lt;br /&gt;
&amp;lt;/InstallChecks&amp;gt;&lt;/div&gt;&lt;br /&gt;
3. for each installation check if any localized installed:&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #f0f0f0&quot; align=&quot;left&quot;&gt;&amp;lt;BypassIf Property=&quot;VCRedistx86_English_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_ChineseSimplified_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_ChineseTraditional_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_French_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_German_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_Italian_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_Japanese_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_Korean_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_Russian_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;BypassIf Property=&quot;VCRedistx86_Spanish_Installed&quot; Compare=&quot;ValueEqualTo&quot; Value=&quot;5&quot; /&amp;gt;&lt;/div&gt;&lt;br /&gt;
Download link for the full bootstrapper package is here:&lt;br /&gt;
&lt;a href=&quot;http://cid-539d62829af123fb.office.live.com/self.aspx/.Public/Bootstrapper%20Package/Vcredist2008sp1%5E_bootstrapper.zip&quot;&gt;download full package here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Hope it helps,&lt;br /&gt;
&lt;a href=&quot;http://mdb-blog.blogspot.com/&quot;&gt;MDB-Blog&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdb-blog.blogspot.com/feeds/7156529584670816175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mdb-blog.blogspot.com/2010/11/bootstrapper-package-detect-vcredist.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7156529584670816175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9087075508981084919/posts/default/7156529584670816175'/><link rel='alternate' type='text/html' href='http://mdb-blog.blogspot.com/2010/11/bootstrapper-package-detect-vcredist.html' title='Bootstrapper Package | detect vcredist installed | Microsoft Visual C++ 2008 SP1 Redistributable Package'/><author><name>sami.e</name><uri>http://www.blogger.com/profile/17924298382466536337</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry></feed>