[openrtm-commit:00410] r478 - in branches/RELENG_1_1/OpenRTM-aist-Python/installer: . OpenRTP

openrtm @ openrtm.org openrtm @ openrtm.org
2011年 9月 16日 (金) 18:37:35 JST


Author: kurihara
Date: 2011-09-16 18:37:35 +0900 (Fri, 16 Sep 2011)
New Revision: 478

Added:
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in
Modified:
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.in
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTMpywxs.py
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_Mondo_RTM.wxs
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_en-us.wxl
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_hu-hu.wxl
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_ja-jp.wxl
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_ko-kr.wxl
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_zh-tw.wxl
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/build.cmd
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/makewxs.py
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/uuid.py
   branches/RELENG_1_1/OpenRTM-aist-Python/installer/yat.py
Log:
update for 1.1.0.
WixUI_*.wxl: added Codepage parameter.

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.in
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.in	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.in	2011-09-16 09:37:35 UTC (rev 478)
@@ -1,29 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">   
-  <?define ProductName = "OpenRTM-aist-1.0.1 for Python"?>
-  <Product Name="OpenRTM-aist-1.0.1 for Python" 
-           Id="11043B94-16BA-11DF-97DA-001C23DA0BDA"
+  <?define ProductName = "{% Product.Name %}-{% Product.Version %} for Python"?>
+  <Product Name="{% Product.Name %}-{% Product.Version %} for Python" 
+           Id="{% Product.Id %}"
            Language='$(var.language)'
            Codepage='$(var.codepage)'
-           Version="1.0.0" 
-           Manufacturer="AIST"
-           UpgradeCode="958ED570-5471-4E82-8378-01C6068F31C2">
+           Version="{% Product.Version %}" 
+           Manufacturer="{% Product.Manufacturer %}"
+           UpgradeCode="{% Product.UpgradeCode %}">
     <Package Id="*" 
              Keywords="Installer"
-             Description="OpenRTM-aist-Pyton Installer"
-             InstallerVersion="300"
+             Description="{% Package.Description %}"
+             InstallerVersion="{% Package.InstallerVersion %}"
              Languages='$(var.language)'
-             Compressed="yes"
+             Compressed="{% Package.Compressed %}"
              SummaryCodepage='$(var.codepage)' />
 
-    <!-- プロパティ -->
+    <!-- Property -->
     <Property Id='USERPROFILEDIR' Value='%USERPROFILE%' />
 
     <!-- RTSE Property-->
     <Property Id="RTSE_FILEEXISTS">
-      <DirectorySearch Id="CheckFileDir" Path="C:\Program Files">
+      <DirectorySearch Id="CheckFileDir" Path="C:\Program Files\OpenRTM-aist\{% Product.ShortVersion %}">
         <DirectorySearch Id="CheckFileDir2" Path ="OpenRTP">
-          <DirectorySearch Id="CheckFileDir3" Path ="RTSystemEditor">
+          <DirectorySearch Id="CheckFileDir3" Path ="{% Product.ShortVersion %}\RTSystemEditor">
             <FileSearch Id="CheckFile" Name="RTSystemEditorRCP.exe" />
           </DirectorySearch>
         </DirectorySearch>
@@ -60,8 +60,7 @@
     <SetProperty Id="PYTHON26DIR" After="AppSearch" Value="[PYTHON26]">
     </SetProperty>
 
-    <!-- アップグレード -->
-    <Upgrade Id="958ED570-5471-4E82-8378-01C6068F31C2">
+    <Upgrade Id="{% Product.UpgradeCode %}">
       <UpgradeVersion OnlyDetect="yes"
                       Minimum="1.0.0"
                       Maximum="1.1.0"
@@ -69,7 +68,7 @@
                       IncludeMinimum="no" /> 
       <UpgradeVersion OnlyDetect="no"
                       Minimum="1.0.0"
-                      Maximum="1.0.0.1"
+                      Maximum="1.1.0.1"
                       Property="OLDERVERSIONBEINGUPGRADED"
                       IncludeMaximum="no" /> 
       <UpgradeVersion OnlyDetect='no' Property='PREVIOUSFOUND'
@@ -80,7 +79,6 @@
     <InstallExecuteSequence>
       <RemoveExistingProducts Before="InstallInitialize"/>
 
-      <!-- インストール完了時のIDLコンパイル実行 -->
       <Custom Action="IDLCOMPILE_PY24" After='InstallFinalize'>
 	NOT Installed AND PYTHON24
       </Custom>
@@ -91,7 +89,6 @@
 	NOT Installed AND PYTHON26
       </Custom>
 
-      <!-- アンインストール時のフォルダー削除(IDLコンパイル分) -->
       <Custom Action="REMOVEFOLDER_PY24" Before='InstallInitialize'>
 	Installed AND PYTHON24
       </Custom>
@@ -102,18 +99,15 @@
 	Installed AND PYTHON26
       </Custom>
 
-      <!-- アンインストール時のフォルダー削除(examples/Python) -->
       <Custom Action="REMOVEFOLDER_RTM" Before='InstallInitialize'>Installed</Custom>
 
     </InstallExecuteSequence>
 
-    <!-- メディア -->
     <Media Id="1" Cabinet="OpenRTMpython.cab" EmbedCab="yes"/>
 
-    <!-- 常にAll Users へ登録する場合は下記を有効にする -->
+    <!-- enable this value when you want register to ALL User -->
     <!-- <Property Id="ALLUSERS" Value="1" /> -->
 
-    <!-- インストール条件判定 -->
     <Condition Message="[ProductName] requires python 2.4, 2.5 or 2.6">
       <![CDATA[Installed OR (PYTHON24 <> "" OR PYTHON25 <> "" OR PYTHON26 <> "")]]>
     </Condition>
@@ -460,10 +454,12 @@
       </Directory>
 
 
-      <!-- Program Files フォルダ -->
+      <!-- Program Files -->
       <Directory Id="ProgramFilesFolder" SourceName="PFILE">
-        <Directory Id="INSTALLLOCATION" Name="OpenRTM-aist">
-          <Directory Id="Version" Name="1.0">
+        <Directory Id="INSTALLLOCATION"
+				   Name="{% Product.Name %}">
+		  <Directory Id="Version"
+					 Name="{% Product.ShortVersion %}">
 
             <!-- bin -->
             <Directory Id="bin" Name="bin">
@@ -861,21 +857,21 @@
             <!-- end of examples -->
             </Directory>
 
+			<!-- rtmtools components -->
+			<?if $(env.INCLUDE_OPENRTP) = YES ?>
+			<?include OpenRTP_inc.wxs ?>
+			<?endif ?>
+			<!-- end of rtmtools -->
+
           </Directory>
         </Directory>
 
-	<!-- rtmtools components -->
-	<?if $(env.INCLUDE_OPENRTP) = YES ?>
-	<?include OpenRTP_inc.wxs ?>
-	<?endif ?>
-	<!-- end of rtmtools -->
-
-      <!-- end of Program Files フォルダ -->
+      <!-- end of Program Files Folder -->
       </Directory>
 
-      <!-- プログラムフォルダ -->
       <Directory Id="ProgramMenuFolder">
-        <Directory Id="AppMenuFolder" Name="OpenRTM-aist">
+        <Directory Id="AppMenuFolder"
+				   Name="{% Product.Name %} {% Product.ShortVersion %}">
           <Directory Id="PythonMenuFolder" Name="Python">
             <Directory Id="ToolsMenuFolder" Name="tools">
             </Directory>
@@ -892,7 +888,7 @@
     <!-- end of SourceDir -->
     </Directory>
 
-    <!-- 機能定義 omniORBpy24 -->
+    <!-- Function definition omniORBpy24 -->
     <Feature Id="omniORBpy24" Level="1" Title="OpenRTM-aist for Python 2.4"
              ConfigurableDirectory="PYTHON24DIR">
       <Condition Level="1"><![CDATA[ NOT PYTHON24 =  ""]]></Condition>
@@ -1010,7 +1006,7 @@
       </Feature>
     </Feature>
 
-    <!-- 機能定義 omniORBpy25 -->
+    <!-- Function definition omniORBpy25 -->
     <Feature Id="omniORBpy25" Level="1" Title="OpenRTM-aist for Python 2.5"
              ConfigurableDirectory="PYTHON25DIR">
       <Condition Level="1"><![CDATA[ NOT PYTHON25 =  ""]]></Condition>
@@ -1128,7 +1124,7 @@
       </Feature>
     </Feature>
 
-    <!-- 機能定義 omniORBpy26 -->
+    <!-- Function definition omniORBpy26 -->
     <Feature Id="omniORBpy26" Level="1" Title="OpenRTM-aist for Python 2.6"
              ConfigurableDirectory="PYTHON26DIR">
       <Condition Level="1"><![CDATA[ NOT PYTHON26 =  ""]]></Condition>
@@ -1235,7 +1231,8 @@
       </Feature>
 
       <!-- OpenRTM_aist -->
-      <Feature Id="Py26_OpenRTM_aist" Level="1" Title="OpenRTM-aist (Python)">
+      <Feature Id="Py26_OpenRTM_aist" Level="1" Title="OpenRTM-aist (Python)"
+			   ConfigurableDirectory="INSTALLLOCATION">
         <ComponentRef Id="Py26_RtmOpenrtm_aistUtilsRtcprof"/>
         <ComponentRef Id="Py26_RtmOpenrtm_aistUtilsRtcd"/>
         <ComponentRef Id="Py26_RtmOpenrtm_aistRoot"/>
@@ -1246,7 +1243,7 @@
       </Feature>
     </Feature>
 
-    <!-- 機能定義 OpenRTM-aist -->
+    <!-- Function definition OpenRTM-aist -->
     <Feature Id="ProductFeature" Level="1" Title="OpenRTM-aist (Python) common files"
              ConfigurableDirectory="INSTALLLOCATION">
 
@@ -1291,17 +1288,13 @@
 
       <!-- rtse rcp -->
       <Feature Id="RTSystemEditor" Level="1" Title="RTSystemEditor">
-	<ComponentRef Id="RTSystemEditor" />
-	<ComponentRef Id="configuration" />
-	<ComponentRef Id="plugins" />
-	<ComponentRef Id="org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907" />
+	<ComponentRef Id="Openrtp" />
+	<ComponentRef Id="OpenrtpConfiguration" />
+	<ComponentRef Id="OpenrtpPlugins" />
+	<ComponentRef Id="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610" />
 	<ComponentRef Id="META_INF" />
-	<ComponentRef Id="org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227" />
-	<ComponentRef Id="META_INF_1" />
-	<ComponentRef Id="org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721" />
+	<ComponentRef Id="org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731" />
 	<ComponentRef Id="META_INF_2" />
-	<ComponentRef Id="org.junit_3.8.1" />
-	<ComponentRef Id="META_INF_3" />
       </Feature>
     </Feature>
     <?endif ?>
@@ -1309,14 +1302,13 @@
     <WixVariable Id="WixUILicenseRtf" Value="License.rtf" />
     <WixVariable Id="WixUIBannerBmp" Value="Bitmaps/bannrbmp.bmp" />
     <WixVariable Id="WixUIDialogBmp" Value="Bitmaps/dlgbmp.bmp" />
+    <WixVariable Id="WixUICostingPopupOptOut" Value="1" Overridable="no" />
 
     <!-- <UIRef Id="WixUI_Mondo" /> -->
-    <!-- WixUI_Mondo にインストールの種類を選択するダイアログを追加したもの -->
     <UIRef Id="WixUI_Mondo_RTM" />
 
     <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
 
-    <!-- インストール完了時のIDLコンパイル実行 -->
     <CustomAction Id='IDLCOMPILE_PY24' Directory="PYTHON24DIR"
                   ExeCommand='"[bin]idlcompile.bat" "[bin]idlcompile.py" 2.4 "[Version]examples\Python"' 
                   Return='asyncWait' />
@@ -1329,7 +1321,6 @@
                   ExeCommand='"[bin]idlcompile.bat" "[bin]idlcompile.py" 2.6 "[Version]examples\Python"' 
                   Return='asyncWait' />
 
-    <!-- アンインストール時のフォルダー削除(IDLコンパイル分) -->
     <CustomAction Id='REMOVEFOLDER_PY24' Directory="PYTHON24DIR"
                   ExeCommand='cmd.exe /C RMDIR /Q /S Lib\\site-packages\\OpenRTM_aist' Return='ignore' />
     <CustomAction Id='REMOVEFOLDER_PY25' Directory="PYTHON25DIR"
@@ -1337,9 +1328,8 @@
     <CustomAction Id='REMOVEFOLDER_PY26' Directory="PYTHON26DIR"
                   ExeCommand='cmd.exe /C RMDIR /Q /S Lib\\site-packages\\OpenRTM_aist' Return='ignore' />
 
-      <!-- アンインストール時のフォルダー削除(examples/Python) -->
     <CustomAction Id='REMOVEFOLDER_RTM' Directory="INSTALLLOCATION"
-                  ExeCommand='cmd.exe /C RMDIR /Q /S 1.0\\examples\\Python' Return='ignore' />
+                  ExeCommand='cmd.exe /C RMDIR /Q /S {% Product.ShortVersion %}\\examples\\Python' Return='ignore' />
 
   </Product>
 </Wix>

Added: branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in	                        (rev 0)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in	2011-09-16 09:37:35 UTC (rev 478)
@@ -0,0 +1,17 @@
+Product:
+  Name: OpenRTM-aist
+  ShortName: OpenRTM
+  Id: 11043B94-16BA-11DF-97DA-001C23DA0BDA
+  Language: "1041"
+  Codepage: "932"
+  Version: 1.1.0
+  ShortVersion: 1.1
+  Manufacturer: AIST
+  UpgradeCode: 958ED570-5471-4E82-8378-01C6068F31C2
+Package:
+  Description: OpenRTM-aist-Python Installer
+  InstallerVersion: "300"
+  Languages: "1041"
+  Compressed: 'yes'
+  SummaryCodepage: "932"
+

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTMpywxs.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTMpywxs.py	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTMpywxs.py	2011-09-16 09:37:35 UTC (rev 478)
@@ -65,7 +65,7 @@
 ##
 base_dir = os.getenv("OPENRTM_PY")
 if base_dir == None:
-    base_dir = "C:\\distribution\\OpenRTM-aist-Python-1.0.0\\"
+    base_dir = "C:\\distribution\\OpenRTM-aist-Python-1.1.0\\"
 else:
     base_dir = base_dir.replace("\"", "")
     base_dir += "\\"

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs	2011-09-16 09:37:35 UTC (rev 478)
@@ -1,181 +1,292 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
+  <!-- root directory -->		
   <Directory Id="OpenRTP" Name="OpenRTP">
-    <Directory Id="RTSystemEditor" Name="RTSystemEditor">
-      <Component Id="RTSystemEditor" DiskId="1" Guid="2748F847-387F-4AB8-AC7C-0557AA4DD742">
-        <File Id="_.eclipseproduct" Name=".eclipseproduct" Source="C:\distribution\OpenRTP\RTSystemEditor\.eclipseproduct" />
-        <File Id="RTSystemEditorRCP.exe"
-	      Name="RTSystemEditorRCP.exe"
-	      Source="C:\distribution\OpenRTP\RTSystemEditor\RTSystemEditorRCP.exe">
-	  <Shortcut Id="RTSystemEditorRCP.exe"
-		    Directory="ToolsMenuFolder"
-		    Name="RT System Editor"
-		    Show="normal" WorkingDirectory="USERPROFILEDIR"/>
-	</File>
-        <File Id="startup.jar" Name="startup.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\startup.jar" />
-      </Component>
-      <Directory Id="configuration" Name="configuration">
-        <Component Id="configuration" DiskId="1" Guid="FBF727A3-5CBF-4AAA-B51F-430097A51090">
-          <File Id="config.ini" Name="config.ini" Source="C:\distribution\OpenRTP\RTSystemEditor\configuration\config.ini" />
-        </Component>
+    <Directory Id="OpenRTPVersion" Name="1.1">
+      <Component Id="Openrtp" Guid="6C2EF40F-8300-11E0-B1B3-00059A3C7800">
+	<Environment Id="OPENRTP_ROOT" Name="OPENRTP_ROOT" Action="set"
+		     System="yes" Value="[openrtpVersion]" />
+		<File Id="Openrtp0000" Name="RTSystemEditorRCP.exe"
+	      DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\RTSystemEditorRCP.exe">
+	  	  <Shortcut Id="Openrtp0000" Directory="ToolsMenuFolder"
+		    Name="RTSystemEditor"
+		    Arguments="-data "%USERPROFILE%\workspace""
+		    Show="normal" WorkingDirectory="OpenRTPVersion"/>
+	  	</File>
+		<File Id="Openrtp0001" Name=".eclipseproduct"
+	      DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\.eclipseproduct">
+	  	</File>
+	      </Component>
+      
+      <!-- configuration -->
+      <Directory Id="openrtp_configuration" Name="configuration">
+        <Component Id="OpenrtpConfiguration" Guid="6C3F95E1-8300-11E0-8815-00059A3C7800">
+	  	  <File Id="OpenrtpConfiguration0000" Name="config.ini"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\configuration\\config.ini">
+	  </File>
+	          </Component>
       </Directory>
-      <Directory Id="plugins" Name="plugins">
-        <Component Id="plugins" DiskId="1" Guid="D96B7838-06D5-4281-93AE-A5A6F694350D">
-          <File Id="com.ibm.icu.nl1_3.4.5.v200609270227.jar" Name="com.ibm.icu.nl1_3.4.5.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\com.ibm.icu.nl1_3.4.5.v200609270227.jar" />
-          <File Id="com.ibm.icu_3.4.5.20061213.jar" Name="com.ibm.icu_3.4.5.20061213.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\com.ibm.icu_3.4.5.20061213.jar" />
-          <File Id="jp.go.aist.rtm.nameserviceview.nl1_1.0.0.jar" Name="jp.go.aist.rtm.nameserviceview.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.nameserviceview.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.nameserviceview_1.0.0.jar" Name="jp.go.aist.rtm.nameserviceview_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.nameserviceview_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.repositoryView.nl1_1.0.0.jar" Name="jp.go.aist.rtm.repositoryView.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.repositoryView.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.repositoryView_1.0.0.jar" Name="jp.go.aist.rtm.repositoryView_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.repositoryView_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.systemeditor.nl1_1.0.0.jar" Name="jp.go.aist.rtm.systemeditor.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.systemeditor.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar" Name="jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.systemeditor_1.0.0.jar" Name="jp.go.aist.rtm.systemeditor_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.systemeditor_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.toolscommon.nl1_1.0.0.jar" Name="jp.go.aist.rtm.toolscommon.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.toolscommon.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.toolscommon.profiles.nl1_1.0.0.jar" Name="jp.go.aist.rtm.toolscommon.profiles.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.toolscommon.profiles.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.toolscommon.profiles_1.0.0.jar" Name="jp.go.aist.rtm.toolscommon.profiles_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.toolscommon.profiles_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.toolscommon_1.0.0.jar" Name="jp.go.aist.rtm.toolscommon_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.toolscommon_1.0.0.jar" />
-          <File Id="org.eclipse.ant.core.nl1_3.1.100.v200609270227.jar" Name="org.eclipse.ant.core.nl1_3.1.100.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ant.core.nl1_3.1.100.v200609270227.jar" />
-          <File Id="org.eclipse.ant.core_3.1.100.v20060531.jar" Name="org.eclipse.ant.core_3.1.100.v20060531.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ant.core_3.1.100.v20060531.jar" />
-          <File Id="org.eclipse.core.commands.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.commands.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.commands.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.commands_3.2.0.I20060605_1400.jar" Name="org.eclipse.core.commands_3.2.0.I20060605-1400.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.commands_3.2.0.I20060605-1400.jar" />
-          <File Id="org.eclipse.core.contenttype.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.contenttype.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.contenttype.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.contenttype_3.2.0.v20060603.jar" Name="org.eclipse.core.contenttype_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.contenttype_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.expressions.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.core.expressions.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.expressions.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.core.expressions_3.2.2.r322_v20070109a.jar" Name="org.eclipse.core.expressions_3.2.2.r322_v20070109a.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.expressions_3.2.2.r322_v20070109a.jar" />
-          <File Id="org.eclipse.core.filebuffers.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.core.filebuffers.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filebuffers.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.core.filebuffers_3.2.1.r321_v20060721.jar" Name="org.eclipse.core.filebuffers_3.2.1.r321_v20060721.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filebuffers_3.2.1.r321_v20060721.jar" />
-          <File Id="org.eclipse.core.filesystem.nl1_1.0.0.v200609270227.jar" Name="org.eclipse.core.filesystem.nl1_1.0.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filesystem.nl1_1.0.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.filesystem.win32.x86_1.0.0.v20060603.jar" Name="org.eclipse.core.filesystem.win32.x86_1.0.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filesystem.win32.x86_1.0.0.v20060603.jar" />
-          <File Id="org.eclipse.core.filesystem_1.0.0.v20060603.jar" Name="org.eclipse.core.filesystem_1.0.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filesystem_1.0.0.v20060603.jar" />
-          <File Id="org.eclipse.core.jobs.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.jobs.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.jobs.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.jobs_3.2.0.v20060603.jar" Name="org.eclipse.core.jobs_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.jobs_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.resources.compatibility_3.2.0.v20060603.jar" Name="org.eclipse.core.resources.compatibility_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.resources.compatibility_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.resources.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.core.resources.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.resources.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.core.resources.win32_3.2.0.v20060603.jar" Name="org.eclipse.core.resources.win32_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.resources.win32_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.resources_3.2.2.R32x_v20061218.jar" Name="org.eclipse.core.resources_3.2.2.R32x_v20061218.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.resources_3.2.2.R32x_v20061218.jar" />
-          <File Id="org.eclipse.core.runtime.compatibility.auth.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.runtime.compatibility.auth.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.auth.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.runtime.compatibility.auth_3.2.0.v20060601.jar" Name="org.eclipse.core.runtime.compatibility.auth_3.2.0.v20060601.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.auth_3.2.0.v20060601.jar" />
-          <File Id="org.eclipse.core.runtime.compatibility.nl1_3.1.100.v200609270227.jar" Name="org.eclipse.core.runtime.compatibility.nl1_3.1.100.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.nl1_3.1.100.v200609270227.jar" />
-          <File Id="org.eclipse.core.runtime.compatibility_3.1.100.v20060603.jar" Name="org.eclipse.core.runtime.compatibility_3.1.100.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility_3.1.100.v20060603.jar" />
-          <File Id="org.eclipse.core.runtime.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.runtime.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.runtime_3.2.0.v20060603.jar" Name="org.eclipse.core.runtime_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.variables.nl1_3.1.100.v200609270227.jar" Name="org.eclipse.core.variables.nl1_3.1.100.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.variables.nl1_3.1.100.v200609270227.jar" />
-          <File Id="org.eclipse.core.variables_3.1.100.v20060605.jar" Name="org.eclipse.core.variables_3.1.100.v20060605.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.variables_3.1.100.v20060605.jar" />
-          <File Id="org.eclipse.draw2d_3.2.2.v20070208.jar" Name="org.eclipse.draw2d_3.2.2.v20070208.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.draw2d_3.2.2.v20070208.jar" />
-          <File Id="org.eclipse.emf.common_2.2.2.v200808252119.jar" Name="org.eclipse.emf.common_2.2.2.v200808252119.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.emf.common_2.2.2.v200808252119.jar" />
-          <File Id="org.eclipse.emf.ecore.xmi_2.2.5.v200808252119.jar" Name="org.eclipse.emf.ecore.xmi_2.2.5.v200808252119.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.emf.ecore.xmi_2.2.5.v200808252119.jar" />
-          <File Id="org.eclipse.emf.ecore_2.2.4.v200808252119.jar" Name="org.eclipse.emf.ecore_2.2.4.v200808252119.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.emf.ecore_2.2.4.v200808252119.jar" />
-          <File Id="org.eclipse.equinox.common.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.equinox.common.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.common.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.equinox.common_3.2.0.v20060603.jar" Name="org.eclipse.equinox.common_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.common_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.equinox.preferences.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.equinox.preferences.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.preferences.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.equinox.preferences_3.2.1.R32x_v20060717.jar" Name="org.eclipse.equinox.preferences_3.2.1.R32x_v20060717.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.preferences_3.2.1.R32x_v20060717.jar" />
-          <File Id="org.eclipse.equinox.registry.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.equinox.registry.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.registry.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.equinox.registry_3.2.1.R32x_v20060814.jar" Name="org.eclipse.equinox.registry_3.2.1.R32x_v20060814.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.registry_3.2.1.R32x_v20060814.jar" />
-          <File Id="org.eclipse.gef_3.2.2.v20070208.jar" Name="org.eclipse.gef_3.2.2.v20070208.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.gef_3.2.2.v20070208.jar" />
-          <File Id="org.eclipse.help.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.help.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.help.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.help_3.2.2.R322_v20061213.jar" Name="org.eclipse.help_3.2.2.R322_v20061213.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.help_3.2.2.R322_v20061213.jar" />
-          <File Id="org.eclipse.jface.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.jface.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jface.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.jface.text.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.jface.text.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jface.text.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.jface.text_3.2.2.r322_v20070104.jar" Name="org.eclipse.jface.text_3.2.2.r322_v20070104.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jface.text_3.2.2.r322_v20070104.jar" />
-          <File Id="org.eclipse.jface_3.2.2.M20061214_1200.jar" Name="org.eclipse.jface_3.2.2.M20061214-1200.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jface_3.2.2.M20061214-1200.jar" />
-          <File Id="org.eclipse.osgi.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.osgi.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.osgi.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.osgi_3.2.2.R32x_v20070118.jar" Name="org.eclipse.osgi_3.2.2.R32x_v20070118.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.osgi_3.2.2.R32x_v20070118.jar" />
-          <File Id="org.eclipse.pde.junit.runtime.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.pde.junit.runtime.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.pde.junit.runtime.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.pde.junit.runtime_3.2.0.v20060605.jar" Name="org.eclipse.pde.junit.runtime_3.2.0.v20060605.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.pde.junit.runtime_3.2.0.v20060605.jar" />
-          <File Id="org.eclipse.swt.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.swt.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.swt.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar" Name="org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar" />
-          <File Id="org.eclipse.swt_3.2.2.v3236b.jar" Name="org.eclipse.swt_3.2.2.v3236b.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.swt_3.2.2.v3236b.jar" />
-          <File Id="org.eclipse.text.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.text.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.text.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.text_3.2.0.v20060605_1400.jar" Name="org.eclipse.text_3.2.0.v20060605-1400.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.text_3.2.0.v20060605-1400.jar" />
-          <File Id="org.eclipse.ui.console.nl1_3.1.100.v200609270227.jar" Name="org.eclipse.ui.console.nl1_3.1.100.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.console.nl1_3.1.100.v200609270227.jar" />
-          <File Id="org.eclipse.ui.console_3.1.100.v20060605.jar" Name="org.eclipse.ui.console_3.1.100.v20060605.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.console_3.1.100.v20060605.jar" />
-          <File Id="org.eclipse.ui.editors.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.editors.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.editors.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.editors_3.2.1.r321_v20060721.jar" Name="org.eclipse.ui.editors_3.2.1.r321_v20060721.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.editors_3.2.1.r321_v20060721.jar" />
-          <File Id="org.eclipse.ui.forms.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.ui.forms.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.forms.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.ui.forms_3.2.0.v20060602.jar" Name="org.eclipse.ui.forms_3.2.0.v20060602.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.forms_3.2.0.v20060602.jar" />
-          <File Id="org.eclipse.ui.ide.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.ide.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.ide.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.ide_3.2.1.M20060915_1030.jar" Name="org.eclipse.ui.ide_3.2.1.M20060915-1030.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.ide_3.2.1.M20060915-1030.jar" />
-          <File Id="org.eclipse.ui.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.views.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.views.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.views.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.views_3.2.1.M20060906_0800.jar" Name="org.eclipse.ui.views_3.2.1.M20060906-0800.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.views_3.2.1.M20060906-0800.jar" />
-          <File Id="org.eclipse.ui.win32_3.2.0.I20060605_1400.jar" Name="org.eclipse.ui.win32_3.2.0.I20060605-1400.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.win32_3.2.0.I20060605-1400.jar" />
-          <File Id="org.eclipse.ui.workbench.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.workbench.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.workbench.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.workbench.texteditor.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.ui.workbench.texteditor.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.workbench.texteditor.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.ui.workbench.texteditor_3.2.0.v20060605_1400.jar" Name="org.eclipse.ui.workbench.texteditor_3.2.0.v20060605-1400.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.workbench.texteditor_3.2.0.v20060605-1400.jar" />
-          <File Id="org.eclipse.ui.workbench_3.2.2.M20070119_0800.jar" Name="org.eclipse.ui.workbench_3.2.2.M20070119-0800.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.workbench_3.2.2.M20070119-0800.jar" />
-          <File Id="org.eclipse.ui_3.2.1.M20061108.jar" Name="org.eclipse.ui_3.2.1.M20061108.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui_3.2.1.M20061108.jar" />
-          <File Id="org.eclipse.update.configurator.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.update.configurator.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.configurator.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar" Name="org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar" />
-          <File Id="org.eclipse.update.core.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.update.core.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.core.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.update.core.win32_3.2.2.R32x_v20061214.jar" Name="org.eclipse.update.core.win32_3.2.2.R32x_v20061214.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.core.win32_3.2.2.R32x_v20061214.jar" />
-          <File Id="org.eclipse.update.core_3.2.3.R32x_v20070118.jar" Name="org.eclipse.update.core_3.2.3.R32x_v20070118.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.core_3.2.3.R32x_v20070118.jar" />
-          <File Id="org.eclipse.update.ui.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.update.ui.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.ui.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.update.ui_3.2.2.R32x_v20070111.jar" Name="org.eclipse.update.ui_3.2.2.R32x_v20070111.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.ui_3.2.2.R32x_v20070111.jar" />
-        </Component>
-        <Directory Id="org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907" Name="org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907">
-          <Component Id="org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907" DiskId="1" Guid="9B406546-ADAC-458F-8868-4D8E286A179F">
-            <File Id="about.html" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\about.html" />
-            <File Id="fragment.properties" Name="fragment.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\fragment.properties" />
-            <File Id="runtime_registry_compatibility.jar" Name="runtime_registry_compatibility.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\runtime_registry_compatibility.jar" />
+
+      <!-- plugins -->
+      <Directory Id="openrtp_plugins" Name="plugins">
+        <Component Id="OpenrtpPlugins" Guid="6C3F95E1-8300-11E0-87AE-00059A3C7800">
+	  	  <File Id="OpenrtpPlugins0000" Name="com.ibm.icu.nl_ja_3.8.1.v20080530.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\com.ibm.icu.nl_ja_3.8.1.v20080530.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0001" Name="com.ibm.icu_3.8.1.v20080530.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\com.ibm.icu_3.8.1.v20080530.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0002" Name="jp.go.aist.rtm.nameserviceview.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.nameserviceview.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0003" Name="jp.go.aist.rtm.nameserviceview_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.nameserviceview_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0004" Name="jp.go.aist.rtm.repositoryView.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.repositoryView.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0005" Name="jp.go.aist.rtm.repositoryView_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.repositoryView_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0006" Name="jp.go.aist.rtm.systemeditor.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.systemeditor.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0007" Name="jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0008" Name="jp.go.aist.rtm.systemeditor_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.systemeditor_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0009" Name="jp.go.aist.rtm.toolscommon.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.toolscommon.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0010" Name="jp.go.aist.rtm.toolscommon.profiles.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.toolscommon.profiles.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0011" Name="jp.go.aist.rtm.toolscommon.profiles_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.toolscommon.profiles_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0012" Name="jp.go.aist.rtm.toolscommon_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.toolscommon_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0013" Name="org.eclipse.core.commands.nl_ja_3.4.0.I20080509-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.commands.nl_ja_3.4.0.I20080509-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0014" Name="org.eclipse.core.commands_3.4.0.I20080509-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.commands_3.4.0.I20080509-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0015" Name="org.eclipse.core.contenttype.nl_ja_3.3.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.contenttype.nl_ja_3.3.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0016" Name="org.eclipse.core.contenttype_3.3.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.contenttype_3.3.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0017" Name="org.eclipse.core.databinding.nl_ja_1.1.1.M20080827-0800b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.databinding.nl_ja_1.1.1.M20080827-0800b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0018" Name="org.eclipse.core.databinding_1.1.1.M20080827-0800b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.databinding_1.1.1.M20080827-0800b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0019" Name="org.eclipse.core.expressions.nl_ja_3.4.1.r342_v20081203-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.expressions.nl_ja_3.4.1.r342_v20081203-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0020" Name="org.eclipse.core.expressions_3.4.1.r342_v20081203-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.expressions_3.4.1.r342_v20081203-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0021" Name="org.eclipse.core.filebuffers.nl_ja_3.4.0.v20080603-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filebuffers.nl_ja_3.4.0.v20080603-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0022" Name="org.eclipse.core.filebuffers_3.4.0.v20080603-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filebuffers_3.4.0.v20080603-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0023" Name="org.eclipse.core.filesystem.nl_ja_1.2.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filesystem.nl_ja_1.2.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0024" Name="org.eclipse.core.filesystem.win32.x86_1.1.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filesystem.win32.x86_1.1.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0025" Name="org.eclipse.core.filesystem_1.2.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filesystem_1.2.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0026" Name="org.eclipse.core.jobs.nl_ja_3.4.1.R34x_v20081128.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.jobs.nl_ja_3.4.1.R34x_v20081128.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0027" Name="org.eclipse.core.jobs_3.4.1.R34x_v20081128.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.jobs_3.4.1.R34x_v20081128.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0028" Name="org.eclipse.core.resources.compatibility_3.4.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.resources.compatibility_3.4.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0029" Name="org.eclipse.core.resources.nl_ja_3.4.2.R34x_v20090126.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.resources.nl_ja_3.4.2.R34x_v20090126.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0030" Name="org.eclipse.core.resources.win32.x86_3.4.0.v20071204.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.resources.win32.x86_3.4.0.v20071204.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0031" Name="org.eclipse.core.resources_3.4.2.R34x_v20090126.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.resources_3.4.2.R34x_v20090126.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0033" Name="org.eclipse.core.runtime_3.4.0.v20080512.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.runtime_3.4.0.v20080512.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0034" Name="org.eclipse.draw2d_3.4.2.v20090114-1330.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.draw2d_3.4.2.v20090114-1330.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0035" Name="org.eclipse.emf.common_2.4.0.v200902171115.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.emf.common_2.4.0.v200902171115.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0036" Name="org.eclipse.emf.ecore.xmi_2.4.1.v200902171115.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.emf.ecore.xmi_2.4.1.v200902171115.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0037" Name="org.eclipse.emf.ecore_2.4.2.v200902171115.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.emf.ecore_2.4.2.v200902171115.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0038" Name="org.eclipse.equinox.app.nl_ja_1.1.0.v20080421-2006.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.app.nl_ja_1.1.0.v20080421-2006.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0039" Name="org.eclipse.equinox.app_1.1.0.v20080421-2006.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.app_1.1.0.v20080421-2006.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0040" Name="org.eclipse.equinox.common.nl_ja_3.4.0.v20080421-2006.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.common.nl_ja_3.4.0.v20080421-2006.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0041" Name="org.eclipse.equinox.common_3.4.0.v20080421-2006.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.common_3.4.0.v20080421-2006.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0042" Name="org.eclipse.equinox.launcher.nl_ja_1.0.101.R34x_v20081125.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.launcher.nl_ja_1.0.101.R34x_v20081125.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0043" Name="org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0044" Name="org.eclipse.equinox.preferences.nl_ja_3.2.201.R34x_v20080709.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.preferences.nl_ja_3.2.201.R34x_v20080709.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0045" Name="org.eclipse.equinox.preferences_3.2.201.R34x_v20080709.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.preferences_3.2.201.R34x_v20080709.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0046" Name="org.eclipse.equinox.registry.nl_ja_3.4.0.v20080516-0950.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.registry.nl_ja_3.4.0.v20080516-0950.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0047" Name="org.eclipse.equinox.registry_3.4.0.v20080516-0950.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.registry_3.4.0.v20080516-0950.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0048" Name="org.eclipse.gef_3.4.1.v20080806.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.gef_3.4.1.v20080806.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0049" Name="org.eclipse.help.nl_ja_3.3.102.v20081014_34x.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.help.nl_ja_3.3.102.v20081014_34x.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0050" Name="org.eclipse.help_3.3.102.v20081014_34x.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.help_3.3.102.v20081014_34x.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0051" Name="org.eclipse.jface.databinding.nl_ja_1.2.1.M20080827-0800a.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.databinding.nl_ja_1.2.1.M20080827-0800a.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0052" Name="org.eclipse.jface.databinding_1.2.1.M20080827-0800a.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.databinding_1.2.1.M20080827-0800a.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0053" Name="org.eclipse.jface.nl_ja_3.4.2.M20090107-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.nl_ja_3.4.2.M20090107-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0054" Name="org.eclipse.jface.text.nl_ja_3.4.2.r342_v20081119-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.text.nl_ja_3.4.2.r342_v20081119-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0055" Name="org.eclipse.jface.text_3.4.2.r342_v20081119-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.text_3.4.2.r342_v20081119-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0056" Name="org.eclipse.jface_3.4.2.M20090107-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface_3.4.2.M20090107-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0057" Name="org.eclipse.osgi.nl_ja_3.4.3.R34x_v20081215-1030.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.osgi.nl_ja_3.4.3.R34x_v20081215-1030.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0058" Name="org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0059" Name="org.eclipse.swt.nl_ja_3.4.2.v3452b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.swt.nl_ja_3.4.2.v3452b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0060" Name="org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0061" Name="org.eclipse.swt_3.4.2.v3452b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.swt_3.4.2.v3452b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0062" Name="org.eclipse.text.nl_ja_3.4.0.v20080605-1800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.text.nl_ja_3.4.0.v20080605-1800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0063" Name="org.eclipse.text_3.4.0.v20080605-1800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.text_3.4.0.v20080605-1800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0064" Name="org.eclipse.ui.editors.nl_ja_3.4.0.v20080603-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.editors.nl_ja_3.4.0.v20080603-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0065" Name="org.eclipse.ui.editors_3.4.0.v20080603-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.editors_3.4.0.v20080603-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0066" Name="org.eclipse.ui.ide.nl_ja_3.4.2.M20090127-1700.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.ide.nl_ja_3.4.2.M20090127-1700.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0067" Name="org.eclipse.ui.ide_3.4.2.M20090127-1700.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.ide_3.4.2.M20090127-1700.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0068" Name="org.eclipse.ui.nl_ja_3.4.2.M20090204-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.nl_ja_3.4.2.M20090204-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0069" Name="org.eclipse.ui.views.nl_ja_3.3.1.M20081112-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.views.nl_ja_3.3.1.M20081112-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0070" Name="org.eclipse.ui.views_3.3.1.M20081112-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.views_3.3.1.M20081112-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0071" Name="org.eclipse.ui.win32_3.2.100.v20080408-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.win32_3.2.100.v20080408-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0072" Name="org.eclipse.ui.workbench.nl_ja_3.4.2.M20090127-1700.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.workbench.nl_ja_3.4.2.M20090127-1700.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0073" Name="org.eclipse.ui.workbench.texteditor.nl_ja_3.4.1.r341_v20080827-1100.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.workbench.texteditor.nl_ja_3.4.1.r341_v20080827-1100.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0074" Name="org.eclipse.ui.workbench.texteditor_3.4.1.r341_v20080827-1100.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.workbench.texteditor_3.4.1.r341_v20080827-1100.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0075" Name="org.eclipse.ui.workbench_3.4.2.M20090127-1700.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.workbench_3.4.2.M20090127-1700.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0076" Name="org.eclipse.ui_3.4.2.M20090204-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui_3.4.2.M20090204-0800.jar">
+	  </File>
+	          </Component>
+        <Directory Id="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610" Name="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610">
+          <Component Id="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610" DiskId="1" Guid="9B406546-ADAC-458F-8868-4D8E286A179F">
+            <File Id="about.html" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\about.html" />
+            <File Id="fragment.properties" Name="fragment.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\fragment.properties" />
+            <File Id="runtime_registry_compatibility.jar" Name="runtime_registry_compatibility.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\runtime_registry_compatibility.jar" />
           </Component>
           <Directory Id="META_INF" Name="META-INF">
-            <Component Id="META_INF" DiskId="1" Guid="2FC7BBAC-7BE2-43A6-B281-45E5321BA6CD">
-              <File Id="eclipse.inf" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\META-INF\eclipse.inf" />
-              <File Id="MANIFEST.MF" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\META-INF\MANIFEST.MF" />
+            <Component Id="META_INF" DiskId="1" Guid="845976BB-6E57-4504-B0E4-E92063791414">
+              <File Id="eclipse.inf" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\META-INF\eclipse.inf" />
+              <File Id="MANIFEST.MF" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\META-INF\MANIFEST.MF" />
             </Component>
           </Directory>
         </Directory>
-        <Directory Id="org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227" Name="org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227">
-          <Component Id="org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227" DiskId="1" Guid="F1928B56-E60D-4F13-8284-00E2B99BB2BB">
-            <File Id="about.html_1" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\about.html" />
-            <File Id="nl1.jar" Name="nl1.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\nl1.jar" />
-            <File Id="nl_fragment.properties" Name="nl_fragment.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\nl_fragment.properties" />
-            <File Id="plugin_de.properties" Name="plugin_de.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_de.properties" />
-            <File Id="plugin_es.properties" Name="plugin_es.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_es.properties" />
-            <File Id="plugin_fr.properties" Name="plugin_fr.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_fr.properties" />
-            <File Id="plugin_it.properties" Name="plugin_it.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_it.properties" />
-            <File Id="plugin_ja.properties" Name="plugin_ja.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_ja.properties" />
-            <File Id="plugin_ko.properties" Name="plugin_ko.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_ko.properties" />
-            <File Id="plugin_pt_BR.properties" Name="plugin_pt_BR.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_pt_BR.properties" />
-            <File Id="plugin_zh.properties" Name="plugin_zh.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_zh.properties" />
-            <File Id="plugin_zh_HK.properties" Name="plugin_zh_HK.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_zh_HK.properties" />
-            <File Id="plugin_zh_TW.properties" Name="plugin_zh_TW.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_zh_TW.properties" />
+        <Directory Id="org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731" Name="org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731">
+          <Component Id="org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731" DiskId="1" Guid="9B406546-ADAC-458F-8868-4D8E286A179F">
+            <File Id="about.html_1" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\about.html" />
+            <File Id="launcher.win32.win32.x86.properties" Name="launcher.win32.win32.x86.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\launcher.win32.win32.x86.properties" />
+            <File Id="eclipse_1115.dll" Name="eclipse_1115.dll" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\eclipse_1115.dll" />
           </Component>
-          <Directory Id="META_INF_1" Name="META-INF">
-            <Component Id="META_INF_1" DiskId="1" Guid="845976BB-6E57-4504-B0E4-E92063791414">
-              <File Id="MANIFEST.MF_1" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\META-INF\MANIFEST.MF" />
+          <Directory Id="META_INF_2" Name="META-INF_2">
+            <Component Id="META_INF_2" DiskId="1" Guid="2FC7BBAC-7BE2-43A6-B281-45E5321BA6CD">
+              <File Id="eclipse.inf_1" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\META-INF\eclipse.inf" />
+              <File Id="MANIFEST.MF_1" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\META-INF\MANIFEST.MF" />
             </Component>
           </Directory>
         </Directory>
-        <Directory Id="org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721" Name="org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721">
-          <Component Id="org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721" DiskId="1" Guid="8C9D2750-2CBE-4624-9765-E6E1C21334EA">
-            <File Id="about.html_2" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\about.html" />
-            <File Id="junitruntime.jar" Name="junitruntime.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\junitruntime.jar" />
-            <File Id="plugin.properties" Name="plugin.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\plugin.properties" />
-            <File Id="plugin.xml" Name="plugin.xml" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\plugin.xml" />
-          </Component>
-          <Directory Id="META_INF_2" Name="META-INF">
-            <Component Id="META_INF_2" DiskId="1" Guid="995CB0A7-44B0-4096-B6FF-9F0DEAF351F1">
-              <File Id="eclipse.inf_1" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\META-INF\eclipse.inf" />
-              <File Id="MANIFEST.MF_2" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\META-INF\MANIFEST.MF" />
-            </Component>
-          </Directory>
-        </Directory>
-        <Directory Id="org.junit_3.8.1" Name="org.junit_3.8.1">
-          <Component Id="org.junit_3.8.1" DiskId="1" Guid="83E80B5D-F3C6-4070-B5F5-DBCE74479317">
-            <File Id="about.html_3" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\about.html" />
-            <File Id="junit.jar" Name="junit.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\junit.jar" />
-            <File Id="plugin.properties_1" Name="plugin.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\plugin.properties" />
-            <File Id="plugin.xml_1" Name="plugin.xml" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\plugin.xml" />
-          </Component>
-          <Directory Id="META_INF_3" Name="META-INF">
-            <Component Id="META_INF_3" DiskId="1" Guid="4D8D5C2E-9D89-43F1-99BA-58E91902AFEA">
-              <File Id="eclipse.inf_2" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\META-INF\eclipse.inf" />
-              <File Id="MANIFEST.MF_3" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\META-INF\MANIFEST.MF" />
-            </Component>
-          </Directory>
-        </Directory>
       </Directory>
     </Directory>
   </Directory>
 </Include>
+

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_Mondo_RTM.wxs
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_Mondo_RTM.wxs	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_Mondo_RTM.wxs	2011-09-16 09:37:35 UTC (rev 478)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
 
-    <!-- WixUI_Mondo にインストールの種類を選択するダイアログを追加したもの -->
     <Fragment>
         <Property Id='USERNAME' Value='[LogonUser]' />
         <Property Id="WixAppFolder" Value="WixPerMachineFolder" />

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_en-us.wxl
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_en-us.wxl	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_en-us.wxl	2011-09-16 09:37:35 UTC (rev 478)
@@ -10,7 +10,7 @@
 
     You must not remove this notice, or any other, from this software.
 -->
-<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+<WixLocalization Culture="en-us" Codepage="1252" xmlns="http://schemas.microsoft.com/wix/2006/localization">
     <String Id="WixUIBack" Overridable="yes">&Back</String>
     <String Id="WixUINext" Overridable="yes">&Next</String>
     <String Id="WixUICancel" Overridable="yes">Cancel</String>

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_hu-hu.wxl
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_hu-hu.wxl	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_hu-hu.wxl	2011-09-16 09:37:35 UTC (rev 478)
@@ -10,7 +10,7 @@
 
     You must not remove this notice, or any other, from this software.
 -->
-<WixLocalization Culture="hu-hu" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+<WixLocalization Culture="hu-hu" Codepage="1250" xmlns="http://schemas.microsoft.com/wix/2006/localization">
   <String Id="WixUIBack" Overridable="yes">&Vissza</String>
   <String Id="WixUINext" Overridable="yes">&Tov叩bb</String>
   <String Id="WixUICancel" Overridable="yes">&M辿gse</String>

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_ja-jp.wxl
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_ja-jp.wxl	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_ja-jp.wxl	2011-09-16 09:37:35 UTC (rev 478)
@@ -2,7 +2,7 @@
 <!--
     Copyright (c) Microsoft Corporation.  All rights reserved.
 -->
-<WixLocalization Culture="ja-jp" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+<WixLocalization Culture="ja-jp" Codepage="932" xmlns="http://schemas.microsoft.com/wix/2006/localization">
     <String Id="WixUIBack" Overridable="yes">戻る(&B)</String>
     <String Id="WixUINext" Overridable="yes">次へ(&N)</String>
     <String Id="WixUICancel" Overridable="yes">キャンセル</String>
@@ -202,7 +202,7 @@
     <String Id="SetupTypeDlgTypicalButtonTooltip" Overridable="yes">標準インストール</String>
     <String Id="SetupTypeDlgCustomButton" Overridable="yes">カスタム(&U)</String>
     <String Id="SetupTypeDlgCustomButtonTooltip" Overridable="yes">カスタム インストール</String>
-    <String Id="SetupTypeDlgCompleteButton" Overridable="yes">完了(&O)</String>
+    <String Id="SetupTypeDlgCompleteButton" Overridable="yes">完全(&O)</String>
     <String Id="SetupTypeDlgCompleteButtonTooltip" Overridable="yes">完全インストール</String>
     <String Id="SetupTypeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
     <String Id="SetupTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}セットアップの種類の選択</String>

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_ko-kr.wxl
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_ko-kr.wxl	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_ko-kr.wxl	2011-09-16 09:37:35 UTC (rev 478)
@@ -2,57 +2,57 @@
 <!--
     Copyright (c) Microsoft Corporation.  All rights reserved.
 -->
-<WixLocalization Culture="ko-kr" xmlns="http://schemas.microsoft.com/wix/2006/localization">
-    <String Id="WixUIBack" Overridable="yes">뒤로(&B)</String>
-    <String Id="WixUINext" Overridable="yes">다음(&N)</String>
-    <String Id="WixUICancel" Overridable="yes">취소</String>
-    <String Id="WixUIFinish" Overridable="yes">마침(&F)</String>
-    <String Id="WixUIRetry" Overridable="yes">다시 시도(&R)</String>
-    <String Id="WixUIIgnore" Overridable="yes">무시(&I)</String>
-    <String Id="WixUIYes" Overridable="yes">예(&Y)</String>
-    <String Id="WixUINo" Overridable="yes">아니요(&N)</String>
-    <String Id="WixUIOK" Overridable="yes">확인</String>
-    <String Id="WixUIPrint" Overridable="yes">인쇄(&P)</String>
+<WixLocalization Culture="ko-kr" Codepage="949" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+    <String Id="WixUIBack" Overridable="yes">E¤EE&B)</String>
+    <String Id="WixUINext" Overridable="yes">E¤EE&N)</String>
+    <String Id="WixUICancel" Overridable="yes">E¨EE/String>
+    <String Id="WixUIFinish" Overridable="yes">Eˆì¹¨(&F)</String>
+    <String Id="WixUIRetry" Overridable="yes">E¤EEEœë„(&R)</String>
+    <String Id="WixUIIgnore" Overridable="yes">E´EE&I)</String>
+    <String Id="WixUIYes" Overridable="yes">EE&Y)</String>
+    <String Id="WixUINo" Overridable="yes">EE‹ˆEE&N)</String>
+    <String Id="WixUIOK" Overridable="yes">úµ•ì¸</String>
+    <String Id="WixUIPrint" Overridable="yes">E¸EE&P)</String>
     
-    <String Id="AdvancedWelcomeEulaDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="AdvancedWelcomeEulaDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="AdvancedWelcomeEulaDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="AdvancedWelcomeEulaDlgTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]의 소프트웨어 라이센스 조항을 읽어주세요.</String>
-    <String Id="AdvancedWelcomeEulaDlgLicenseAcceptedCheckBox" Overridable="yes">소프트웨어 라이센스 조항에 동의합니다.(&A)</String>
-    <String Id="AdvancedWelcomeEulaDlgDescriptionPerMachine" Overridable="yes">"설치"단추를 클릭하면 모든 사용자 대상에 대해 설치 합니다. 설치 옵션을 변경하려면 "상세"단추를 클릭하십시오.</String>
-    <String Id="AdvancedWelcomeEulaDlgDescriptionPerUser" Overridable="yes">"설치"단추를 클릭하면 현재 사용자 대상에 대해 설치 합니다. 설치 옵션을 변경하려면 "상세"단추를 클릭하십시오.</String>
-    <String Id="AdvancedWelcomeEulaDlgInstall" Overridable="yes">설치(&I)</String>
-    <String Id="AdvancedWelcomeEulaDlgAdvanced" Overridable="yes">상세(&D)</String>
+    <String Id="AdvancedWelcomeEulaDlgTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEEŒí”„ú¦¸E¨E´ E¼E´E¼E¤ E°ú±­EEE½E´E¼E¸EE</String>
+    <String Id="AdvancedWelcomeEulaDlgLicenseAcceptedCheckBox" Overridable="yes">EŒí”„ú¦¸E¨E´ E¼E´E¼E¤ E°ú±­EEE™ì˜ú±©Eˆë‹¤.(&A)</String>
+    <String Id="AdvancedWelcomeEulaDlgDescriptionPerMachine" Overridable="yes">"E¤EEE¨E”를 ú´E­ú±˜ë©´ E¨E  E¬E©EEE€EE— E€ú±´ E¤EEú±©Eˆë‹¤. E¤EEEµE˜ì„ E€E½ú±˜ë ¤E´ "EE„¸"E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="AdvancedWelcomeEulaDlgDescriptionPerUser" Overridable="yes">"E¤EEE¨E”를 ú´E­ú±˜ë©´ ú´Ež¬ E¬E©EEE€EE— E€ú±´ E¤EEú±©Eˆë‹¤. E¤EEEµE˜ì„ E€E½ú±˜ë ¤E´ "EE„¸"E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="AdvancedWelcomeEulaDlgInstall" Overridable="yes">E¤EE&I)</String>
+    <String Id="AdvancedWelcomeEulaDlgAdvanced" Overridable="yes">EE„¸(&D)</String>
     <String Id="Advanced_Font_Normal_Size" Overridable="yes">8</String>
     <String Id="Advanced_Font_Bigger_Size" Overridable="yes">12</String>
     <String Id="Advanced_Font_Title_Size" Overridable="yes">9</String>
     <String Id="Advanced_Font_Emphasized_Size" Overridable="yes">8</String>
     <String Id="Advanced_Font_FaceName" Overridable="yes">Tahoma</String>
     
-    <String Id="BrowseDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="BrowseDlgComboLabel" Overridable="yes">찾는 위치(&L):</String>
+    <String Id="BrowseDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="BrowseDlgComboLabel" Overridable="yes">E¾EEEE¹E&L):</String>
     <String Id="BrowseDlgWixUI_Bmp_Up" Overridable="yes">WixUI_Bmp_Up</String>
-    <String Id="BrowseDlgWixUI_Bmp_UpTooltip" Overridable="yes">한 수준 위로</String>
+    <String Id="BrowseDlgWixUI_Bmp_UpTooltip" Overridable="yes">ú±EE˜ì¤€ EE¡E/String>
     <String Id="BrowseDlgNewFolder" Overridable="yes">WixUI_Bmp_New</String>
-    <String Id="BrowseDlgNewFolderTooltip" Overridable="yes">새 폴더 만들기</String>
-    <String Id="BrowseDlgPathLabel" Overridable="yes">폴더 이름(&F):</String>
+    <String Id="BrowseDlgNewFolderTooltip" Overridable="yes">EEú«´EEEŒë“¤E°</String>
+    <String Id="BrowseDlgPathLabel" Overridable="yes">ú«´EEE´EE&F):</String>
     <String Id="BrowseDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="BrowseDlgDescription" Overridable="yes">대상 폴더 찾아보기</String>
-    <String Id="BrowseDlgTitle" Overridable="yes">{\WixUI_Font_Title}대상 폴더 변경</String>
+    <String Id="BrowseDlgDescription" Overridable="yes">E€EEú«´EEE¾EE³´E°</String>
+    <String Id="BrowseDlgTitle" Overridable="yes">{\WixUI_Font_Title}E€EEú«´EEE€E½</String>
     
-    <String Id="CancelDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="CancelDlgText" Overridable="yes">[ProductName] 설치를 취소하시겠습니까?</String>
+    <String Id="CancelDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="CancelDlgText" Overridable="yes">[ProductName] E¤E˜ë¥¼ E¨EŒí•˜Eœê² EµEˆê¹E</String>
     <String Id="CancelDlgIcon" Overridable="yes">WixUI_Ico_Info</String>
-    <String Id="CancelDlgIconTooltip" Overridable="yes">정보 아이콘</String>
+    <String Id="CancelDlgIconTooltip" Overridable="yes">E•ë³´ EE´EE/String>
     
-    <String Id="CustomizeDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="CustomizeDlgTree" Overridable="yes">선택 항목 트리</String>
-    <String Id="CustomizeDlgBrowse" Overridable="yes">찾아보기(&R)...</String>
-    <String Id="CustomizeDlgReset" Overridable="yes">원래대로(&S)</String>
-    <String Id="CustomizeDlgDiskCost" Overridable="yes">디스크 사용량(&U)</String>
+    <String Id="CustomizeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="CustomizeDlgTree" Overridable="yes">E úŸEú±­E© ú¦¸E¬</String>
+    <String Id="CustomizeDlgBrowse" Overridable="yes">E¾EE³´E°(&R)...</String>
+    <String Id="CustomizeDlgReset" Overridable="yes">Eëž˜E€EE&S)</String>
+    <String Id="CustomizeDlgDiskCost" Overridable="yes">E”스ú¬ E¬E©EE&U)</String>
     <String Id="CustomizeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="CustomizeDlgText" Overridable="yes">기능 설치 방법을 변경하려면 아래의 트리에서 해당 아이콘을 클릭하십시오.</String>
-    <String Id="CustomizeDlgDescription" Overridable="yes">기능 설치 방법을 선택합니다.</String>
-    <String Id="CustomizeDlgTitle" Overridable="yes">{\WixUI_Font_Title}사용자 지정 설치</String>
+    <String Id="CustomizeDlgText" Overridable="yes">E°E¥ E¤EEE©E•ì„ E€E½ú±˜ë ¤E´ EEž˜EEú¦¸E¬EìE ú±´E¹ EE´E˜ì„ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="CustomizeDlgDescription" Overridable="yes">E°E¥ E¤EEE©E•ì„ E úŸí•©Eˆë‹¤.</String>
+    <String Id="CustomizeDlgTitle" Overridable="yes">{\WixUI_Font_Title}E¬E©EEE€EEE¤EE/String>
     <String Id="CustomizeDlgItemDescription" Overridable="yes">CustomizeDlgItemDescription-CustomizeDlgItemDescription</String>
     <String Id="CustomizeDlgItemSize" Overridable="yes">CustomizeDlgItemSize-CustomizeDlgItemSize</String>
     <String Id="CustomizeDlgLocation" Overridable="yes">CustomizeDlgLocation-CustomizeDlgLocation</String>
@@ -60,532 +60,532 @@
     
     <String Id="DiskCostDlg_Title" Overridable="yes">[ProductName] Setup</String>
     <String Id="DiskCostDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="DiskCostDlgText" Overridable="yes">선택된 볼륨에는 현재 선택한 기능을 설치할 만큼 충분한 공간이 없습니다. 해당 볼륨에서 일부 파일을 제거하거나, 설치할 기능을 줄이거나, 다른 대상 드라이브를 선택할 수 있습니다.</String>
-    <String Id="DiskCostDlgDescription" Overridable="yes">선택한 기능의 설치에 필요한 디스크 공간입니다.</String>
-    <String Id="DiskCostDlgTitle" Overridable="yes">{\WixUI_Font_Title}필요한 디스크 공간</String>
+    <String Id="DiskCostDlgText" Overridable="yes">E úŸëœ E¼E¨EëŠ” ú´Ež¬ E úŸí•œ E°E¥EEE¤E˜í•  EŒí¼ E©EE•œ EµEE´ EEŠµEˆë‹¤. ú±´E¹ E¼E¨EìE E¼E€ ú¨Œì¼EEEœê±°ú±˜ê±°EE E¤E˜í•  E°E¥EEEE´E°EE E¤E¸ E€EEEœë¼E´EŒë¥¼ E úŸí•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="DiskCostDlgDescription" Overridable="yes">E úŸí•œ E°E¥EEE¤E˜ì— ú±Eš”ú±EE”스ú¬ EµEEž…Eˆë‹¤.</String>
+    <String Id="DiskCostDlgTitle" Overridable="yes">{\WixUI_Font_Title}ú±Eš”ú±EE”스ú¬ EµEE/String>
     <String Id="DiskCostDlgVolumeList" Overridable="yes">{120}{70}{70}{70}{70}</String>
     
-    <String Id="ErrorDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="ErrorDlgErrorText" Overridable="yes">정보 텍스트</String>
+    <String Id="ErrorDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="ErrorDlgErrorText" Overridable="yes">E•ë³´ ú¡ìŠ¤ú¦¸</String>
     <String Id="ErrorDlgErrorIcon" Overridable="yes">WixUI_Ico_Info</String>
-    <String Id="ErrorDlgErrorIconTooltip" Overridable="yes">정보 아이콘</String>
+    <String Id="ErrorDlgErrorIconTooltip" Overridable="yes">E•ë³´ EE´EE/String>
     
-    <String Id="ExitDialog_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="ExitDialog_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="ExitDialogBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="ExitDialogDescription" Overridable="yes">설치 마법사를 끝내려면 "마침" 단추를 클릭하십시오.</String>
-    <String Id="ExitDialogTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 완료</String>
+    <String Id="ExitDialogDescription" Overridable="yes">E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "Eˆì¹¨" E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="ExitDialogTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ EE£E/String>
     
-    <String Id="FatalError_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="FatalError_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="FatalErrorBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="FatalErrorTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사가 중간에 중단되었습니다.</String>
-    <String Id="FatalErrorDescription1" Overridable="yes">오류로 인해 [ProductName] 설치 마법사가 중간에 중단되었습니다. 시스템이 수정되지 않았습니다. 나중에 이 프로그램을 설치하려면 설치 마법사를 다시 실행하십시오.</String>
-    <String Id="FatalErrorDescription2" Overridable="yes">설치 마법사를 끝내려면 "마침" 단추를 클릭하십시오.</String>
+    <String Id="FatalErrorTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬E€ E‘각E— E‘단E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="FatalErrorDescription1" Overridable="yes">E¤E˜ë¡EE¸ú±´ [ProductName] E¤EEEˆë²•ì‚¬E€ E‘각E— E‘단E˜ì—ˆEµEˆë‹¤. EœìŠ¤ú¡œì´ E˜ì •ë˜E€ EŠì•˜EµEˆë‹¤. E˜ì¤‘에 E´ ú°E¡œê·¸E¨EEE¤E˜í•˜E¤E´ E¤EEEˆë²•ì‚¬E¼ E¤EEE¤ú²‰í•˜E­Eœì˜¤.</String>
+    <String Id="FatalErrorDescription2" Overridable="yes">E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "Eˆì¹¨" E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
     
-    <String Id="FeaturesDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="FeaturesDlgTree" Overridable="yes">제품의 기능</String>
+    <String Id="FeaturesDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="FeaturesDlgTree" Overridable="yes">Eœí’ˆEEE°E¥</String>
     <String Id="FeaturesDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="FeaturesDlgDescription" Overridable="yes">기능 설치 방법을 선택하십시오.</String>
-    <String Id="FeaturesDlgTitle" Overridable="yes">{\WixUI_Font_Title}제품의 기능</String>
+    <String Id="FeaturesDlgDescription" Overridable="yes">E°E¥ E¤EEE©E•ì„ E úŸí•˜E­Eœì˜¤.</String>
+    <String Id="FeaturesDlgTitle" Overridable="yes">{\WixUI_Font_Title}Eœí’ˆEEE°E¥</String>
     <String Id="FeaturesDlgItemDescription" Overridable="yes">FeaturesDlgItemDescription</String>
     <String Id="FeaturesDlgItemSize" Overridable="yes">FeaturesDlgItemSize</String>
-    <String Id="FeaturesDlgInstall" Overridable="yes">설치(&I)</String>
-    <String Id="FeaturesDlgChange" Overridable="yes">변경(&C)</String>
+    <String Id="FeaturesDlgInstall" Overridable="yes">E¤EE&I)</String>
+    <String Id="FeaturesDlgChange" Overridable="yes">E€E½(&C)</String>
     
-    <String Id="FilesInUse_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="FilesInUseExit" Overridable="yes">끝내기(&X)</String>
+    <String Id="FilesInUse_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="FilesInUseExit" Overridable="yes">Eë‚´E°(&X)</String>
     <String Id="FilesInUseBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="FilesInUseText" Overridable="yes">다음 응용 프로그램에서 이 설치 프로그램이 업데이트해야 할 파일을 사용하고 있습니다. 관련된 응용 프로그램을 닫고 "다시 시도"를 클릭하여 설치를 계속하거나 "끝내기"를 눌러 끝내십시오.</String>
-    <String Id="FilesInUseDescription" Overridable="yes">업데이트할 파일 중 일부를 사용하고 있습니다.</String>
-    <String Id="FilesInUseTitle" Overridable="yes">{\WixUI_Font_Title}파일 사용 중</String>
+    <String Id="FilesInUseText" Overridable="yes">E¤EEE‘ìš© ú°E¡œê·¸E¨EìE E´ E¤EEú°E¡œê·¸E¨E´ EE°E´ú¦¸ú±´E¼ ú±  ú¨Œì¼EEE¬E©ú±˜ê³  EˆìŠµEˆë‹¤. E€E¨EEE‘ìš© ú°E¡œê·¸E¨EEE«E  "E¤EEEœë„"E¼ ú´E­ú±˜ì—¬ E¤E˜ë¥¼ EEEú±˜ê±°EE"Eë‚´E°"E¼ EŒëŸ¬ Eë‚´E­Eœì˜¤.</String>
+    <String Id="FilesInUseDescription" Overridable="yes">EE°E´ú¦¸ú±  ú¨Œì¼ EEE¼E€E¼ E¬E©ú±˜ê³  EˆìŠµEˆë‹¤.</String>
+    <String Id="FilesInUseTitle" Overridable="yes">{\WixUI_Font_Title}ú¨Œì¼ E¬E© EE/String>
     
-    <String Id="InstallDirDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="InstallDirDlgChange" Overridable="yes">변경(&C)...</String>
-    <String Id="InstallDirDlgTitle" Overridable="yes">{\WixUI_Font_Title}대상 폴더</String>
-    <String Id="InstallDirDlgDescription" Overridable="yes">기본 폴더에 설치하려면 "다음"을 클릭하고, 다른 설치 폴더를 선택하려면 "찾아보기"를 클릭하십시오.</String>
+    <String Id="InstallDirDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="InstallDirDlgChange" Overridable="yes">E€E½(&C)...</String>
+    <String Id="InstallDirDlgTitle" Overridable="yes">{\WixUI_Font_Title}E€EEú«´EE/String>
+    <String Id="InstallDirDlgDescription" Overridable="yes">E°E¸ ú«´E”에 E¤E˜í•˜E¤E´ "E¤EEEEú´E­ú±˜ê³ , E¤E¸ E¤EEú«´E”를 E úŸí•˜E¤E´ "E¾EE³´E°"E¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
     <String Id="InstallDirDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="InstallDirDlgFolderLabel" Overridable="yes">[ProductName] 설치 위치:</String>
+    <String Id="InstallDirDlgFolderLabel" Overridable="yes">[ProductName] E¤EEEE¹E</String>
     
-    <String Id="InstallScopeDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="InstallScopeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="InstallScopeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="InstallScopeDlgDescription" Overridable="yes">요구에 가장 잘 맞는 설치 유형을 선택하십시오.</String>
-    <String Id="InstallScopeDlgTitle" Overridable="yes">{\WixUI_Font_Title}설치 종류</String>
-    <String Id="InstallScopeDlgPerUser" Overridable="yes">{\WixUI_Font_Emphasized}사용자 ([USERNAME]) 설치(&F)</String>
-    <String Id="InstallScopeDlgPerUserDescription" Overridable="yes">[ProductName] 는(은) 현재 사용자 대상에 대해 이용 가능합니다. Administrator 권한이 필요하지 않습니다.</String>
-    <String Id="InstallScopeDlgNoPerUserDescription" Overridable="yes">[ProductName] 는(은) 각 사용자 대상에 대하여 설치를 지원하고 있지 않습니다.</String>
-    <String Id="InstallScopeDlgPerMachine" Overridable="yes">{\WixUI_Font_Emphasized}현재 컴퓨터 모든 사용자 대상에 대해 설치(&C)</String>
-    <String Id="InstallScopeDlgPerMachineDescription" Overridable="yes">[ProductName] 는(은) 각 사용자 폴더에 설치되어 모든 사용자가 이용 가능합니다.설치 폴더를 변경하려면 Administrator 권한이 필요합니다.</String>
-    <String Id="InstallScopeDlgFolderLabel" Overridable="yes">설치 폴더(&F):</String>
-    <String Id="InstallScopeDlgChange" Overridable="yes">변경(&C)...</String>
+    <String Id="InstallScopeDlgDescription" Overridable="yes">E”구EEE€E¥ EEEžëŠ” E¤EEE ú´•ì„ E úŸí•˜E­Eœì˜¤.</String>
+    <String Id="InstallScopeDlgTitle" Overridable="yes">{\WixUI_Font_Title}E¤EEEE¥E/String>
+    <String Id="InstallScopeDlgPerUser" Overridable="yes">{\WixUI_Font_Emphasized}E¬E©EE([USERNAME]) E¤EE&F)</String>
+    <String Id="InstallScopeDlgPerUserDescription" Overridable="yes">[ProductName] EEE€) ú´Ež¬ E¬E©EEE€EE— E€ú±´ E´E© E€E¥ú±©Eˆë‹¤. Administrator EŒí•œE´ ú±Eš”ú±˜ì§€ EŠìŠµEˆë‹¤.</String>
+    <String Id="InstallScopeDlgNoPerUserDescription" Overridable="yes">[ProductName] EEE€) EEE¬E©EEE€EE— E€ú±˜ì—¬ E¤E˜ë¥¼ E€Eí•˜E  Eˆì§€ EŠìŠµEˆë‹¤.</String>
+    <String Id="InstallScopeDlgPerMachine" Overridable="yes">{\WixUI_Font_Emphasized}ú´Ež¬ E´ú¯¨ú ° E¨E  E¬E©EEE€EE— E€ú±´ E¤EE&C)</String>
+    <String Id="InstallScopeDlgPerMachineDescription" Overridable="yes">[ProductName] EEE€) EEE¬E©EEú«´E”에 E¤E˜ë˜E´ E¨E  E¬E©Eê°€ E´E© E€E¥ú±©Eˆë‹¤.E¤EEú«´E”를 E€E½ú±˜ë ¤E´ Administrator EŒí•œE´ ú±Eš”ú±©Eˆë‹¤.</String>
+    <String Id="InstallScopeDlgFolderLabel" Overridable="yes">E¤EEú«´EE&F):</String>
+    <String Id="InstallScopeDlgChange" Overridable="yes">E€E½(&C)...</String>
     
-    <String Id="InvalidDirDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="InvalidDirDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="InvalidDirDlgText" Overridable="yes">Installation directory must be on a local hard drive.</String>
     <String Id="InvalidDirDlgIcon" Overridable="yes">WixUI_Ico_Info</String>
     <String Id="InvalidDirDlgIconTooltip" Overridable="yes">Information icon</String>
     
-    <String Id="LicenseAgreementDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="LicenseAgreementDlgLicenseAcceptedCheckBox" Overridable="yes">동의함(&A)</String>
+    <String Id="LicenseAgreementDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="LicenseAgreementDlgLicenseAcceptedCheckBox" Overridable="yes">E™ì˜ú±¨(&A)</String>
     <String Id="LicenseAgreementDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="LicenseAgreementDlgDescription" Overridable="yes">다음 사용권 계약을 자세히 읽어 주십시오.</String>
-    <String Id="LicenseAgreementDlgTitle" Overridable="yes">{\WixUI_Font_Title}최종 사용자 사용권 계약</String>
+    <String Id="LicenseAgreementDlgDescription" Overridable="yes">E¤EEE¬E©EEEE•½EEEì„¸úºEE½E´ E¼E­Eœì˜¤.</String>
+    <String Id="LicenseAgreementDlgTitle" Overridable="yes">{\WixUI_Font_Title}Eœì¢EE¬E©EEE¬E©EEEE•½</String>
     
-    <String Id="MaintenanceTypeDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="MaintenanceTypeDlgChangeButton" Overridable="yes">변경(&C)</String>
-    <String Id="MaintenanceTypeDlgChangeButtonTooltip" Overridable="yes">설치 변경</String>
-    <String Id="MaintenanceTypeDlgRepairButton" Overridable="yes">覲糾規(&P)</String>
-    <String Id="MaintenanceTypeDlgRepairButtonTooltip" Overridable="yes">설치 복구</String>
-    <String Id="MaintenanceTypeDlgRemoveButton" Overridable="yes">제거(&R)</String>
-    <String Id="MaintenanceTypeDlgRemoveButtonTooltip" Overridable="yes">설치 제거</String>
+    <String Id="MaintenanceTypeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="MaintenanceTypeDlgChangeButton" Overridable="yes">E€E½(&C)</String>
+    <String Id="MaintenanceTypeDlgChangeButtonTooltip" Overridable="yes">E¤EEE€E½</String>
+    <String Id="MaintenanceTypeDlgRepairButton" Overridable="yes">EµE¬(&P)</String>
+    <String Id="MaintenanceTypeDlgRepairButtonTooltip" Overridable="yes">E¤EEEµE¬</String>
+    <String Id="MaintenanceTypeDlgRemoveButton" Overridable="yes">Eœê±°(&R)</String>
+    <String Id="MaintenanceTypeDlgRemoveButtonTooltip" Overridable="yes">E¤EEEœê±°</String>
     <String Id="MaintenanceTypeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="MaintenanceTypeDlgDescription" Overridable="yes">원하는 작업을 선택하십시오.</String>
-    <String Id="MaintenanceTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}설치 변경, 복구, 제거</String>
-    <String Id="MaintenanceTypeDlgChangeText" Overridable="yes">기능 설치 방법을 변경할 수 있습니다.</String>
-    <String Id="MaintenanceTypeDlgChangeDisabledText" Overridable="yes">[ProductName]에 독립적으로 선택할 수 있는 기능이 없습니다.</String>
-    <String Id="MaintenanceTypeDlgRemoveText" Overridable="yes">컴퓨터에서 [ProductName]을(를) 제거합니다.</String>
-    <String Id="MaintenanceTypeDlgRemoveDisabledText" Overridable="yes">[ProductName] 을(를) 제거할 수 없습니다.</String>
-    <String Id="MaintenanceTypeDlgRepairText" Overridable="yes">가장 최근의 설치 상태에서 오류를 복구합니다. 없거나 손상된 파일, 바로 가기 및 레지스트리 항목을 고칩니다.</String>
+    <String Id="MaintenanceTypeDlgDescription" Overridable="yes">Eí•˜EEE‘ì—…EEE úŸí•˜E­Eœì˜¤.</String>
+    <String Id="MaintenanceTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}E¤EEE€E½, EµE¬, Eœê±°</String>
+    <String Id="MaintenanceTypeDlgChangeText" Overridable="yes">E°E¥ E¤EEE©E•ì„ E€E½ú±  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="MaintenanceTypeDlgChangeDisabledText" Overridable="yes">[ProductName]EEEE¦½EEœ¼EEE úŸí•  EEEˆëŠ” E°E¥E´ EEŠµEˆë‹¤.</String>
+    <String Id="MaintenanceTypeDlgRemoveText" Overridable="yes">E´ú¯¨ú °EìE [ProductName]EEE¼) Eœê±°ú±©Eˆë‹¤.</String>
+    <String Id="MaintenanceTypeDlgRemoveDisabledText" Overridable="yes">[ProductName] EEE¼) Eœê±°ú±  EEEEŠµEˆë‹¤.</String>
+    <String Id="MaintenanceTypeDlgRepairText" Overridable="yes">E€E¥ Eœê·¼EEE¤EEEEEEìE E¤E˜ë¥¼ EµE¬ú±©Eˆë‹¤. EE±°EEEìƒEEú¨Œì¼, E”롁EE€E° EEEˆì§€E¤ú¦¸E¬ ú±­E©EEE E©Eˆë‹¤.</String>
     
-    <String Id="MaintenanceTypeDlgRepairDisabledText" Overridable="yes">[ProductName] 을(를) 복구할 수 없습니다.</String>
-    <String Id="MaintenanceWelcomeDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="MaintenanceTypeDlgRepairDisabledText" Overridable="yes">[ProductName] EEE¼) EµE¬ú±  EEEEŠµEˆë‹¤.</String>
+    <String Id="MaintenanceWelcomeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="MaintenanceWelcomeDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="MaintenanceWelcomeDlgDescription" Overridable="yes">설치 마법사를 사용하면 [ProductName] 기능이 컴퓨터에 설치되는 방법을 변경하거나 기능을 제거할 수 있습니다. 계속하려면 "다음"을 클릭하고, 설치 마법사를 끝내려면 "취소"를 클릭합니다.</String>
-    <String Id="MaintenanceWelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 시작</String>
+    <String Id="MaintenanceWelcomeDlgDescription" Overridable="yes">E¤EEEˆë²•ì‚¬E¼ E¬E©ú±˜ë©´ [ProductName] E°E¥E´ E´ú¯¨ú °EEE¤E˜ë˜EEE©E•ì„ E€E½ú±˜ê±°EEE°E¥EEEœê±°ú±  EEEˆìŠµEˆë‹¤. EEEú±˜ë ¤E´ "E¤EEEEú´E­ú±˜ê³ , E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±©Eˆë‹¤.</String>
+    <String Id="MaintenanceWelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ Eœìž‘</String>
     
-    <String Id="MsiRMFilesInUse_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="MsiRMFilesInUse_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="MsiRMFilesInUseBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="MsiRMFilesInUseText" Overridable="yes">다음 응용 프로그램에서 이 설치 프로그램이 업데이트해야 할 파일을 사용하고 있습니다. 설치 마법사에서 관련 프로그램을 닫고 다시 시작하거나 나중에 다시 부팅할 수 있습니다.</String>
-    <String Id="MsiRMFilesInUseDescription" Overridable="yes">업데이트할 파일 중 일부를 사용하고 있습니다.</String>
-    <String Id="MsiRMFilesInUseTitle" Overridable="yes">{\WixUI_Font_Title}파일 사용 중</String>
-    <String Id="MsiRMFilesInUseUseRM" Overridable="yes">응용 프로그램을 닫고 다시 시작합니다(&C).</String>
-    <String Id="MsiRMFilesInUseDontUseRM" Overridable="yes">응용 프로그램을 닫지 않습니다. 다시 부팅해야 합니다(&D).</String>
+    <String Id="MsiRMFilesInUseText" Overridable="yes">E¤EEE‘ìš© ú°E¡œê·¸E¨EìE E´ E¤EEú°E¡œê·¸E¨E´ EE°E´ú¦¸ú±´E¼ ú±  ú¨Œì¼EEE¬E©ú±˜ê³  EˆìŠµEˆë‹¤. E¤EEEˆë²•ì‚¬EìE E€E¨ ú°E¡œê·¸E¨EEE«E  E¤EEEœìž‘ú±˜ê±°EEE˜ì¤‘에 E¤EEE€ú¨E•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="MsiRMFilesInUseDescription" Overridable="yes">EE°E´ú¦¸ú±  ú¨Œì¼ EEE¼E€E¼ E¬E©ú±˜ê³  EˆìŠµEˆë‹¤.</String>
+    <String Id="MsiRMFilesInUseTitle" Overridable="yes">{\WixUI_Font_Title}ú¨Œì¼ E¬E© EE/String>
+    <String Id="MsiRMFilesInUseUseRM" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨EEE«E  E¤EEEœìž‘ú±©Eˆë‹¤(&C).</String>
+    <String Id="MsiRMFilesInUseDontUseRM" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨EEE«E€ EŠìŠµEˆë‹¤. E¤EEE€ú¨E•´E¼ ú±©Eˆë‹¤(&D).</String>
     
-    <String Id="OutOfDiskDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="OutOfDiskDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="OutOfDiskDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="OutOfDiskDlgText" Overridable="yes">선택된 볼륨에는 현재 선택한 기능을 설치할 만큼 충분한 공간이 없습니다. 해당 볼륨에서 일부 파일을 제거하거나, 설치할 기능을 줄이거나, 다른 대상 드라이브를 선택할 수 있습니다.</String>
-    <String Id="OutOfDiskDlgDescription" Overridable="yes">설치에 필요한 디스크 공간이 사용 가능한 디스크 공간을 초과합니다.</String>
-    <String Id="OutOfDiskDlgTitle" Overridable="yes">{\WixUI_Font_Title}디스크 공간 부족</String>
+    <String Id="OutOfDiskDlgText" Overridable="yes">E úŸëœ E¼E¨EëŠ” ú´Ež¬ E úŸí•œ E°E¥EEE¤E˜í•  EŒí¼ E©EE•œ EµEE´ EEŠµEˆë‹¤. ú±´E¹ E¼E¨EìE E¼E€ ú¨Œì¼EEEœê±°ú±˜ê±°EE E¤E˜í•  E°E¥EEEE´E°EE E¤E¸ E€EEEœë¼E´EŒë¥¼ E úŸí•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="OutOfDiskDlgDescription" Overridable="yes">E¤E˜ì— ú±Eš”ú±EE”스ú¬ EµEE´ E¬E© E€E¥ú±EE”스ú¬ EµEE„ Eˆê³¼ú±©Eˆë‹¤.</String>
+    <String Id="OutOfDiskDlgTitle" Overridable="yes">{\WixUI_Font_Title}E”스ú¬ EµEEE€E±</String>
     <String Id="OutOfDiskDlgVolumeList" Overridable="yes">{120}{70}{70}{70}{70}</String>
     
-    <String Id="OutOfRbDiskDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="OutOfRbDiskDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="OutOfRbDiskDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="OutOfRbDiskDlgText" Overridable="yes">선택된 볼륨에는 현재 선택한 기능을 설치할 만큼 충분한 공간이 없습니다. 해당 볼륨에서 일부 파일을 제거하거나, 설치할 기능을 줄이거나, 다른 대상 드라이브를 선택할 수 있습니다.</String>
-    <String Id="OutOfRbDiskDlgDescription" Overridable="yes">설치에 필요한 디스크 공간이 사용 가능한 디스크 공간을 초과합니다.</String>
-    <String Id="OutOfRbDiskDlgTitle" Overridable="yes">{\WixUI_Font_Title}디스크 공간 부족</String>
+    <String Id="OutOfRbDiskDlgText" Overridable="yes">E úŸëœ E¼E¨EëŠ” ú´Ež¬ E úŸí•œ E°E¥EEE¤E˜í•  EŒí¼ E©EE•œ EµEE´ EEŠµEˆë‹¤. ú±´E¹ E¼E¨EìE E¼E€ ú¨Œì¼EEEœê±°ú±˜ê±°EE E¤E˜í•  E°E¥EEEE´E°EE E¤E¸ E€EEEœë¼E´EŒë¥¼ E úŸí•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="OutOfRbDiskDlgDescription" Overridable="yes">E¤E˜ì— ú±Eš”ú±EE”스ú¬ EµEE´ E¬E© E€E¥ú±EE”스ú¬ EµEE„ Eˆê³¼ú±©Eˆë‹¤.</String>
+    <String Id="OutOfRbDiskDlgTitle" Overridable="yes">{\WixUI_Font_Title}E”스ú¬ EµEEE€E±</String>
     <String Id="OutOfRbDiskDlgVolumeList" Overridable="yes">{120}{70}{70}{70}{70}</String>
-    <String Id="OutOfRbDiskDlgText2" Overridable="yes">또는 롤백 기능을 사용하지 않도록 선택할 수도 있습니다. 이렇게 선택하면, 설치가 중단된 경우 컴퓨터를 원래의 초기 상태로 복원할 수 없습니다. 롤백을 사용하지 않으려면 "예"를 클릭하십시오.</String>
+    <String Id="OutOfRbDiskDlgText2" Overridable="yes">EëŠ” E¤E± E°E¥EEE¬E©ú±˜ì§€ EŠë„EEE úŸí•  E˜ë„ EˆìŠµEˆë‹¤. E´EE²EE úŸí•˜E´, E¤E˜ê°€ E‘단EEE½E° E´ú¯¨ú °E¼ Eëž˜EEEˆê¸° EEEEEEµEí•  EEEEŠµEˆë‹¤. E¤E±EEE¬E©ú±˜ì§€ EŠìœ¼E¤E´ "EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
     
-    <String Id="PrepareDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="PrepareDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="PrepareDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="PrepareDlgDescription" Overridable="yes">설치 마법사가 설치 안내를 준비하는 동안 기다려 주십시오.</String>
-    <String Id="PrepareDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 시작</String>
+    <String Id="PrepareDlgDescription" Overridable="yes">E¤EEEˆë²•ì‚¬E€ E¤EEEˆë‚´E¼ E€EE•˜EEE™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="PrepareDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ Eœìž‘</String>
     
-    <String Id="ProgressDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="ProgressDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="ProgressDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="ProgressDlgTextInstalling" Overridable="yes">설치 마법사에서 [ProductName]을(를) 설치하는 동안 기다려 주십시오.</String>
-    <String Id="ProgressDlgTitleInstalling" Overridable="yes">{\WixUI_Font_Title}[ProductName] 설치 중</String>
-    <String Id="ProgressDlgTextChanging" Overridable="yes">설치 마법사에서 [ProductName]을(를) 변경하는 동안 기다려 주십시오.</String>
-    <String Id="ProgressDlgTitleChanging" Overridable="yes">{\WixUI_Font_Title}[ProductName] 변경 중</String>
-    <String Id="ProgressDlgTextRepairing" Overridable="yes">설치 마법사에서 [ProductName]을(를) 복구하는 동안 기다려 주십시오.</String>
-    <String Id="ProgressDlgTitleRepairing" Overridable="yes">{\WixUI_Font_Title}[ProductName] 복구 중</String>
-    <String Id="ProgressDlgTextRemoving" Overridable="yes">설치 마법사에서 [ProductName]을(를) 제거하는 동안 기다려 주십시오.</String>
-    <String Id="ProgressDlgTitleRemoving" Overridable="yes">{\WixUI_Font_Title}[ProductName] 제거 중</String>
-    <String Id="ProgressDlgProgressBar" Overridable="yes">진행 완료</String>
-    <String Id="ProgressDlgStatusLabel" Overridable="yes">상태:</String>
+    <String Id="ProgressDlgTextInstalling" Overridable="yes">E¤EEEˆë²•ì‚¬EìE [ProductName]EEE¼) E¤E˜í•˜EEE™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="ProgressDlgTitleInstalling" Overridable="yes">{\WixUI_Font_Title}[ProductName] E¤EEEE/String>
+    <String Id="ProgressDlgTextChanging" Overridable="yes">E¤EEEˆë²•ì‚¬EìE [ProductName]EEE¼) E€E½ú±˜ëŠ” E™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="ProgressDlgTitleChanging" Overridable="yes">{\WixUI_Font_Title}[ProductName] E€E½ EE/String>
+    <String Id="ProgressDlgTextRepairing" Overridable="yes">E¤EEEˆë²•ì‚¬EìE [ProductName]EEE¼) EµE¬ú±˜ëŠ” E™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="ProgressDlgTitleRepairing" Overridable="yes">{\WixUI_Font_Title}[ProductName] EµE¬ EE/String>
+    <String Id="ProgressDlgTextRemoving" Overridable="yes">E¤EEEˆë²•ì‚¬EìE [ProductName]EEE¼) Eœê±°ú±˜ëŠ” E™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="ProgressDlgTitleRemoving" Overridable="yes">{\WixUI_Font_Title}[ProductName] Eœê±° EE/String>
+    <String Id="ProgressDlgProgressBar" Overridable="yes">EE–‰ EE£E/String>
+    <String Id="ProgressDlgStatusLabel" Overridable="yes">EEE:</String>
     
-    <String Id="ResumeDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="ResumeDlgInstall" Overridable="yes">설치(&I)</String>
+    <String Id="ResumeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="ResumeDlgInstall" Overridable="yes">E¤EE&I)</String>
     <String Id="ResumeDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="ResumeDlgDescription" Overridable="yes">설치 마법사가 [ProductName]의 설치를 완료합니다. 계속하려면 "설치"를 클릭하고, 설치 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="ResumeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 다시 시작</String>
+    <String Id="ResumeDlgDescription" Overridable="yes">E¤EEEˆë²•ì‚¬E€ [ProductName]EEE¤E˜ë¥¼ EE£Œí•©Eˆë‹¤. EEEú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="ResumeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ E¤EEEœìž‘</String>
     
-    <String Id="SetupTypeDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="SetupTypeDlgTypicalButton" Overridable="yes">표준(&T)</String>
-    <String Id="SetupTypeDlgTypicalButtonTooltip" Overridable="yes">표준 설치</String>
-    <String Id="SetupTypeDlgCustomButton" Overridable="yes">사용자 지정(&U)</String>
-    <String Id="SetupTypeDlgCustomButtonTooltip" Overridable="yes">사용자 지정 설치</String>
-    <String Id="SetupTypeDlgCompleteButton" Overridable="yes">ì „ì²´(&O)</String>
-    <String Id="SetupTypeDlgCompleteButtonTooltip" Overridable="yes">전체 설치</String>
+    <String Id="SetupTypeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="SetupTypeDlgTypicalButton" Overridable="yes">ú­œì¤€(&T)</String>
+    <String Id="SetupTypeDlgTypicalButtonTooltip" Overridable="yes">ú­œì¤€ E¤EE/String>
+    <String Id="SetupTypeDlgCustomButton" Overridable="yes">E¬E©EEE€EE&U)</String>
+    <String Id="SetupTypeDlgCustomButtonTooltip" Overridable="yes">E¬E©EEE€EEE¤EE/String>
+    <String Id="SetupTypeDlgCompleteButton" Overridable="yes">EE²´(&O)</String>
+    <String Id="SetupTypeDlgCompleteButtonTooltip" Overridable="yes">EE²´ E¤EE/String>
     <String Id="SetupTypeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="SetupTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}설치 유형 선택</String>
-    <String Id="SetupTypeDlgDescription" Overridable="yes">요구에 가장 잘 맞는 설치 유형을 선택하십시오.</String>
-    <String Id="SetupTypeDlgTypicalText" Overridable="yes">가장 일반적인 프로그램 기능을 설치합니다. 대부분의 사용자에게 권장합니다.</String>
-    <String Id="SetupTypeDlgCustomText" Overridable="yes">설치할 프로그램 기능과 위치를 선택할 수 있습니다. 고급 사용자에게 권장합니다.</String>
-    <String Id="SetupTypeDlgCompleteText" Overridable="yes">모든 프로그램 기능을 설치합니다. 가장 많은 디스크 공간이 필요합니다.</String>
+    <String Id="SetupTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}E¤EEE ú´EE úŸE/String>
+    <String Id="SetupTypeDlgDescription" Overridable="yes">E”구EEE€E¥ EEEžëŠ” E¤EEE ú´•ì„ E úŸí•˜E­Eœì˜¤.</String>
+    <String Id="SetupTypeDlgTypicalText" Overridable="yes">E€E¥ E¼E˜ì E¸ ú°E¡œê·¸E¨ E°E¥EEE¤E˜í•©Eˆë‹¤. E€E€EE˜ E¬E©Eì—EEEŒìž¥ú±©Eˆë‹¤.</String>
+    <String Id="SetupTypeDlgCustomText" Overridable="yes">E¤E˜í•  ú°E¡œê·¸E¨ E°E¥E¼ EE¹˜ë¥¼ E úŸí•  EEEˆìŠµEˆë‹¤. E EEE¬E©Eì—EEEŒìž¥ú±©Eˆë‹¤.</String>
+    <String Id="SetupTypeDlgCompleteText" Overridable="yes">E¨E  ú°E¡œê·¸E¨ E°E¥EEE¤E˜í•©Eˆë‹¤. E€E¥ EŽì€ E”스ú¬ EµEE´ ú±Eš”ú±©Eˆë‹¤.</String>
     
-    <String Id="UserExit_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="UserExit_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="UserExitBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="UserExitTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사가 중간에 중단되었습니다.</String>
-    <String Id="UserExitDescription1" Overridable="yes">[ProductName] 설치가 중단되었습니다. 시스템이 수정되지 않았습니다. 나중에 이 프로그램을 설치하려면 설치 마법사를 다시 실행하십시오.</String>
-    <String Id="UserExitDescription2" Overridable="yes">설치 마법사를 끝내려면 "마침" 단추를 클릭하십시오.</String>
+    <String Id="UserExitTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬E€ E‘각E— E‘단E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="UserExitDescription1" Overridable="yes">[ProductName] E¤E˜ê°€ E‘단E˜ì—ˆEµEˆë‹¤. EœìŠ¤ú¡œì´ E˜ì •ë˜E€ EŠì•˜EµEˆë‹¤. E˜ì¤‘에 E´ ú°E¡œê·¸E¨EEE¤E˜í•˜E¤E´ E¤EEEˆë²•ì‚¬E¼ E¤EEE¤ú²‰í•˜E­Eœì˜¤.</String>
+    <String Id="UserExitDescription2" Overridable="yes">E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "Eˆì¹¨" E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
     
-    <String Id="VerifyReadyDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="VerifyReadyDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="VerifyReadyDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="VerifyReadyDlgInstall" Overridable="yes">설치(&I)</String>
-    <String Id="VerifyReadyDlgInstallText" Overridable="yes">설치를 시작하려면 "설치"를 클릭합니다. 설치 설정을 검토하거나 변경하려면 "뒤로"를 클릭하고, 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="VerifyReadyDlgInstallTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]을(를) 설치할 준비가 되었습니다.</String>
-    <String Id="VerifyReadyDlgChange" Overridable="yes">변경(&C)</String>
-    <String Id="VerifyReadyDlgChangeText" Overridable="yes">설치를 시작하려면 "변경"을 클릭합니다. 설치 설정을 검토하거나 변경하려면 "뒤로"를 클릭하고, 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="VerifyReadyDlgChangeTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]을(를) 변경할 준비가 되었습니다.</String>
-    <String Id="VerifyReadyDlgRepair" Overridable="yes">覲糾規(&P)</String>
-    <String Id="VerifyReadyDlgRepairText" Overridable="yes">[ProductName]의 설치를 복구하려면 "복구"를 클릭합니다. 설치 설정을 검토하거나 변경하려면 "뒤로"를 클릭하고, 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="VerifyReadyDlgRepairTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]을(를) 복구할 준비가 되었습니다.</String>
-    <String Id="VerifyReadyDlgRemove" Overridable="yes">제거(&R)</String>
-    <String Id="VerifyReadyDlgRemoveText" Overridable="yes">[ProductName]을(를) 제거하려면 "제거"를 클릭합니다. 설치 설정을 검토하거나 변경하려면 "뒤로"를 클릭하고, 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="VerifyReadyDlgRemoveTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]을(를) 제거할 준비가 되었습니다.</String>
+    <String Id="VerifyReadyDlgInstall" Overridable="yes">E¤EE&I)</String>
+    <String Id="VerifyReadyDlgInstallText" Overridable="yes">E¤E˜ë¥¼ Eœìž‘ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±©Eˆë‹¤. E¤EEE¤E•ì„ E€ú¢ ú±˜ê±°EEE€E½ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , Eˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="VerifyReadyDlgInstallTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEE¼) E¤E˜í•  E€EE°€ E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="VerifyReadyDlgChange" Overridable="yes">E€E½(&C)</String>
+    <String Id="VerifyReadyDlgChangeText" Overridable="yes">E¤E˜ë¥¼ Eœìž‘ú±˜ë ¤E´ "E€E½"EEú´E­ú±©Eˆë‹¤. E¤EEE¤E•ì„ E€ú¢ ú±˜ê±°EEE€E½ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , Eˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="VerifyReadyDlgChangeTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEE¼) E€E½ú±  E€EE°€ E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="VerifyReadyDlgRepair" Overridable="yes">EµE¬(&P)</String>
+    <String Id="VerifyReadyDlgRepairText" Overridable="yes">[ProductName]EEE¤E˜ë¥¼ EµE¬ú±˜ë ¤E´ "EµE¬"E¼ ú´E­ú±©Eˆë‹¤. E¤EEE¤E•ì„ E€ú¢ ú±˜ê±°EEE€E½ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , Eˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="VerifyReadyDlgRepairTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEE¼) EµE¬ú±  E€EE°€ E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="VerifyReadyDlgRemove" Overridable="yes">Eœê±°(&R)</String>
+    <String Id="VerifyReadyDlgRemoveText" Overridable="yes">[ProductName]EEE¼) Eœê±°ú±˜ë ¤E´ "Eœê±°"E¼ ú´E­ú±©Eˆë‹¤. E¤EEE¤E•ì„ E€ú¢ ú±˜ê±°EEE€E½ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , Eˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="VerifyReadyDlgRemoveTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEE¼) Eœê±°ú±  E€EE°€ E˜ì—ˆEµEˆë‹¤.</String>
     
-    <String Id="WaitForCostingDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="WaitForCostingDlgReturn" Overridable="yes">돌아가기(&R)</String>
-    <String Id="WaitForCostingDlgText" Overridable="yes">필요한 디스크 공간을 확인하고 있습니다.</String>
+    <String Id="WaitForCostingDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="WaitForCostingDlgReturn" Overridable="yes">EŒì•„E€E°(&R)</String>
+    <String Id="WaitForCostingDlgText" Overridable="yes">ú±Eš”ú±EE”스ú¬ EµEE„ úµ•ì¸ú±˜ê³  EˆìŠµEˆë‹¤.</String>
     <String Id="WaitForCostingDlgIcon" Overridable="yes">WixUI_Ico_Exclam</String>
-    <String Id="WaitForCostingDlgIconTooltip" Overridable="yes">경고 아이콘</String>
+    <String Id="WaitForCostingDlgIconTooltip" Overridable="yes">E½E  EE´EE/String>
     
-    <String Id="WelcomeDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="WelcomeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="WelcomeDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="WelcomeDlgDescription" Overridable="yes">컴퓨터에 [ProductName]을(를) 설치합니다. 계속하려면 "다음"을 클릭하고 설치 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="WelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 시작</String>
+    <String Id="WelcomeDlgDescription" Overridable="yes">E´ú¯¨ú °EE[ProductName]EEE¼) E¤E˜í•©Eˆë‹¤. EEEú±˜ë ¤E´ "E¤EEEEú´E­ú±˜ê³  E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="WelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ Eœìž‘</String>
     
-    <String Id="WelcomeEulaDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="WelcomeEulaDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="WelcomeEulaDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="WelcomeEulaDlgLicenseAcceptedCheckBox" Overridable="yes">동의함(&A)</String>
-    <String Id="WelcomeEulaDlgInstall" Overridable="yes">설치(&I)</String>
-    <String Id="WelcomeEulaDlgTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName] 사용권 계약을 읽어 주십시오.</String>
+    <String Id="WelcomeEulaDlgLicenseAcceptedCheckBox" Overridable="yes">E™ì˜ú±¨(&A)</String>
+    <String Id="WelcomeEulaDlgInstall" Overridable="yes">E¤EE&I)</String>
+    <String Id="WelcomeEulaDlgTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName] E¬E©EEEE•½EEE½E´ E¼E­Eœì˜¤.</String>
     
-    <String Id="ProgressTextInstallValidate" Overridable="yes">설치 유효성 확인 중</String>
-    <String Id="ProgressTextInstallFiles" Overridable="yes">새 파일 복사 중</String>
-    <String Id="ProgressTextInstallFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9], 크기: [6]</String>
-    <String Id="ProgressTextInstallAdminPackage" Overridable="yes">네트워크 설치 파일을 복사하는 중</String>
-    <String Id="ProgressTextInstallAdminPackageTemplate" Overridable="yes">파일: [1], 디렉터리: [9], 크기: [6]</String>
-    <String Id="ProgressTextFileCost" Overridable="yes">필요한 공간을 확인하는 중</String>
-    <String Id="ProgressTextCostInitialize" Overridable="yes">필요한 공간을 확인하는 중</String>
-    <String Id="ProgressTextCostFinalize" Overridable="yes">필요한 공간을 확인하는 중</String>
-    <String Id="ProgressTextCreateShortcuts" Overridable="yes">바로 가기 만드는 중</String>
-    <String Id="ProgressTextCreateShortcutsTemplate" Overridable="yes">바로 가기: [1]</String>
-    <String Id="ProgressTextPublishComponents" Overridable="yes">해당 구성 요소를 게시하는 중</String>
-    <String Id="ProgressTextPublishComponentsTemplate" Overridable="yes">구성 요소 ID: [1], 한정자: [2]</String>
-    <String Id="ProgressTextPublishFeatures" Overridable="yes">제품 기능을 게시하는 중</String>
-    <String Id="ProgressTextPublishFeaturesTemplate" Overridable="yes">기능: [1]</String>
-    <String Id="ProgressTextPublishProduct" Overridable="yes">제품 정보를 게시하는 중</String>
-    <String Id="ProgressTextRegisterClassInfo" Overridable="yes">클래스 서버를 등록하는 중</String>
-    <String Id="ProgressTextRegisterClassInfoTemplate" Overridable="yes">클래스 ID: [1]</String>
-    <String Id="ProgressTextRegisterExtensionInfo" Overridable="yes">확장 서버를 등록하는 중</String>
-    <String Id="ProgressTextRegisterExtensionInfoTemplate" Overridable="yes">확장: [1]</String>
-    <String Id="ProgressTextRegisterMIMEInfo" Overridable="yes">MIME 정보를 등록하는 중</String>
-    <String Id="ProgressTextRegisterMIMEInfoTemplate" Overridable="yes">MIME 콘텐트 형식: [1], 확장: [2]</String>
-    <String Id="ProgressTextRegisterProgIdInfo" Overridable="yes">프로그램 ID를 등록하는 중</String>
+    <String Id="ProgressTextInstallValidate" Overridable="yes">E¤EEE ú¶¨E± úµ•ì¸ EE/String>
+    <String Id="ProgressTextInstallFiles" Overridable="yes">EEú¨Œì¼ EµE¬ EE/String>
+    <String Id="ProgressTextInstallFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9], ú¬E°: [6]</String>
+    <String Id="ProgressTextInstallAdminPackage" Overridable="yes">E¤ú¦¸EŒí¬ E¤EEú¨Œì¼EEEµE¬ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextInstallAdminPackageTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9], ú¬E°: [6]</String>
+    <String Id="ProgressTextFileCost" Overridable="yes">ú±Eš”ú±EEµEE„ úµ•ì¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextCostInitialize" Overridable="yes">ú±Eš”ú±EEµEE„ úµ•ì¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextCostFinalize" Overridable="yes">ú±Eš”ú±EEµEE„ úµ•ì¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextCreateShortcuts" Overridable="yes">E”롁EE€E° EŒë“œEEEE/String>
+    <String Id="ProgressTextCreateShortcutsTemplate" Overridable="yes">E”롁EE€E°: [1]</String>
+    <String Id="ProgressTextPublishComponents" Overridable="yes">ú±´E¹ E¬E± E”ìEE¼ EŒì‹œú±˜ëŠ” EE/String>
+    <String Id="ProgressTextPublishComponentsTemplate" Overridable="yes">E¬E± E”ìE ID: [1], ú±œì •ìž: [2]</String>
+    <String Id="ProgressTextPublishFeatures" Overridable="yes">Eœí’ˆ E°E¥EEEŒì‹œú±˜ëŠ” EE/String>
+    <String Id="ProgressTextPublishFeaturesTemplate" Overridable="yes">E°E¥: [1]</String>
+    <String Id="ProgressTextPublishProduct" Overridable="yes">Eœí’ˆ E•ë³´E¼ EŒì‹œú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRegisterClassInfo" Overridable="yes">ú´E˜ìŠ¤ Eœë²E¥¼ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterClassInfoTemplate" Overridable="yes">ú´E˜ìŠ¤ ID: [1]</String>
+    <String Id="ProgressTextRegisterExtensionInfo" Overridable="yes">úµ•ìž¥ Eœë²E¥¼ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterExtensionInfoTemplate" Overridable="yes">úµ•ìž¥: [1]</String>
+    <String Id="ProgressTextRegisterMIMEInfo" Overridable="yes">MIME E•ë³´E¼ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterMIMEInfoTemplate" Overridable="yes">MIME E˜íEú¦¸ ú´•ì‹: [1], úµ•ìž¥: [2]</String>
+    <String Id="ProgressTextRegisterProgIdInfo" Overridable="yes">ú°E¡œê·¸E¨ IDE¼ E±Eí•˜EEEE/String>
     <String Id="ProgressTextRegisterProgIdInfoTemplate" Overridable="yes">ProgID: [1]</String>
-    <String Id="ProgressTextAllocateRegistrySpace" Overridable="yes">레지스트리 공간을 할당하는 중</String>
-    <String Id="ProgressTextAllocateRegistrySpaceTemplate" Overridable="yes">사용 가능한 공간: [1]</String>
-    <String Id="ProgressTextAppSearch" Overridable="yes">설치한 응용 프로그램을 찾는 중</String>
-    <String Id="ProgressTextAppSearchTemplate" Overridable="yes">속성: [1], 서명: [2]</String>
-    <String Id="ProgressTextBindImage" Overridable="yes">실행 파일을 연결하는 중</String>
-    <String Id="ProgressTextBindImageTemplate" Overridable="yes">파일: [1]</String>
-    <String Id="ProgressTextCCPSearch" Overridable="yes">정품을 찾는 중</String>
-    <String Id="ProgressTextCreateFolders" Overridable="yes">폴더를 만드는 중</String>
-    <String Id="ProgressTextCreateFoldersTemplate" Overridable="yes">폴더: [1]</String>
-    <String Id="ProgressTextDeleteServices" Overridable="yes">서비스를 삭제하는 중</String>
-    <String Id="ProgressTextDeleteServicesTemplate" Overridable="yes">서비스: [1]</String>
-    <String Id="ProgressTextDuplicateFiles" Overridable="yes">중복 파일을 만드는 중</String>
-    <String Id="ProgressTextDuplicateFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9], 크기: [6]</String>
-    <String Id="ProgressTextFindRelatedProducts" Overridable="yes">관련 응용 프로그램을 찾는 중</String>
-    <String Id="ProgressTextFindRelatedProductsTemplate" Overridable="yes">찾은 응용 프로그램: [1]</String>
-    <String Id="ProgressTextInstallODBC" Overridable="yes">ODBC 구성 요소를 설치하는 중</String>
-    <String Id="ProgressTextInstallServices" Overridable="yes">새 서비스를 설치하는 중</String>
-    <String Id="ProgressTextInstallServicesTemplate" Overridable="yes">서비스: [2]</String>
-    <String Id="ProgressTextLaunchConditions" Overridable="yes">시작 조건을 평가하는 중</String>
-    <String Id="ProgressTextMigrateFeatureStates" Overridable="yes">관련 응용 프로그램에서 기능 상태를 마이그레이션하는 중</String>
-    <String Id="ProgressTextMigrateFeatureStatesTemplate" Overridable="yes">응용 프로그램: [1]</String>
-    <String Id="ProgressTextMoveFiles" Overridable="yes">파일을 옮기는 중</String>
-    <String Id="ProgressTextMoveFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9], 크기: [6]</String>
-    <String Id="ProgressTextPatchFiles" Overridable="yes">파일을 패치하는 중</String>
-    <String Id="ProgressTextPatchFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [2], 크기: [3]</String>
-    <String Id="ProgressTextProcessComponents" Overridable="yes">구성 요소 등록을 업데이트하는 중</String>
-    <String Id="ProgressTextRegisterComPlus" Overridable="yes">COM+ 응용 프로그램 및 구성 요소를 등록하는 중</String>
-    <String Id="ProgressTextRegisterComPlusTemplate" Overridable="yes">AppId: [1]{{, AppType: [2], 사용자: [3], RSN: [4]}}</String>
-    <String Id="ProgressTextRegisterFonts" Overridable="yes">글꼴을 등록하는 중</String>
-    <String Id="ProgressTextRegisterFontsTemplate" Overridable="yes">글꼴: [1]</String>
-    <String Id="ProgressTextRegisterProduct" Overridable="yes">제품을 등록하는 중</String>
+    <String Id="ProgressTextAllocateRegistrySpace" Overridable="yes">Eˆì§€E¤ú¦¸E¬ EµEE„ ú± E¹ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextAllocateRegistrySpaceTemplate" Overridable="yes">E¬E© E€E¥ú±EEµEE [1]</String>
+    <String Id="ProgressTextAppSearch" Overridable="yes">E¤E˜í•œ E‘ìš© ú°E¡œê·¸E¨EEE¾EEEE/String>
+    <String Id="ProgressTextAppSearchTemplate" Overridable="yes">Eì„±: [1], EœëªE [2]</String>
+    <String Id="ProgressTextBindImage" Overridable="yes">E¤ú²Eú¨Œì¼EEE°E°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextBindImageTemplate" Overridable="yes">ú¨Œì¼: [1]</String>
+    <String Id="ProgressTextCCPSearch" Overridable="yes">E•í’ˆEEE¾EEEE/String>
+    <String Id="ProgressTextCreateFolders" Overridable="yes">ú«´E”를 EŒë“œEEEE/String>
+    <String Id="ProgressTextCreateFoldersTemplate" Overridable="yes">ú«´EE [1]</String>
+    <String Id="ProgressTextDeleteServices" Overridable="yes">Eœë¹EŠ¤E¼ E­Eœí•˜EEEE/String>
+    <String Id="ProgressTextDeleteServicesTemplate" Overridable="yes">Eœë¹EŠ¤: [1]</String>
+    <String Id="ProgressTextDuplicateFiles" Overridable="yes">E‘ë³µ ú¨Œì¼EEEŒë“œEEEE/String>
+    <String Id="ProgressTextDuplicateFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9], ú¬E°: [6]</String>
+    <String Id="ProgressTextFindRelatedProducts" Overridable="yes">E€E¨ E‘ìš© ú°E¡œê·¸E¨EEE¾EEEE/String>
+    <String Id="ProgressTextFindRelatedProductsTemplate" Overridable="yes">E¾E€ E‘ìš© ú°E¡œê·¸E¨: [1]</String>
+    <String Id="ProgressTextInstallODBC" Overridable="yes">ODBC E¬E± E”ìEE¼ E¤E˜í•˜EEEE/String>
+    <String Id="ProgressTextInstallServices" Overridable="yes">EEEœë¹EŠ¤E¼ E¤E˜í•˜EEEE/String>
+    <String Id="ProgressTextInstallServicesTemplate" Overridable="yes">Eœë¹EŠ¤: [2]</String>
+    <String Id="ProgressTextLaunchConditions" Overridable="yes">Eœìž‘ E°E´EEú«‰ê°€ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextMigrateFeatureStates" Overridable="yes">E€E¨ E‘ìš© ú°E¡œê·¸E¨EìE E°E¥ EEEE¼ Eˆì´E¸Eˆì´E˜í•˜EEEE/String>
+    <String Id="ProgressTextMigrateFeatureStatesTemplate" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨: [1]</String>
+    <String Id="ProgressTextMoveFiles" Overridable="yes">ú¨Œì¼EEE®E°EEEE/String>
+    <String Id="ProgressTextMoveFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9], ú¬E°: [6]</String>
+    <String Id="ProgressTextPatchFiles" Overridable="yes">ú¨Œì¼EEú¨¨E˜í•˜EEEE/String>
+    <String Id="ProgressTextPatchFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [2], ú¬E°: [3]</String>
+    <String Id="ProgressTextProcessComponents" Overridable="yes">E¬E± E”ìE E±Eì„ EE°E´ú¦¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRegisterComPlus" Overridable="yes">COM+ E‘ìš© ú°E¡œê·¸E¨ EEE¬E± E”ìEE¼ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterComPlusTemplate" Overridable="yes">AppId: [1]{{, AppType: [2], E¬E©EE [3], RSN: [4]}}</String>
+    <String Id="ProgressTextRegisterFonts" Overridable="yes">E€E´EEE±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterFontsTemplate" Overridable="yes">E€E´: [1]</String>
+    <String Id="ProgressTextRegisterProduct" Overridable="yes">Eœí’ˆEEE±Eí•˜EEEE/String>
     <String Id="ProgressTextRegisterProductTemplate" Overridable="yes">[1]</String>
-    <String Id="ProgressTextRegisterTypeLibraries" Overridable="yes">형식 라이브러리를 등록하는 중</String>
+    <String Id="ProgressTextRegisterTypeLibraries" Overridable="yes">ú´•ì‹ E¼E´EŒëŸ¬E¬E¼ E±Eí•˜EEEE/String>
     <String Id="ProgressTextRegisterTypeLibrariesTemplate" Overridable="yes">LibID: [1]</String>
-    <String Id="ProgressTextRegisterUser" Overridable="yes">사용자를 등록하는 중</String>
+    <String Id="ProgressTextRegisterUser" Overridable="yes">E¬E©Eë¥¼ E±Eí•˜EEEE/String>
     <String Id="ProgressTextRegisterUserTemplate" Overridable="yes">[1]</String>
-    <String Id="ProgressTextRemoveDuplicateFiles" Overridable="yes">중복 파일을 제거하는 중</String>
-    <String Id="ProgressTextRemoveDuplicateFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9]</String>
-    <String Id="ProgressTextRemoveEnvironmentStrings" Overridable="yes">환경 문자열을 업데이트하는 중</String>
-    <String Id="ProgressTextRemoveEnvironmentStringsTemplate" Overridable="yes">이름: [1], 값: [2], 작업 [3]</String>
-    <String Id="ProgressTextRemoveExistingProducts" Overridable="yes">응용 프로그램을 제거하는 중</String>
-    <String Id="ProgressTextRemoveExistingProductsTemplate" Overridable="yes">응용 프로그램: [1], 명령줄: [2]</String>
-    <String Id="ProgressTextRemoveFiles" Overridable="yes">파일을 제거하는 중</String>
-    <String Id="ProgressTextRemoveFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9]</String>
-    <String Id="ProgressTextRemoveFolders" Overridable="yes">폴더를 제거하는 중</String>
-    <String Id="ProgressTextRemoveFoldersTemplate" Overridable="yes">폴더: [1]</String>
-    <String Id="ProgressTextRemoveIniValues" Overridable="yes">INI 파일 항목을 제거하는 중</String>
-    <String Id="ProgressTextRemoveIniValuesTemplate" Overridable="yes">파일: [1], 섹션: [2], 키: [3], 값: [4]</String>
-    <String Id="ProgressTextRemoveODBC" Overridable="yes">ODBC 구성 요소를 제거하는 중</String>
-    <String Id="ProgressTextRemoveRegistryValues" Overridable="yes">시스템 레지스트리 값을 제거하는 중</String>
-    <String Id="ProgressTextRemoveRegistryValuesTemplate" Overridable="yes">키: [1], 이름: [2]</String>
-    <String Id="ProgressTextRemoveShortcuts" Overridable="yes">바로 가기를 제거하는 중</String>
-    <String Id="ProgressTextRemoveShortcutsTemplate" Overridable="yes">바로 가기: [1]</String>
-    <String Id="ProgressTextRMCCPSearch" Overridable="yes">정품을 찾는 중</String>
-    <String Id="ProgressTextSelfRegModules" Overridable="yes">모듈을 등록하는 중</String>
-    <String Id="ProgressTextSelfRegModulesTemplate" Overridable="yes">파일: [1], 폴더: [2]</String>
-    <String Id="ProgressTextSelfUnregModules" Overridable="yes">모듈의 등록을 취소하는 중</String>
-    <String Id="ProgressTextSelfUnregModulesTemplate" Overridable="yes">파일: [1], 폴더: [2]</String>
-    <String Id="ProgressTextSetODBCFolders" Overridable="yes">ODBC 디렉터리를 초기화하는 중</String>
-    <String Id="ProgressTextStartServices" Overridable="yes">서비스를 시작하는 중</String>
-    <String Id="ProgressTextStartServicesTemplate" Overridable="yes">서비스: [1]</String>
-    <String Id="ProgressTextStopServices" Overridable="yes">서비스를 중지하는 중</String>
-    <String Id="ProgressTextStopServicesTemplate" Overridable="yes">서비스: [1]</String>
-    <String Id="ProgressTextUnpublishComponents" Overridable="yes">해당 구성 요소의 게시를 취소하는 중</String>
-    <String Id="ProgressTextUnpublishComponentsTemplate" Overridable="yes">구성 요소 ID: [1], 한정자: [2]</String>
-    <String Id="ProgressTextUnpublishFeatures" Overridable="yes">제품 기능의 게시를 취소하는 중</String>
-    <String Id="ProgressTextUnpublishFeaturesTemplate" Overridable="yes">기능: [1]</String>
-    <String Id="ProgressTextUnregisterClassInfo" Overridable="yes">클래스 서버 등록 취소</String>
-    <String Id="ProgressTextUnregisterClassInfoTemplate" Overridable="yes">클래스 ID: [1]</String>
-    <String Id="ProgressTextUnregisterComPlus" Overridable="yes">COM+ 응용 프로그램 및 구성 요소의 등록을 취소하는 중</String>
+    <String Id="ProgressTextRemoveDuplicateFiles" Overridable="yes">E‘ë³µ ú¨Œì¼EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveDuplicateFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9]</String>
+    <String Id="ProgressTextRemoveEnvironmentStrings" Overridable="yes">úµ˜ê²½ E¸Eì—´EEEE°E´ú¦¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveEnvironmentStringsTemplate" Overridable="yes">E´EE [1], EE [2], E‘ì—… [3]</String>
+    <String Id="ProgressTextRemoveExistingProducts" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveExistingProductsTemplate" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨: [1], EE ¹EE [2]</String>
+    <String Id="ProgressTextRemoveFiles" Overridable="yes">ú¨Œì¼EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9]</String>
+    <String Id="ProgressTextRemoveFolders" Overridable="yes">ú«´E”를 Eœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveFoldersTemplate" Overridable="yes">ú«´EE [1]</String>
+    <String Id="ProgressTextRemoveIniValues" Overridable="yes">INI ú¨Œì¼ ú±­E©EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveIniValuesTemplate" Overridable="yes">ú¨Œì¼: [1], E¹EE [2], úž¤: [3], EE [4]</String>
+    <String Id="ProgressTextRemoveODBC" Overridable="yes">ODBC E¬E± E”ìEE¼ Eœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveRegistryValues" Overridable="yes">EœìŠ¤ú¡EEˆì§€E¤ú¦¸E¬ E’을 Eœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveRegistryValuesTemplate" Overridable="yes">úž¤: [1], E´EE [2]</String>
+    <String Id="ProgressTextRemoveShortcuts" Overridable="yes">E”롁EE€E°E¼ Eœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveShortcutsTemplate" Overridable="yes">E”롁EE€E°: [1]</String>
+    <String Id="ProgressTextRMCCPSearch" Overridable="yes">E•í’ˆEEE¾EEEE/String>
+    <String Id="ProgressTextSelfRegModules" Overridable="yes">E¨Eˆì„ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextSelfRegModulesTemplate" Overridable="yes">ú¨Œì¼: [1], ú«´EE [2]</String>
+    <String Id="ProgressTextSelfUnregModules" Overridable="yes">E¨Eˆì˜ E±Eì„ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextSelfUnregModulesTemplate" Overridable="yes">ú¨Œì¼: [1], ú«´EE [2]</String>
+    <String Id="ProgressTextSetODBCFolders" Overridable="yes">ODBC E”렉터E¬E¼ Eˆê¸°úµ”하EEEE/String>
+    <String Id="ProgressTextStartServices" Overridable="yes">Eœë¹EŠ¤E¼ Eœìž‘ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextStartServicesTemplate" Overridable="yes">Eœë¹EŠ¤: [1]</String>
+    <String Id="ProgressTextStopServices" Overridable="yes">Eœë¹EŠ¤E¼ E‘지ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextStopServicesTemplate" Overridable="yes">Eœë¹EŠ¤: [1]</String>
+    <String Id="ProgressTextUnpublishComponents" Overridable="yes">ú±´E¹ E¬E± E”ìEEEEŒì‹œE¼ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnpublishComponentsTemplate" Overridable="yes">E¬E± E”ìE ID: [1], ú±œì •ìž: [2]</String>
+    <String Id="ProgressTextUnpublishFeatures" Overridable="yes">Eœí’ˆ E°E¥EEEŒì‹œE¼ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnpublishFeaturesTemplate" Overridable="yes">E°E¥: [1]</String>
+    <String Id="ProgressTextUnregisterClassInfo" Overridable="yes">ú´E˜ìŠ¤ Eœë²EE±EEE¨EE/String>
+    <String Id="ProgressTextUnregisterClassInfoTemplate" Overridable="yes">ú´E˜ìŠ¤ ID: [1]</String>
+    <String Id="ProgressTextUnregisterComPlus" Overridable="yes">COM+ E‘ìš© ú°E¡œê·¸E¨ EEE¬E± E”ìEEEE±Eì„ E¨EŒí•˜EEEE/String>
     <String Id="ProgressTextUnregisterComPlusTemplate" Overridable="yes">AppId: [1]{{, AppType: [2]}}</String>
-    <String Id="ProgressTextUnregisterExtensionInfo" Overridable="yes">확장 서버의 등록을 취소하는 중</String>
-    <String Id="ProgressTextUnregisterExtensionInfoTemplate" Overridable="yes">확장: [1]</String>
-    <String Id="ProgressTextUnregisterFonts" Overridable="yes">글꼴 등록을 취소하는 중</String>
-    <String Id="ProgressTextUnregisterFontsTemplate" Overridable="yes">글꼴: [1]</String>
-    <String Id="ProgressTextUnregisterMIMEInfo" Overridable="yes">MIME 정보의 등록을 취소하는 중</String>
-    <String Id="ProgressTextUnregisterMIMEInfoTemplate" Overridable="yes">MIME 콘텐트 형식: [1], 확장: [2]</String>
-    <String Id="ProgressTextUnregisterProgIdInfo" Overridable="yes">프로그램 식별자의 등록을 취소하는 중</String>
+    <String Id="ProgressTextUnregisterExtensionInfo" Overridable="yes">úµ•ìž¥ Eœë²E˜ E±Eì„ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnregisterExtensionInfoTemplate" Overridable="yes">úµ•ìž¥: [1]</String>
+    <String Id="ProgressTextUnregisterFonts" Overridable="yes">E€E´ E±Eì„ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnregisterFontsTemplate" Overridable="yes">E€E´: [1]</String>
+    <String Id="ProgressTextUnregisterMIMEInfo" Overridable="yes">MIME E•ë³´EEE±Eì„ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnregisterMIMEInfoTemplate" Overridable="yes">MIME E˜íEú¦¸ ú´•ì‹: [1], úµ•ìž¥: [2]</String>
+    <String Id="ProgressTextUnregisterProgIdInfo" Overridable="yes">ú°E¡œê·¸E¨ Eë³EžEEE±Eì„ E¨EŒí•˜EEEE/String>
     <String Id="ProgressTextUnregisterProgIdInfoTemplate" Overridable="yes">ProgID: [1]</String>
-    <String Id="ProgressTextUnregisterTypeLibraries" Overridable="yes">형식 라이브러리의 등록을 취소하는 중</String>
+    <String Id="ProgressTextUnregisterTypeLibraries" Overridable="yes">ú´•ì‹ E¼E´EŒëŸ¬E¬EEE±Eì„ E¨EŒí•˜EEEE/String>
     <String Id="ProgressTextUnregisterTypeLibrariesTemplate" Overridable="yes">LibID: [1]</String>
-    <String Id="ProgressTextWriteEnvironmentStrings" Overridable="yes">환경 문자열을 업데이트하는 중</String>
-    <String Id="ProgressTextWriteEnvironmentStringsTemplate" Overridable="yes">이름: [1], 값: [2], 작업 [3]</String>
-    <String Id="ProgressTextWriteIniValues" Overridable="yes">INI 파일 값을 쓰는 중</String>
-    <String Id="ProgressTextWriteIniValuesTemplate" Overridable="yes">파일: [1], 섹션: [2], 키: [3], 값: [4]</String>
-    <String Id="ProgressTextWriteRegistryValues" Overridable="yes">시스템 레지스트리 값을 쓰는 중</String>
-    <String Id="ProgressTextWriteRegistryValuesTemplate" Overridable="yes">키: [1], 이름: [2], 값: [3]</String>
-    <String Id="ProgressTextAdvertise" Overridable="yes">처음 사용할 때 설치하는 응용 프로그램</String>
-    <String Id="ProgressTextGenerateScript" Overridable="yes">실행할 스크립트 작업을 생성하는 중:</String>
+    <String Id="ProgressTextWriteEnvironmentStrings" Overridable="yes">úµ˜ê²½ E¸Eì—´EEEE°E´ú¦¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextWriteEnvironmentStringsTemplate" Overridable="yes">E´EE [1], EE [2], E‘ì—… [3]</String>
+    <String Id="ProgressTextWriteIniValues" Overridable="yes">INI ú¨Œì¼ E’을 E°EEEE/String>
+    <String Id="ProgressTextWriteIniValuesTemplate" Overridable="yes">ú¨Œì¼: [1], E¹EE [2], úž¤: [3], EE [4]</String>
+    <String Id="ProgressTextWriteRegistryValues" Overridable="yes">EœìŠ¤ú¡EEˆì§€E¤ú¦¸E¬ E’을 E°EEEE/String>
+    <String Id="ProgressTextWriteRegistryValuesTemplate" Overridable="yes">úž¤: [1], E´EE [2], EE [3]</String>
+    <String Id="ProgressTextAdvertise" Overridable="yes">E˜ìŒ E¬E©ú±  EEE¤E˜í•˜EEE‘ìš© ú°E¡œê·¸E¨</String>
+    <String Id="ProgressTextGenerateScript" Overridable="yes">E¤ú²‰í•  E¤ú¬E½ú¦¸ E‘ì—…EEEì„±ú±˜ëŠ” EE</String>
     <String Id="ProgressTextGenerateScriptTemplate" Overridable="yes">[1]</String>
-    <String Id="ProgressTextInstallSFPCatalogFile" Overridable="yes">시스템 카탈로그를 설치하는 중</String>
-    <String Id="ProgressTextInstallSFPCatalogFileTemplate" Overridable="yes">파일: [1], 종속성: [2]</String>
-    <String Id="ProgressTextMsiPublishAssemblies" Overridable="yes">어셈블리 정보를 게시하는 중</String>
-    <String Id="ProgressTextMsiPublishAssembliesTemplate" Overridable="yes">응용 프로그램 컨텍스트:[1], 어셈블리 이름:[2]</String>
-    <String Id="ProgressTextMsiUnpublishAssemblies" Overridable="yes">어셈블리 정보의 게시를 취소하는 중</String>
-    <String Id="ProgressTextMsiUnpublishAssembliesTemplate" Overridable="yes">응용 프로그램 컨텍스트:[1], 어셈블리 이름:[2]</String>
-    <String Id="ProgressTextRollback" Overridable="yes">작업을 롤백하는 중:</String>
+    <String Id="ProgressTextInstallSFPCatalogFile" Overridable="yes">EœìŠ¤ú¡EE´úŸˆë¡œê·¸E¼ E¤E˜í•˜EEEE/String>
+    <String Id="ProgressTextInstallSFPCatalogFileTemplate" Overridable="yes">ú¨Œì¼: [1], EEEE±: [2]</String>
+    <String Id="ProgressTextMsiPublishAssemblies" Overridable="yes">E´Eˆë¸”리 E•ë³´E¼ EŒì‹œú±˜ëŠ” EE/String>
+    <String Id="ProgressTextMsiPublishAssembliesTemplate" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨ E¨ú¡ìŠ¤ú¦¸:[1], E´Eˆë¸”리 E´EE[2]</String>
+    <String Id="ProgressTextMsiUnpublishAssemblies" Overridable="yes">E´Eˆë¸”리 E•ë³´EEEŒì‹œE¼ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextMsiUnpublishAssembliesTemplate" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨ E¨ú¡ìŠ¤ú¦¸:[1], E´Eˆë¸”리 E´EE[2]</String>
+    <String Id="ProgressTextRollback" Overridable="yes">E‘ì—…EEE¤E±ú±˜ëŠ” EE</String>
     <String Id="ProgressTextRollbackTemplate" Overridable="yes">[1]</String>
-    <String Id="ProgressTextRollbackCleanup" Overridable="yes">백업 파일을 제거하는 중</String>
-    <String Id="ProgressTextRollbackCleanupTemplate" Overridable="yes">파일: [1]</String>
-    <String Id="ProgressTextUnmoveFiles" Overridable="yes">이동한 파일을 제거하는 중</String>
-    <String Id="ProgressTextUnmoveFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9]</String>
-    <String Id="ProgressTextUnpublishProduct" Overridable="yes">제품 정보의 게시를 취소하는 중</String>
+    <String Id="ProgressTextRollbackCleanup" Overridable="yes">E±EEú¨Œì¼EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRollbackCleanupTemplate" Overridable="yes">ú¨Œì¼: [1]</String>
+    <String Id="ProgressTextUnmoveFiles" Overridable="yes">E´E™í•œ ú¨Œì¼EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextUnmoveFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9]</String>
+    <String Id="ProgressTextUnpublishProduct" Overridable="yes">Eœí’ˆ E•ë³´EEEŒì‹œE¼ E¨EŒí•˜EEEE/String>
     
-    <String Id="Error0" Overridable="yes">{{심각한 오류: }}</String>
-    <String Id="Error1" Overridable="yes">{{오류 [1]. }}</String>
-    <String Id="Error2" Overridable="yes">경고 [1]. </String>
-    <String Id="Error4" Overridable="yes">ì •ë³´ [1]. </String>
-    <String Id="Error5" Overridable="yes">이 패키지를 설치하는 동안 예상치 않은 오류가 발생했습니다. 패키지에 문제가 있을 수 있습니다. 오류 코드: [1]. {{인수: [2], [3], [4]}}</String>
-    <String Id="Error7" Overridable="yes">{{디스크 꽉 참: }}</String>
-    <String Id="Error8" Overridable="yes">ìž‘ì—… [Time]: [1]. [2]</String>
+    <String Id="Error0" Overridable="yes">{{E¬EE•œ E¤EE }}</String>
+    <String Id="Error1" Overridable="yes">{{E¤EE[1]. }}</String>
+    <String Id="Error2" Overridable="yes">E½E  [1]. </String>
+    <String Id="Error4" Overridable="yes">E•ë³´ [1]. </String>
+    <String Id="Error5" Overridable="yes">E´ ú¨¨úž¤E€E¼ E¤E˜í•˜EEE™ì•ˆ EˆìƒEEEŠì€ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ú¨¨úž¤E€EEE¸Eœê°€ Eˆì„ EEEˆìŠµEˆë‹¤. E¤EEE”ë“œ: [1]. {{E¸EE [2], [3], [4]}}</String>
+    <String Id="Error7" Overridable="yes">{{E”스ú¬ EEE¸: }}</String>
+    <String Id="Error8" Overridable="yes">E‘ì—… [Time]: [1]. [2]</String>
     <String Id="Error9" Overridable="yes">[ProductName]</String>
     <String Id="Error10" Overridable="yes">{[2]}{, [3]}{, [4]}</String>
-    <String Id="Error11" Overridable="yes">메시지 유형: [1], 인수: [2]</String>
-    <String Id="Error12" Overridable="yes">=== 로깅 시작: [Date] [Time] ===</String>
-    <String Id="Error13" Overridable="yes">=== 로깅 중지: [Date] [Time] ===</String>
-    <String Id="Error14" Overridable="yes">작업 시작 [Time]: [1].</String>
-    <String Id="Error15" Overridable="yes">작업 끝 [Time]: [1]. 반환 값 [2].</String>
-    <String Id="Error16" Overridable="yes">남은 시간: {[1]분 }{[2]초}</String>
-    <String Id="Error17" Overridable="yes">메모리가 부족합니다. 다른 응용 프로그램을 종료한 후 다시 시도하십시오.</String>
-    <String Id="Error18" Overridable="yes">설치 관리자가 더 이상 응답하지 않습니다.</String>
-    <String Id="Error19" Overridable="yes">설치가 중단되었습니다.</String>
-    <String Id="Error20" Overridable="yes">[ProductName]을(를) 구성하는 동안 잠시 기다려 주십시오.</String>
-    <String Id="Error21" Overridable="yes">필요한 정보를 모으는 중...</String>
-    <String Id="Error22" Overridable="yes">이 응용 프로그램의 이전 버전을 제거하는 중...</String>
-    <String Id="Error23" Overridable="yes">이 응용 프로그램의 이전 버전을 제거하기 위해 준비하는 중...</String>
-    <String Id="Error32" Overridable="yes">{[ProductName] }설치가 성공적으로 완료되었습니다.</String>
-    <String Id="Error33" Overridable="yes">{[ProductName] }설치하지 못했습니다.</String>
-    <String Id="Error1101" Overridable="yes">파일 읽기 오류: [2]. {{ 시스템 오류 [3].}} 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1301" Overridable="yes">같은 이름의 디렉터리가 이미 있으므로 파일 '[2]'을(를) 만들 수 없습니다. 설치를 취소하고 다른 위치에 다시 설치해 보십시오.</String>
-    <String Id="Error1302" Overridable="yes">다음 디스크를 넣으십시오. [2]</String>
-    <String Id="Error1303" Overridable="yes">이 디렉터리에 액세스할 수 있는 권한이 없습니다: [2]. 설치를 계속할 수 없습니다. Administrator로 로그온하거나 시스템 관리자에게 문의하십시오.</String>
-    <String Id="Error1304" Overridable="yes">파일에 쓰는 동안 오류가 발생했습니다: [2]. 해당 디렉터리에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1305" Overridable="yes">파일 읽기 오류: [2]. {{ 시스템 오류 [3].}} 파일이 있는지, 그리고 그 파일을 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1306" Overridable="yes">다른 응용 프로그램에서 파일 '[2]'을(를) 단독으로 사용하고 있습니다. 다른 응용 프로그램을 모두 닫은 후 "다시 시도"를 클릭하십시오.</String>
-    <String Id="Error1307" Overridable="yes">디스크 공간이 부족해서 이 파일을 설치할 수 없습니다: [2]. 디스크 공간을 늘린 후 "다시 시도"를 클릭하거나 "취소"를 클릭하여 끝내십시오.</String>
-    <String Id="Error1308" Overridable="yes">원본 파일이 없습니다: [2]. 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1309" Overridable="yes">파일 읽기 오류: [3]. {{ 시스템 오류 [2].}} 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1310" Overridable="yes">파일 쓰기 오류: [3]. {{ 시스템 오류 [2].}} 해당 디렉터리에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1311" Overridable="yes">원본 파일이 없습니다{{(cabinet)}}: [2]. 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1312" Overridable="yes">같은 이름의 파일이 이미 있으므로 디렉터리 '[2]'을(를) 만들 수 없습니다. 파일의 이름을 바꾸거나 파일을 제거한 후 "다시 시도"를 클릭하거나, "취소"를 클릭하여 끝내십시오.</String>
-    <String Id="Error1313" Overridable="yes">볼륨 [2]을(를) 현재 사용할 수 없습니다. 다른 볼륨을 선택하십시오.</String>
-    <String Id="Error1314" Overridable="yes">지정한 경로 '[2]'을(를) 사용할 수 없습니다.</String>
-    <String Id="Error1315" Overridable="yes">지정한 폴더 [2]에 쓸 수 없습니다.</String>
-    <String Id="Error1316" Overridable="yes">[2] 파일을 읽는 동안 네트워크 오류가 발생했습니다.</String>
-    <String Id="Error1317" Overridable="yes">[2] 디렉터리를 만드는 동안 오류가 발생했습니다.</String>
-    <String Id="Error1318" Overridable="yes">[2] 디렉터리를 만드는 동안 네트워크 오류가 발생했습니다.</String>
-    <String Id="Error1319" Overridable="yes">[2] 원본 파일 캐비닛을 여는 동안 네트워크 오류가 발생했습니다.</String>
-    <String Id="Error1320" Overridable="yes">지정한 경로 [2]이(가) 너무 깁니다.</String>
-    <String Id="Error1321" Overridable="yes">파일 [2]을(를) 수정할 수 있는 권한이 없습니다.</String>
-    <String Id="Error1322" Overridable="yes">폴더 경로 '[2]'의 일부가 올바르지 않습니다. 공백이거나, 시스템에서 허용하는 길이를 초과합니다.</String>
-    <String Id="Error1323" Overridable="yes">폴더 경로 '[2]'에 폴더 경로에 사용할 수 없는 단어가 들어 있습니다.</String>
-    <String Id="Error1324" Overridable="yes">폴더 경로 '[2]'에 사용할 수 없는 문자가 들어 있습니다.</String>
-    <String Id="Error1325" Overridable="yes">'[2]'은(는) 유효한 약식 파일 이름이 아닙니다.</String>
-    <String Id="Error1326" Overridable="yes">파일 보안 오류: [3] GetLastError: [2]</String>
-    <String Id="Error1327" Overridable="yes">유효하지 않은 드라이브: [2]</String>
-    <String Id="Error1328" Overridable="yes">파일 [2]에 패치를 적용하는 동안 오류가 발생했습니다. 다른 방법으로 업데이트되어, 이 패치를 통한 수정이 불가능합니다. 더 자세한 정보는 패치 공급업체에 문의하십시오. {{시스템 오류: [3]}}</String>
-    <String Id="Error1329" Overridable="yes">캐비닛 파일 [2]이(가) 디지털 서명되어 있지 않기 때문에 필요한 파일을 설치할 수 없습니다. 캐비닛 파일이 손상되었을 수 있습니다.</String>
-    <String Id="Error1330" Overridable="yes">캐비닛 파일 [2]의 디지털 서명이 올바르지 않기 때문에 필요한 파일을 설치할 수 없습니다. 캐비닛 파일이 손상되었을 수 있습니다.{{ WinVerifyTrust가 오류 [3]을(를) 반환했습니다.}}</String>
-    <String Id="Error1331" Overridable="yes">[2] 파일을 올바로 복사하지 못했습니다. CRC 오류입니다.</String>
-    <String Id="Error1332" Overridable="yes">[2] 파일을 올바로 이동하지 못했습니다. CRC 오류입니다.</String>
-    <String Id="Error1333" Overridable="yes">[2] 파일을 올바로 패치하지 못했습니다. CRC 오류입니다.</String>
-    <String Id="Error1334" Overridable="yes">캐비닛 파일 '[3]'에서 찾을 수 없어서 '[2]' 파일을 설치할 수 없습니다. 네트워크 오류이거나, CD-ROM에서 읽기 오류이거나, 이 패키지에 문제가 있을 수 있습니다.</String>
-    <String Id="Error1335" Overridable="yes">설치에 필요한 캐비닛 파일 '[2]'이(가) 손상되어 사용할 수 없습니다. 네트워크 오류이거나, CD-ROM에서 읽기 오류이거나, 이 패키지에 문제가 있을 수 있습니다.</String>
-    <String Id="Error1336" Overridable="yes">설치를 마치는데 필요한 임시 파일을 만드는 동안 오류가 발생했습니다.{{ 폴더: [3]. 시스템 오류 코드: [2]}}</String>
-    <String Id="Error1401" Overridable="yes">키 [2]을(를) 만들지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나, 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1402" Overridable="yes">키 [2]을(를) 열지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1403" Overridable="yes">키 [3]에서 값 [2]을(를) 삭제하지 못했습니다. {{ 시스템 오류 [4].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1404" Overridable="yes">키 [2]을(를) 삭제하지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1405" Overridable="yes">키 [3]에서 값 [2]을(를) 읽지 못했습니다. {{ 시스템 오류 [4].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1406" Overridable="yes">키 [3]에 값 [2]을(를) 쓰지 못했습니다. {{ 시스템 오류 [4].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1407" Overridable="yes">키 [2]의 값 이름을 가져오지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1408" Overridable="yes">키 [2]의 하위 키 이름을 가져오지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1409" Overridable="yes">키 [2]의 보안 정보를 읽지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1410" Overridable="yes">사용 가능한 레지스트리 공간을 늘리지 못했습니다. [2]KB 정도의 사용 가능한 레지스트리 공간이 있어야 응용 프로그램을 설치할 수 있습니다.</String>
-    <String Id="Error1500" Overridable="yes">다른 프로그램을 설치하고 있습니다. 그 프로그램의 설치를 끝낸 후 이 작업을 계속하십시오.</String>
-    <String Id="Error1501" Overridable="yes">보안 데이터에 액세스하는 동안 오류가 발생했습니다. Windows Installer 구성을 올바르게 설정했는지 확인하고 다시 설치하십시오.</String>
-    <String Id="Error1502" Overridable="yes">사용자 '[2]'이(가) 제품 '[3]'의 설치를 시작한 적이 있습니다. 이 사용자가 해당 제품을 사용하려면 설치 프로그램을 다시 실행해야 합니다. 귀하의 현재 설치는 계속됩니다.</String>
-    <String Id="Error1503" Overridable="yes">사용자 '[2]'이(가) 제품 '[3]'의 설치를 시작한 적이 있습니다. 이 사용자가 해당 제품을 사용하려면 설치 프로그램을 다시 실행해야 합니다. 귀하의 현재 설치는 계속됩니다.</String>
-    <String Id="Error1601" Overridable="yes">디스크 공간 부족 -- 볼륨: '[2]', 필요한 공간: [3]KB, 사용 가능한 공간: [4]KB. 디스크 공간을 늘린 후 다시 시도하십시오.</String>
-    <String Id="Error1602" Overridable="yes">취소하시겠습니까?</String>
-    <String Id="Error1603" Overridable="yes">파일 [2][3]을(를) 다른 프로세스{이름: [4], Id: [5], 창 제목: '[6]'}에서 사용 중입니다. 이 응용 프로그램을 닫은 후 다시 시도하십시오.</String>
-    <String Id="Error1604" Overridable="yes">제품 '[2]'이(가) 이미 설치되어 있어서 이 제품을 설치하지 못합니다. 두 개의 제품은 호환되지 않습니다.</String>
-    <String Id="Error1605" Overridable="yes">복구를 사용하여 설치를 계속하기에는 '[2]' 볼륨에 디스크 공간이 부족합니다. [3]KB가 필요하나, [4]KB만 사용 가능합니다. 복구 정보를 저장하지 않고 설치를 계속하려면 "무시"를 클릭하고, 사용 가능한 공간을 다시 확인하려면 "다시 시도"를 클릭하십시오. 설치를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="Error1606" Overridable="yes">네트워크 [2]에 액세스하지 못했습니다.</String>
-    <String Id="Error1607" Overridable="yes">설치를 계속하려면 다음 응용 프로그램을 닫아야 합니다:</String>
-    <String Id="Error1608" Overridable="yes">지금 설치하려는 제품의 이전 버전이 이 시스템에 설치되어 있지 않습니다.</String>
-    <String Id="Error1609" Overridable="yes">보안 설정을 적용하는 동안 오류가 발생했습니다. [2]은(는) 유효한 사용자 또는 그룹이 아닙니다. 패키지에 문제가 있거나, 네트워크의 도메인 컨트롤러에 연결하는데 문제가 있을 수 있습니다. 네트워크 연결을 확인하고 "다시 시도"를 클릭하거나, 설치를 마치려면 "취소"를 클릭하십시오. {{사용자 SID를 찾을 수 없습니다. 시스템 오류 [3]}}</String>
-    <String Id="Error1701" Overridable="yes">키 [2]이(가) 유효하지 않습니다. 정확한 키를 입력했는지 확인하십시오.</String>
-    <String Id="Error1702" Overridable="yes">[2]의 구성을 계속하려면 시스템을 다시 시작해야 합니다. 지금 다시 시작하려면 "예"를 클릭하고, 나중에 수동으로 다시 시작하려면 "아니요"를 클릭하십시오.</String>
-    <String Id="Error1703" Overridable="yes">변경된 구성 설정을 [2]에 적용하려면 시스템을 다시 시작해야 합니다. 지금 다시 시작하려면 "예"를 클릭하고, 나중에 수동으로 다시 시작하려면 "아니요"를 클릭하십시오.</String>
-    <String Id="Error1704" Overridable="yes">[2]의 설치가 현재 중지된 상태입니다. 작업을 계속하려면 설치하면서 변경된 내용을 취소해야 합니다. 변경된 내용을 취소하시겠습니까?</String>
-    <String Id="Error1705" Overridable="yes">이전에 실행한 이 제품의 설치 작업이 적용된 상태입니다. 계속하려면 그 때 변경된 내용을 취소해야 합니다. 변경된 내용을 취소하시겠습니까?</String>
-    <String Id="Error1706" Overridable="yes">제품 [2]의 설치 패키지가 없습니다. 설치 패키지 '[3]'의 올바른 설치 패키지 사본을 사용하여 설치를 다시 시도하십시오.</String>
-    <String Id="Error1707" Overridable="yes">설치가 완료되었습니다.</String>
-    <String Id="Error1708" Overridable="yes">설치하지 못했습니다.</String>
-    <String Id="Error1709" Overridable="yes">제품: [2] -- [3]</String>
-    <String Id="Error1710" Overridable="yes">컴퓨터를 이전 상태로 복원하거나 나중에 다시 설치해야 합니다. 복원하시겠습니까?</String>
-    <String Id="Error1711" Overridable="yes">설치 정보를 디스크에 쓰는 동안 오류가 발생했습니다. 디스크 공간이 충분한지 확인하고 "다시 시도"를 클릭하거나, "취소"를 클릭하여 설치를 끝내십시오.</String>
-    <String Id="Error1712" Overridable="yes">컴퓨터를 이전 상태로 복원하는 데 필요한 일부 파일을 찾지 못했습니다. 복원할 수 없습니다.</String>
-    <String Id="Error1713" Overridable="yes">[2]이(가) 필요한 제품 중 하나를 설치할 수 없습니다. 기술 지원 그룹에 문의하십시오. {{시스템 오류: [3].}}</String>
-    <String Id="Error1714" Overridable="yes">[2]의 이전 버전을 제거할 수 없습니다. 기술 지원 그룹에 문의하십시오. {{시스템 오류 [3].}}</String>
-    <String Id="Error1715" Overridable="yes">[2] 설치됨</String>
-    <String Id="Error1716" Overridable="yes">[2] 구성됨</String>
-    <String Id="Error1717" Overridable="yes">[2] 제거됨</String>
-    <String Id="Error1718" Overridable="yes">디지털 서명 정책이 파일 [2]을(를) 거부했습니다.</String>
-    <String Id="Error1719" Overridable="yes">Windows Installer Service를 액세스할 수 없습니다. Windows를 안전 모드에서 실행 중이거나, Windows Installer가 올바로 설치되지 않은 경우 발생할 수 있습니다. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1720" Overridable="yes">Windows Installer 패키지에 문제가 있습니다. 설치를 완료하기 위해 필요한 스크립트를 실행할 수 없습니다. 고객 지원 담당자나 패키지 공급업체에 문의하십시오. {{사용자 지정 작업 [2] 스크립트 오류 [3], [4]: [5] [6]행, [7]열, [8] }}</String>
-    <String Id="Error1721" Overridable="yes">Windows Installer 패키지에 문제가 있습니다. 설치를 완료하기 위해 필요한 프로그램을 실행할 수 없습니다. 고객 지원 담당자나 패키지 공급업체에 문의하십시오. {{작업: [2], 위치: [3], 명령: [4] }}</String>
-    <String Id="Error1722" Overridable="yes">Windows Installer 패키지에 문제가 있습니다. 설치 프로그램의 일부로 실행한 프로그램이 예상대로 완료되지 않았습니다. 고객 지원 담당자나 패키지 공급업체에 문의하십시오. {{작업: [2], 위치: [3], 명령: [4] }}</String>
-    <String Id="Error1723" Overridable="yes">Windows Installer 패키지에 문제가 있습니다. 설치를 완료하기 위해 필요한 DLL을 실행할 수 없습니다. 고객 지원 담당자나 패키지 공급업체에 문의하십시오. {{작업 [2], 항목: [3], 라이브러리: [4] }}</String>
-    <String Id="Error1724" Overridable="yes">제거가 완료되었습니다.</String>
-    <String Id="Error1725" Overridable="yes">제거하지 못했습니다.</String>
-    <String Id="Error1726" Overridable="yes">보급 알림이 완료되었습니다.</String>
-    <String Id="Error1727" Overridable="yes">보급 알림이 실패했습니다.</String>
-    <String Id="Error1728" Overridable="yes">구성이 완료되었습니다.</String>
-    <String Id="Error1729" Overridable="yes">구성하지 못했습니다.</String>
-    <String Id="Error1730" Overridable="yes">Administrator만이 이 응용 프로그램을 제거할 수 있습니다. 이 응용 프로그램을 제거하려면, Administrator로 로그온하거나, 기술 지원 그룹에 문의하십시오.</String>
-    <String Id="Error1731" Overridable="yes">제품 [2]의 원본 설치 패키지가 클라이언트 패키지와 동기화되지 않았습니다. 설치 패키지 '[3]'의 올바른 설치 패키지 사본을 사용하여 다시 설치해 보십시오.</String>
-    <String Id="Error1732" Overridable="yes">[2]의 설치를 완료하려면 컴퓨터를 다시 시작해야 합니다. 현재 다른 사용자가 이 컴퓨터에 로그온해 있을 경우 컴퓨터를 다시 시작하면 실행 중인 작업을 잃게 될 수 있습니다. 지금 컴퓨터를 다시 시작하시겠습니까?</String>
-    <String Id="Error1801" Overridable="yes">경로 [2]이(가) 올바르지 않습니다. 올바른 경로를 지정하십시오.</String>
-    <String Id="Error1802" Overridable="yes">메모리가 부족합니다. 다른 응용 프로그램을 종료한 후 다시 시도하십시오.</String>
-    <String Id="Error1803" Overridable="yes">드라이브 [2]에 디스크가 없습니다. 디스크를 넣은 후 "다시 시도"를 클릭하거나, "취소"를 클릭하여 이전에 선택한 볼륨으로 다시 돌아가십시오.</String>
-    <String Id="Error1804" Overridable="yes">드라이브 [2]에 디스크가 없습니다. 디스크를 넣은 후 "다시 시도"를 클릭하거나, "취소"를 클릭하여 "찾아보기" 대화 상자로 간 후 다른 볼륨을 선택하십시오.</String>
-    <String Id="Error1805" Overridable="yes">폴더 [2]이(가) 없습니다. 존재하는 폴더 경로를 입력하십시오.</String>
-    <String Id="Error1806" Overridable="yes">이 폴더를 읽을 수 있는 권한이 없습니다.</String>
-    <String Id="Error1807" Overridable="yes">설치할 대상 폴더를 결정하지 못했습니다.</String>
-    <String Id="Error1901" Overridable="yes">원본 설치 데이터베이스를 읽는 중에 오류 발생: [2].</String>
-    <String Id="Error1902" Overridable="yes">다시 부팅 작업을 예약하고 있습니다. [2] 파일의 이름을 [3](으)로 바꿉니다. 작업을 완료하려면 다시 부팅해야 합니다.</String>
-    <String Id="Error1903" Overridable="yes">다시 부팅 작업을 예약하고 있습니다. [2] 파일을 삭제합니다. 작업을 완료하려면 다시 부팅해야 합니다.</String>
-    <String Id="Error1904" Overridable="yes">모듈 [2]을(를) 등록하지 못했습니다. HRESULT [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1905" Overridable="yes">모듈 [2]의 등록을 취소하지 못했습니다. HRESULT [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1906" Overridable="yes">패키지 [2]을(를) 캐시하지 못했습니다. 오류: [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1907" Overridable="yes">글꼴 [2]을(를) 등록하지 못했습니다. 글꼴을 설치할 수 있는 권한이 충분한지, 그리고 이 글꼴을 시스템에서 지원하는지 확인하십시오.</String>
-    <String Id="Error1908" Overridable="yes">글꼴 [2]의 등록을 취소하지 못했습니다. 글꼴을 제거할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1909" Overridable="yes">바로 가기 [2]을(를) 만들지 못했습니다. 대상 폴더가 있는지, 그리고 그 폴더에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1910" Overridable="yes">바로 가기 [2]을(를) 제거하지 못했습니다. 바로 가기 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1911" Overridable="yes">파일 [2]의 형식 라이브러리를 등록하지 못했습니다. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1912" Overridable="yes">파일 [2]의 형식 라이브러리 등록을 취소하지 못했습니다. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1913" Overridable="yes">ini 파일 [2][3]을(를) 업데이트하지 못했습니다. 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1914" Overridable="yes">다시 부팅할 때 파일 [2]을(를) [3](으)로 바꾸도록 지정하지 못했습니다. 파일 [3]에 대한 쓰기 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1915" Overridable="yes">ODBC 드라이버 관리자를 제거하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1916" Overridable="yes">ODBC 드라이버 관리자를 설치하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1917" Overridable="yes">ODBC 드라이버 [4]을(를) 제거하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. ODBC 드라이버를 제거할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1918" Overridable="yes">ODBC 드라이버 [4]을(를) 설치하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. [4] 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1919" Overridable="yes">ODBC 데이터 원본 [4]을(를) 구성하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. [4] 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1920" Overridable="yes">서비스 '[2]' ([3])을(를) 시작하지 못했습니다. 시스템 서비스를 시작할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1921" Overridable="yes">서비스 '[2]' ([3])을(를) 중지하지 못했습니다. 시스템 서비스를 중지할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1922" Overridable="yes">서비스 '[2]' ([3])을(를) 삭제하지 못했습니다. 시스템 서비스를 제거할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1923" Overridable="yes">서비스 '[2]' ([3])을(를) 설치하지 못했습니다. 시스템 서비스를 설치할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1924" Overridable="yes">환경 변수 '[2]'을(를) 업데이트하지 못했습니다. 환경 변수를 수정할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1925" Overridable="yes">이 시스템의 모든 사용자가 사용하도록 제품을 설치할 권한이 없습니다. Administrator로 로그온한 후 다시 설치하십시오.</String>
-    <String Id="Error1926" Overridable="yes">파일 '[3]'에 대한 보안을 설정할 수 없습니다. 오류: [2]. 이 파일 보안을 수정할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1927" Overridable="yes">컴퓨터에 구성 요소 서비스(COM+ 1.0)가 설치되어 있지 않습니다. 설치를 제대로 마치려면 구성 요소 서비스가 필요합니다. 구성 요소 서비스는 Windows 2000에 있습니다.</String>
-    <String Id="Error1928" Overridable="yes">COM+ 응용 프로그램을 등록하는 동안 오류가 발생했습니다. 자세한 내용은 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1929" Overridable="yes">COM+ 응용 프로그램의 등록을 취소하는 동안 오류가 발생했습니다. 자세한 내용은 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1930" Overridable="yes">서비스 '[2]' ([3])의 설명을 변경할 수 없습니다.</String>
-    <String Id="Error1931" Overridable="yes">Windows가 파일을 보호하고 있기 때문에 Windows Installer 서비스가 시스템 파일 [2]을(를) 업데이트할 수 없습니다. 이 프로그램을 올바르게 작동시키려면 운영 체제를 업데이트해야 합니다. {{패키지 버전: [3], OS 보호된 버전: [4]}}</String>
-    <String Id="Error1932" Overridable="yes">Windows Installer 서비스가 보호된 Windows 파일 [2]을(를) 업데이트할 수 없습니다. {{패키지 버전: [3], OS 보호된 버전: [4], SFP 오류: [5]}}</String>
-    <String Id="Error1933" Overridable="yes">Windows Installer 서비스가 보호된 일부 Windows 파일을 업데이트할 수 없습니다. {{SFP 오류: [2]. 보호된 파일 목록:\r\n[3]}}</String>
-    <String Id="Error1934" Overridable="yes">컴퓨터의 정책에 의해 사용자 설치를 할 수 없습니다 .</String>
-    <String Id="Error1935" Overridable="yes">어셈블리'[6]'을(를) 설치하는 동안 오류가 발생했습니다. 자세한 내용은 도움말 및 지원을 참조하십시오. HRESULT: [3]. {{어셈블리 인터페이스: [4], 함수: [5], 구성 요소: [2]}}</String>
-    <String Id="Error1936" Overridable="yes">어셈블리'[6]'을(를) 설치하는 동안 오류가 발생했습니다. 강력한 이름의 어셈블리가 아니거나 최소 키 길이로 서명되지 않았습니다. HRESULT: [3]. {{어셈블리 인터페이스: [4], 함수: [5], 구성 요소: [2]}}</String>
-    <String Id="Error1937" Overridable="yes">어셈블리'[6]'을(를) 설치하는 동안 오류가 발생했습니다. 서명이나 카탈로그가 올바르지 않거나 확인할 수 없습니다. HRESULT: [3]. {{어셈블리 인터페이스: [4], 함수: [5], 구성 요소: [2]}}</String>
-    <String Id="Error1938" Overridable="yes">어셈블리'[6]'을(를) 설치하는 동안 오류가 발생했습니다. 하나 이상의 어셈블리 모듈을 찾을 수 없습니다. HRESULT: [3]. {{어셈블리 인터페이스: [4], 함수: [5], 구성 요소: [2]}}</String>
+    <String Id="Error11" Overridable="yes">E”ì‹œE€ E ú´E [1], E¸EE [2]</String>
+    <String Id="Error12" Overridable="yes">=== Eœê¹EEœìž‘: [Date] [Time] ===</String>
+    <String Id="Error13" Overridable="yes">=== Eœê¹EE‘지: [Date] [Time] ===</String>
+    <String Id="Error14" Overridable="yes">E‘ì—… Eœìž‘ [Time]: [1].</String>
+    <String Id="Error15" Overridable="yes">E‘ì—… EE[Time]: [1]. E˜í™˜ EE[2].</String>
+    <String Id="Error16" Overridable="yes">E¨E€ Eœê°E {[1]EE}{[2]EE</String>
+    <String Id="Error17" Overridable="yes">E”모E¬E€ E€E±ú±©Eˆë‹¤. E¤E¸ E‘ìš© ú°E¡œê·¸E¨EEEE£Œí•œ ú·EE¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error18" Overridable="yes">E¤EEE€E¬Eê°€ EEE´EEE‘답ú±˜ì§€ EŠìŠµEˆë‹¤.</String>
+    <String Id="Error19" Overridable="yes">E¤E˜ê°€ E‘단E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="Error20" Overridable="yes">[ProductName]EEE¼) E¬E±ú±˜ëŠ” E™ì•ˆ E EEE°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="Error21" Overridable="yes">ú±Eš”ú±EE•ë³´E¼ E¨E¼EEEE..</String>
+    <String Id="Error22" Overridable="yes">E´ E‘ìš© ú°E¡œê·¸E¨EEE´EEEE E„ Eœê±°ú±˜ëŠ” EE..</String>
+    <String Id="Error23" Overridable="yes">E´ E‘ìš© ú°E¡œê·¸E¨EEE´EEEE E„ Eœê±°ú±˜ê¸° EE•´ E€EE•˜EEEE..</String>
+    <String Id="Error32" Overridable="yes">{[ProductName] }E¤E˜ê°€ E±EµEEœ¼EEEE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error33" Overridable="yes">{[ProductName] }E¤E˜í•˜E€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1101" Overridable="yes">ú¨Œì¼ E½E° E¤EE [2]. {{ EœìŠ¤ú¡EE¤EE[3].}} ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1301" Overridable="yes">E™ì€ E´EE˜ E”렉터E¬E€ E´E¸ Eˆìœ¼E€EEú¨Œì¼ '[2]'EEE¼) EŒë“¤ EEEEŠµEˆë‹¤. E¤E˜ë¥¼ E¨EŒí•˜E  E¤E¸ EE¹˜ì— E¤EEE¤E˜í•´ E´E­Eœì˜¤.</String>
+    <String Id="Error1302" Overridable="yes">E¤EEE”스ú¬E¼ E£E¼E­Eœì˜¤. [2]</String>
+    <String Id="Error1303" Overridable="yes">E´ E”렉터E¬EEE¡E¸E¤ú±  EEEˆëŠ” EŒí•œE´ EEŠµEˆë‹¤: [2]. E¤E˜ë¥¼ EEEú±  EEEEŠµEˆë‹¤. AdministratorEEEœê·¸E¨ú±˜ê±°EEEœìŠ¤ú¡EE€E¬Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1304" Overridable="yes">ú¨Œì¼EEE°EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤: [2]. ú±´E¹ E”렉터E¬EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1305" Overridable="yes">ú¨Œì¼ E½E° E¤EE [2]. {{ EœìŠ¤ú¡EE¤EE[3].}} ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1306" Overridable="yes">E¤E¸ E‘ìš© ú°E¡œê·¸E¨EìE ú¨Œì¼ '[2]'EEE¼) E¨EEœ¼EEE¬E©ú±˜ê³  EˆìŠµEˆë‹¤. E¤E¸ E‘ìš© ú°E¡œê·¸E¨EEE¨EEE«E€ ú·E"E¤EEEœë„"E¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1307" Overridable="yes">E”스ú¬ EµEE´ E€E±ú±´EEE´ ú¨Œì¼EEE¤E˜í•  EEEEŠµEˆë‹¤: [2]. E”스ú¬ EµEE„ E˜ë¦° ú·E"E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE"E¨EEE¼ ú´E­ú±˜ì—¬ Eë‚´E­Eœì˜¤.</String>
+    <String Id="Error1308" Overridable="yes">Eë³¸ ú¨Œì¼E´ EEŠµEˆë‹¤: [2]. ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1309" Overridable="yes">ú¨Œì¼ E½E° E¤EE [3]. {{ EœìŠ¤ú¡EE¤EE[2].}} ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1310" Overridable="yes">ú¨Œì¼ E°E° E¤EE [3]. {{ EœìŠ¤ú¡EE¤EE[2].}} ú±´E¹ E”렉터E¬EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1311" Overridable="yes">Eë³¸ ú¨Œì¼E´ EEŠµEˆë‹¤{{(cabinet)}}: [2]. ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1312" Overridable="yes">E™ì€ E´EE˜ ú¨Œì¼E´ E´E¸ Eˆìœ¼E€EEE”렉터E¬ '[2]'EEE¼) EŒë“¤ EEEEŠµEˆë‹¤. ú¨Œì¼EEE´EE„ E”꾸E°EEú¨Œì¼EEEœê±°ú±Eú·E"E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE "E¨EEE¼ ú´E­ú±˜ì—¬ Eë‚´E­Eœì˜¤.</String>
+    <String Id="Error1313" Overridable="yes">E¼E¨ [2]EEE¼) ú´Ež¬ E¬E©ú±  EEEEŠµEˆë‹¤. E¤E¸ E¼E¨EEE úŸí•˜E­Eœì˜¤.</String>
+    <String Id="Error1314" Overridable="yes">E€E•í•œ E½EE'[2]'EEE¼) E¬E©ú±  EEEEŠµEˆë‹¤.</String>
+    <String Id="Error1315" Overridable="yes">E€E•í•œ ú«´EE[2]EEE¸ EEEEŠµEˆë‹¤.</String>
+    <String Id="Error1316" Overridable="yes">[2] ú¨Œì¼EEE½EEE™ì•ˆ E¤ú¦¸EŒí¬ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1317" Overridable="yes">[2] E”렉터E¬E¼ EŒë“œEEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1318" Overridable="yes">[2] E”렉터E¬E¼ EŒë“œEEE™ì•ˆ E¤ú¦¸EŒí¬ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1319" Overridable="yes">[2] Eë³¸ ú¨Œì¼ Eë¹E‹›EEE¬EEE™ì•ˆ E¤ú¦¸EŒí¬ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1320" Overridable="yes">E€E•í•œ E½EE[2]E´(E€) Eˆë¬´ EE‹ˆE¤.</String>
+    <String Id="Error1321" Overridable="yes">ú¨Œì¼ [2]EEE¼) E˜ì •í•  EEEˆëŠ” EŒí•œE´ EEŠµEˆë‹¤.</String>
+    <String Id="Error1322" Overridable="yes">ú«´EEE½EE'[2]'EEE¼E€E€ E¬E”르E€ EŠìŠµEˆë‹¤. EµE±E´E°EE EœìŠ¤ú¡œì—EEú³ˆìš©ú±˜ëŠ” E¸E´E¼ Eˆê³¼ú±©Eˆë‹¤.</String>
+    <String Id="Error1323" Overridable="yes">ú«´EEE½EE'[2]'EEú«´EEE½Eœì— E¬E©ú±  EEEEŠ” E¨E´E€ E¤E´ EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1324" Overridable="yes">ú«´EEE½EE'[2]'EEE¬E©ú±  EEEEŠ” E¸Eê°€ E¤E´ EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1325" Overridable="yes">'[2]'E€(EE E ú¶¨ú±EE½EEú¨Œì¼ E´EE´ EE‹™Eˆë‹¤.</String>
+    <String Id="Error1326" Overridable="yes">ú¨Œì¼ E´EEE¤EE [3] GetLastError: [2]</String>
+    <String Id="Error1327" Overridable="yes">E ú¶¨ú±˜ì§€ EŠì€ Eœë¼E´EE [2]</String>
+    <String Id="Error1328" Overridable="yes">ú¨Œì¼ [2]EEú¨¨E˜ë¥¼ EEš©ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. E¤E¸ E©E•ìœ¼EEEE°E´ú¦¸E˜ì–´, E´ ú¨¨E˜ë¥¼ ú¢µú±EE˜ì •ì´ Eˆê°€E¥ú±©Eˆë‹¤. EEEì„¸ú±EE•ë³´EEú¨¨EEEµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{EœìŠ¤ú¡EE¤EE [3]}}</String>
+    <String Id="Error1329" Overridable="yes">Eë¹E‹› ú¨Œì¼ [2]E´(E€) E”지ú ¸ EœëªE˜E´ Eˆì§€ EŠê¸° EŒë¬¸EEú±Eš”ú±Eú¨Œì¼EEE¤E˜í•  EEEEŠµEˆë‹¤. Eë¹E‹› ú¨Œì¼E´ EìƒE˜ì—ˆEEEEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1330" Overridable="yes">Eë¹E‹› ú¨Œì¼ [2]EEE”지ú ¸ EœëªE´ E¬E”르E€ EŠê¸° EŒë¬¸EEú±Eš”ú±Eú¨Œì¼EEE¤E˜í•  EEEEŠµEˆë‹¤. Eë¹E‹› ú¨Œì¼E´ EìƒE˜ì—ˆEEEEEˆìŠµEˆë‹¤.{{ WinVerifyTrustE€ E¤EE[3]EEE¼) E˜í™˜ú²ˆìŠµEˆë‹¤.}}</String>
+    <String Id="Error1331" Overridable="yes">[2] ú¨Œì¼EEE¬E”롁EEµE¬ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. CRC E¤E˜ìž…Eˆë‹¤.</String>
+    <String Id="Error1332" Overridable="yes">[2] ú¨Œì¼EEE¬E”롁EE´E™í•˜E€ E»ú²ˆìŠµEˆë‹¤. CRC E¤E˜ìž…Eˆë‹¤.</String>
+    <String Id="Error1333" Overridable="yes">[2] ú¨Œì¼EEE¬E”롁Eú¨¨E˜í•˜E€ E»ú²ˆìŠµEˆë‹¤. CRC E¤E˜ìž…Eˆë‹¤.</String>
+    <String Id="Error1334" Overridable="yes">Eë¹E‹› ú¨Œì¼ '[3]'EìE E¾EEEEEE–´EE'[2]' ú¨Œì¼EEE¤E˜í•  EEEEŠµEˆë‹¤. E¤ú¦¸EŒí¬ E¤E˜ì´E°EE CD-ROMEìE E½E° E¤E˜ì´E°EE E´ ú¨¨úž¤E€EEE¸Eœê°€ Eˆì„ EEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1335" Overridable="yes">E¤E˜ì— ú±Eš”ú±EEë¹E‹› ú¨Œì¼ '[2]'E´(E€) EìƒE˜ì–´ E¬E©ú±  EEEEŠµEˆë‹¤. E¤ú¦¸EŒí¬ E¤E˜ì´E°EE CD-ROMEìE E½E° E¤E˜ì´E°EE E´ ú¨¨úž¤E€EEE¸Eœê°€ Eˆì„ EEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1336" Overridable="yes">E¤E˜ë¥¼ Eˆì¹˜ëŠ”E° ú±Eš”ú±EEE‹œ ú¨Œì¼EEEŒë“œEEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.{{ ú«´EE [3]. EœìŠ¤ú¡EE¤EEE”ë“œ: [2]}}</String>
+    <String Id="Error1401" Overridable="yes">úž¤ [2]EEE¼) EŒë“¤E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EE E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1402" Overridable="yes">úž¤ [2]EEE¼) E´E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1403" Overridable="yes">úž¤ [3]EìE EE[2]EEE¼) E­Eœí•˜E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[4].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1404" Overridable="yes">úž¤ [2]EEE¼) E­Eœí•˜E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1405" Overridable="yes">úž¤ [3]EìE EE[2]EEE¼) E½E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[4].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1406" Overridable="yes">úž¤ [3]EEEE[2]EEE¼) E°E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[4].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1407" Overridable="yes">úž¤ [2]EEEEE´EE„ E€E¸E¤E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1408" Overridable="yes">úž¤ [2]EEú±˜ìœ„ úž¤ E´EE„ E€E¸E¤E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1409" Overridable="yes">úž¤ [2]EEE´EEE•ë³´E¼ E½E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1410" Overridable="yes">E¬E© E€E¥ú±EEˆì§€E¤ú¦¸E¬ EµEE„ E˜ë¦¬E€ E»ú²ˆìŠµEˆë‹¤. [2]KB E•ë„EEE¬E© E€E¥ú±EEˆì§€E¤ú¦¸E¬ EµEE´ Eˆì–´E¼ E‘ìš© ú°E¡œê·¸E¨EEE¤E˜í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1500" Overridable="yes">E¤E¸ ú°E¡œê·¸E¨EEE¤E˜í•˜E  EˆìŠµEˆë‹¤. E¸ ú°E¡œê·¸E¨EEE¤E˜ë¥¼ Eë‚¸ ú·EE´ E‘ì—…EEEEEú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1501" Overridable="yes">E´EEE°E´ú °EEE¡E¸E¤ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. Windows Installer E¬E±EEE¬E”르EEE¤E•í–ˆE”지 úµ•ì¸ú±˜ê³  E¤EEE¤E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1502" Overridable="yes">E¬E©EE'[2]'E´(E€) Eœí’ˆ '[3]'EEE¤E˜ë¥¼ Eœìž‘ú±EEE´ EˆìŠµEˆë‹¤. E´ E¬E©Eê°€ ú±´E¹ Eœí’ˆEEE¬E©ú±˜ë ¤E´ E¤EEú°E¡œê·¸E¨EEE¤EEE¤ú²‰í•´E¼ ú±©Eˆë‹¤. E€ú±˜ì˜ ú´Ež¬ E¤E˜ëŠ” EEEE©Eˆë‹¤.</String>
+    <String Id="Error1503" Overridable="yes">E¬E©EE'[2]'E´(E€) Eœí’ˆ '[3]'EEE¤E˜ë¥¼ Eœìž‘ú±EEE´ EˆìŠµEˆë‹¤. E´ E¬E©Eê°€ ú±´E¹ Eœí’ˆEEE¬E©ú±˜ë ¤E´ E¤EEú°E¡œê·¸E¨EEE¤EEE¤ú²‰í•´E¼ ú±©Eˆë‹¤. E€ú±˜ì˜ ú´Ež¬ E¤E˜ëŠ” EEEE©Eˆë‹¤.</String>
+    <String Id="Error1601" Overridable="yes">E”스ú¬ EµEEE€E± -- E¼E¨: '[2]', ú±Eš”ú±EEµEE [3]KB, E¬E© E€E¥ú±EEµEE [4]KB. E”스ú¬ EµEE„ E˜ë¦° ú·EE¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1602" Overridable="yes">E¨EŒí•˜Eœê² EµEˆê¹E</String>
+    <String Id="Error1603" Overridable="yes">ú¨Œì¼ [2][3]EEE¼) E¤E¸ ú°E¡œì„¸E¤{E´EE [4], Id: [5], E½ Eœëª©: '[6]'}EìE E¬E© E‘ìž…Eˆë‹¤. E´ E‘ìš© ú°E¡œê·¸E¨EEE«E€ ú·EE¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1604" Overridable="yes">Eœí’ˆ '[2]'E´(E€) E´E¸ E¤E˜ë˜E´ Eˆì–´EEE´ Eœí’ˆEEE¤E˜í•˜E€ E»ú±©Eˆë‹¤. EEEœì˜ Eœí’ˆE€ ú´¸úµ˜ë˜E€ EŠìŠµEˆë‹¤.</String>
+    <String Id="Error1605" Overridable="yes">EµE¬E¼ E¬E©ú±˜ì—¬ E¤E˜ë¥¼ EEEú±˜ê¸°EëŠ” '[2]' E¼E¨EEE”스ú¬ EµEE´ E€E±ú±©Eˆë‹¤. [3]KBE€ ú±Eš”ú±˜ë‚˜, [4]KBEEE¬E© E€E¥ú±©Eˆë‹¤. EµE¬ E•ë³´E¼ E€E¥ú±˜ì§€ EŠê³  E¤E˜ë¥¼ EEEú±˜ë ¤E´ "E´EEE¼ ú´E­ú±˜ê³ , E¬E© E€E¥ú±EEµEE„ E¤EEúµ•ì¸ú±˜ë ¤E´ "E¤EEEœë„"E¼ ú´E­ú±˜ì‹­Eœì˜¤. E¤E˜ë¥¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1606" Overridable="yes">E¤ú¦¸EŒí¬ [2]EEE¡E¸E¤ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1607" Overridable="yes">E¤E˜ë¥¼ EEEú±˜ë ¤E´ E¤EEE‘ìš© ú°E¡œê·¸E¨EEE«EE•¼ ú±©Eˆë‹¤:</String>
+    <String Id="Error1608" Overridable="yes">E€EEE¤E˜í•˜E¤EEEœí’ˆEEE´EEEE E´ E´ EœìŠ¤ú¡œì— E¤E˜ë˜E´ Eˆì§€ EŠìŠµEˆë‹¤.</String>
+    <String Id="Error1609" Overridable="yes">E´EEE¤E•ì„ EEš©ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. [2]E€(EE E ú¶¨ú±EE¬E©EEEëŠ” E¸E¹E´ EE‹™Eˆë‹¤. ú¨¨úž¤E€EEE¸Eœê°€ Eˆê±°EE E¤ú¦¸EŒí¬EEEE©”인 E¨ú¦¸E¤E¬EEE°E°ú±˜ëŠ”E° E¸Eœê°€ Eˆì„ EEEˆìŠµEˆë‹¤. E¤ú¦¸EŒí¬ E°E°EEúµ•ì¸ú±˜ê³  "E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE E¤E˜ë¥¼ Eˆì¹˜ë ¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤. {{E¬E©EESIDE¼ E¾EEEEEEŠµEˆë‹¤. EœìŠ¤ú¡EE¤EE[3]}}</String>
+    <String Id="Error1701" Overridable="yes">úž¤ [2]E´(E€) E ú¶¨ú±˜ì§€ EŠìŠµEˆë‹¤. E•í™•ú±Eúž¤E¼ EE ¥ú²ˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1702" Overridable="yes">[2]EEE¬E±EEEEEú±˜ë ¤E´ EœìŠ¤ú¡œì„ E¤EEEœìž‘ú±´E¼ ú±©Eˆë‹¤. E€EEE¤EEEœìž‘ú±˜ë ¤E´ "EEE¼ ú´E­ú±˜ê³ , E˜ì¤‘에 E˜ë™E¼EEE¤EEEœìž‘ú±˜ë ¤E´ "EE‹ˆEEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1703" Overridable="yes">E€E½EEE¬E± E¤E•ì„ [2]EEEEš©ú±˜ë ¤E´ EœìŠ¤ú¡œì„ E¤EEEœìž‘ú±´E¼ ú±©Eˆë‹¤. E€EEE¤EEEœìž‘ú±˜ë ¤E´ "EEE¼ ú´E­ú±˜ê³ , E˜ì¤‘에 E˜ë™E¼EEE¤EEEœìž‘ú±˜ë ¤E´ "EE‹ˆEEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1704" Overridable="yes">[2]EEE¤E˜ê°€ ú´Ež¬ E‘지EEEEEEE‹ˆE¤. E‘ì—…EEEEEú±˜ë ¤E´ E¤E˜í•˜E´EEE€E½EEE´E©EEE¨EŒí•´E¼ ú±©Eˆë‹¤. E€E½EEE´E©EEE¨EŒí•˜Eœê² EµEˆê¹E</String>
+    <String Id="Error1705" Overridable="yes">E´EE— E¤ú²‰í•œ E´ Eœí’ˆEEE¤EEE‘ì—…E´ EEš©EEEEEEE‹ˆE¤. EEEú±˜ë ¤E´ E¸ EEE€E½EEE´E©EEE¨EŒí•´E¼ ú±©Eˆë‹¤. E€E½EEE´E©EEE¨EŒí•˜Eœê² EµEˆê¹E</String>
+    <String Id="Error1706" Overridable="yes">Eœí’ˆ [2]EEE¤EEú¨¨úž¤E€E€ EEŠµEˆë‹¤. E¤EEú¨¨úž¤E€ '[3]'EEE¬E”른 E¤EEú¨¨úž¤E€ E¬E¸EEE¬E©ú±˜ì—¬ E¤E˜ë¥¼ E¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1707" Overridable="yes">E¤E˜ê°€ EE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1708" Overridable="yes">E¤E˜í•˜E€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1709" Overridable="yes">Eœí’ˆ: [2] -- [3]</String>
+    <String Id="Error1710" Overridable="yes">E´ú¯¨ú °E¼ E´EEEEEEEEµEí•˜E°EEE˜ì¤‘에 E¤EEE¤E˜í•´E¼ ú±©Eˆë‹¤. EµEí•˜Eœê² EµEˆê¹E</String>
+    <String Id="Error1711" Overridable="yes">E¤EEE•ë³´E¼ E”스ú¬EEE°EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. E”스ú¬ EµEE´ E©EE•œE€ úµ•ì¸ú±˜ê³  "E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE "E¨EEE¼ ú´E­ú±˜ì—¬ E¤E˜ë¥¼ Eë‚´E­Eœì˜¤.</String>
+    <String Id="Error1712" Overridable="yes">E´ú¯¨ú °E¼ E´EEEEEEEEµEí•˜EEE° ú±Eš”ú±EE¼E€ ú¨Œì¼EEE¾E€ E»ú²ˆìŠµEˆë‹¤. EµEí•  EEEEŠµEˆë‹¤.</String>
+    <String Id="Error1713" Overridable="yes">[2]E´(E€) ú±Eš”ú±EEœí’ˆ EEú±˜ë‚˜E¼ E¤E˜í•  EEEEŠµEˆë‹¤. E°E  E€EEE¸E¹EEE¸E˜í•˜E­Eœì˜¤. {{EœìŠ¤ú¡EE¤EE [3].}}</String>
+    <String Id="Error1714" Overridable="yes">[2]EEE´EEEE E„ Eœê±°ú±  EEEEŠµEˆë‹¤. E°E  E€EEE¸E¹EEE¸E˜í•˜E­Eœì˜¤. {{EœìŠ¤ú¡EE¤EE[3].}}</String>
+    <String Id="Error1715" Overridable="yes">[2] E¤E˜ë¨</String>
+    <String Id="Error1716" Overridable="yes">[2] E¬E±E¨</String>
+    <String Id="Error1717" Overridable="yes">[2] Eœê±°E¨</String>
+    <String Id="Error1718" Overridable="yes">E”지ú ¸ EœëªEE•ì±E´ ú¨Œì¼ [2]EEE¼) E°E€ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1719" Overridable="yes">Windows Installer ServiceE¼ E¡E¸E¤ú±  EEEEŠµEˆë‹¤. WindowsE¼ Eˆì EE¨Eœì—EEE¤ú²EE‘이E°EE Windows InstallerE€ E¬E”롁EE¤E˜ë˜E€ EŠì€ E½E° EœìEú±  EEEˆìŠµEˆë‹¤. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1720" Overridable="yes">Windows Installer ú¨¨úž¤E€EEE¸Eœê°€ EˆìŠµEˆë‹¤. E¤E˜ë¥¼ EE£Œí•˜E° EE•´ ú±Eš”ú±EE¤ú¬E½ú¦¸E¼ E¤ú²‰í•  EEEEŠµEˆë‹¤. E EEE€EEE´E¹Eë‚˜ ú¨¨úž¤E€ EµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{E¬E©EEE€EEE‘ì—… [2] E¤ú¬E½ú¦¸ E¤EE[3], [4]: [5] [6]ú²E [7]E´, [8] }}</String>
+    <String Id="Error1721" Overridable="yes">Windows Installer ú¨¨úž¤E€EEE¸Eœê°€ EˆìŠµEˆë‹¤. E¤E˜ë¥¼ EE£Œí•˜E° EE•´ ú±Eš”ú±Eú°E¡œê·¸E¨EEE¤ú²‰í•  EEEEŠµEˆë‹¤. E EEE€EEE´E¹Eë‚˜ ú¨¨úž¤E€ EµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{E‘ì—…: [2], EE¹E [3], EE ¹: [4] }}</String>
+    <String Id="Error1722" Overridable="yes">Windows Installer ú¨¨úž¤E€EEE¸Eœê°€ EˆìŠµEˆë‹¤. E¤EEú°E¡œê·¸E¨EEE¼E€EEE¤ú²‰í•œ ú°E¡œê·¸E¨E´ EˆìƒE€EEEE£Œë˜E€ EŠì•˜EµEˆë‹¤. E EEE€EEE´E¹Eë‚˜ ú¨¨úž¤E€ EµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{E‘ì—…: [2], EE¹E [3], EE ¹: [4] }}</String>
+    <String Id="Error1723" Overridable="yes">Windows Installer ú¨¨úž¤E€EEE¸Eœê°€ EˆìŠµEˆë‹¤. E¤E˜ë¥¼ EE£Œí•˜E° EE•´ ú±Eš”ú±EDLLEEE¤ú²‰í•  EEEEŠµEˆë‹¤. E EEE€EEE´E¹Eë‚˜ ú¨¨úž¤E€ EµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{E‘ì—… [2], ú±­E©: [3], E¼E´EŒëŸ¬E¬: [4] }}</String>
+    <String Id="Error1724" Overridable="yes">Eœê±°E€ EE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1725" Overridable="yes">Eœê±°ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1726" Overridable="yes">E´EEEŒë¦¼E´ EE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1727" Overridable="yes">E´EEEŒë¦¼E´ E¤ú¨¨ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1728" Overridable="yes">E¬E±E´ EE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1729" Overridable="yes">E¬E±ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1730" Overridable="yes">AdministratorEŒì´ E´ E‘ìš© ú°E¡œê·¸E¨EEEœê±°ú±  EEEˆìŠµEˆë‹¤. E´ E‘ìš© ú°E¡œê·¸E¨EEEœê±°ú±˜ë ¤E´, AdministratorEEEœê·¸E¨ú±˜ê±°EE E°E  E€EEE¸E¹EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1731" Overridable="yes">Eœí’ˆ [2]EEEë³¸ E¤EEú¨¨úž¤E€E€ ú´E¼E´E¸ú¦¸ ú¨¨úž¤E€E€ E™ê¸°úµ”되E€ EŠì•˜EµEˆë‹¤. E¤EEú¨¨úž¤E€ '[3]'EEE¬E”른 E¤EEú¨¨úž¤E€ E¬E¸EEE¬E©ú±˜ì—¬ E¤EEE¤E˜í•´ E´E­Eœì˜¤.</String>
+    <String Id="Error1732" Overridable="yes">[2]EEE¤E˜ë¥¼ EE£Œí•˜E¤E´ E´ú¯¨ú °E¼ E¤EEEœìž‘ú±´E¼ ú±©Eˆë‹¤. ú´Ež¬ E¤E¸ E¬E©Eê°€ E´ E´ú¯¨ú °EEEœê·¸E¨ú±´ Eˆì„ E½E° E´ú¯¨ú °E¼ E¤EEEœìž‘ú±˜ë©´ E¤ú²EE‘인 E‘ì—…EEEE²EE  EEEˆìŠµEˆë‹¤. E€EEE´ú¯¨ú °E¼ E¤EEEœìž‘ú±˜ì‹œE EµEˆê¹E</String>
+    <String Id="Error1801" Overridable="yes">E½EE[2]E´(E€) E¬E”르E€ EŠìŠµEˆë‹¤. E¬E”른 E½Eœë¥¼ E€E•í•˜E­Eœì˜¤.</String>
+    <String Id="Error1802" Overridable="yes">E”모E¬E€ E€E±ú±©Eˆë‹¤. E¤E¸ E‘ìš© ú°E¡œê·¸E¨EEEE£Œí•œ ú·EE¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1803" Overridable="yes">Eœë¼E´EE[2]EEE”스ú¬E€ EEŠµEˆë‹¤. E”스ú¬E¼ E£E€ ú·E"E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE "E¨EEE¼ ú´E­ú±˜ì—¬ E´EE— E úŸí•œ E¼E¨E¼EEE¤EEEŒì•„E€E­Eœì˜¤.</String>
+    <String Id="Error1804" Overridable="yes">Eœë¼E´EE[2]EEE”스ú¬E€ EEŠµEˆë‹¤. E”스ú¬E¼ E£E€ ú·E"E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE "E¨EEE¼ ú´E­ú±˜ì—¬ "E¾EE³´E°" E€úµEEEžEEEEú·EE¤E¸ E¼E¨EEE úŸí•˜E­Eœì˜¤.</String>
+    <String Id="Error1805" Overridable="yes">ú«´EE[2]E´(E€) EEŠµEˆë‹¤. E´E¬ú±˜ëŠ” ú«´EEE½Eœë¥¼ EE ¥ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1806" Overridable="yes">E´ ú«´E”를 E½EEEEEˆëŠ” EŒí•œE´ EEŠµEˆë‹¤.</String>
+    <String Id="Error1807" Overridable="yes">E¤E˜í•  E€EEú«´E”를 E°E•í•˜E€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1901" Overridable="yes">Eë³¸ E¤EEE°E´ú °E E´E¤E¼ E½EEE‘에 E¤EEEœìE: [2].</String>
+    <String Id="Error1902" Overridable="yes">E¤EEE€ú¨EE‘ì—…EEEˆì•½ú±˜ê³  EˆìŠµEˆë‹¤. [2] ú¨Œì¼EEE´EE„ [3](E¼)EEE”꿉니E¤. E‘ì—…EEEE£Œí•˜E¤E´ E¤EEE€ú¨E•´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="Error1903" Overridable="yes">E¤EEE€ú¨EE‘ì—…EEEˆì•½ú±˜ê³  EˆìŠµEˆë‹¤. [2] ú¨Œì¼EEE­Eœí•©Eˆë‹¤. E‘ì—…EEEE£Œí•˜E¤E´ E¤EEE€ú¨E•´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="Error1904" Overridable="yes">E¨EE[2]EEE¼) E±Eí•˜E€ E»ú²ˆìŠµEˆë‹¤. HRESULT [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1905" Overridable="yes">E¨EE[2]EEE±Eì„ E¨EŒí•˜E€ E»ú²ˆìŠµEˆë‹¤. HRESULT [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1906" Overridable="yes">ú¨¨úž¤E€ [2]EEE¼) Eì‹œú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. E¤EE [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1907" Overridable="yes">E€E´ [2]EEE¼) E±Eí•˜E€ E»ú²ˆìŠµEˆë‹¤. E€E´EEE¤E˜í•  EEEˆëŠ” EŒí•œE´ E©EE•œE€, E¸E¬E  E´ E€E´EEEœìŠ¤ú¡œì—EEE€Eí•˜E”지 úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1908" Overridable="yes">E€E´ [2]EEE±Eì„ E¨EŒí•˜E€ E»ú²ˆìŠµEˆë‹¤. E€E´EEEœê±°ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1909" Overridable="yes">E”롁EE€E° [2]EEE¼) EŒë“¤E€ E»ú²ˆìŠµEˆë‹¤. E€EEú«´E”ê°€ EˆëŠ”E€, E¸E¬E  E¸ ú«´E”에 E¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1910" Overridable="yes">E”롁EE€E° [2]EEE¼) Eœê±°ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. E”롁EE€E° ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1911" Overridable="yes">ú¨Œì¼ [2]EEú´•ì‹ E¼E´EŒëŸ¬E¬E¼ E±Eí•˜E€ E»ú²ˆìŠµEˆë‹¤. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1912" Overridable="yes">ú¨Œì¼ [2]EEú´•ì‹ E¼E´EŒëŸ¬E¬ E±Eì„ E¨EŒí•˜E€ E»ú²ˆìŠµEˆë‹¤. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1913" Overridable="yes">ini ú¨Œì¼ [2][3]EEE¼) EE°E´ú¦¸ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1914" Overridable="yes">E¤EEE€ú¨E•  EEú¨Œì¼ [2]EEE¼) [3](E¼)EEE”꾸EE¡EE€E•í•˜E€ E»ú²ˆìŠµEˆë‹¤. ú¨Œì¼ [3]EEE€ú±EE°E° EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1915" Overridable="yes">ODBC Eœë¼E´EEE€E¬Eë¥¼ Eœê±°ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1916" Overridable="yes">ODBC Eœë¼E´EEE€E¬Eë¥¼ E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1917" Overridable="yes">ODBC Eœë¼E´EE[4]EEE¼) Eœê±°ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. ODBC Eœë¼E´EE¥¼ Eœê±°ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1918" Overridable="yes">ODBC Eœë¼E´EE[4]EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. [4] ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1919" Overridable="yes">ODBC E°E´ú ° Eë³¸ [4]EEE¼) E¬E±ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. [4] ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1920" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¼) Eœìž‘ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. EœìŠ¤ú¡EEœë¹EŠ¤E¼ Eœìž‘ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1921" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¼) E‘지ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. EœìŠ¤ú¡EEœë¹EŠ¤E¼ E‘지ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1922" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¼) E­Eœí•˜E€ E»ú²ˆìŠµEˆë‹¤. EœìŠ¤ú¡EEœë¹EŠ¤E¼ Eœê±°ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1923" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¼) E¤E˜í•˜E€ E»ú²ˆìŠµEˆë‹¤. EœìŠ¤ú¡EEœë¹EŠ¤E¼ E¤E˜í•  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1924" Overridable="yes">úµ˜ê²½ E€EE'[2]'EEE¼) EE°E´ú¦¸ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. úµ˜ê²½ E€E˜ë¥¼ E˜ì •í•  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1925" Overridable="yes">E´ EœìŠ¤ú¡œì˜ E¨E  E¬E©Eê°€ E¬E©ú±˜ë„EEEœí’ˆEEE¤E˜í•  EŒí•œE´ EEŠµEˆë‹¤. AdministratorEEEœê·¸E¨ú±Eú·EE¤EEE¤E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1926" Overridable="yes">ú¨Œì¼ '[3]'EEE€ú±EE´Eˆì„ E¤E•í•  EEEEŠµEˆë‹¤. E¤EE [2]. E´ ú¨Œì¼ E´Eˆì„ E˜ì •í•  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1927" Overridable="yes">E´ú¯¨ú °EEE¬E± E”ìE Eœë¹EŠ¤(COM+ 1.0)E€ E¤E˜ë˜E´ Eˆì§€ EŠìŠµEˆë‹¤. E¤E˜ë¥¼ EœëŒ€EEEˆì¹˜ë ¤E´ E¬E± E”ìE Eœë¹EŠ¤E€ ú±Eš”ú±©Eˆë‹¤. E¬E± E”ìE Eœë¹EŠ¤EEWindows 2000EEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1928" Overridable="yes">COM+ E‘ìš© ú°E¡œê·¸E¨EEE±Eí•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. Eì„¸ú±EE´E©E€ E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1929" Overridable="yes">COM+ E‘ìš© ú°E¡œê·¸E¨EEE±Eì„ E¨EŒí•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. Eì„¸ú±EE´E©E€ E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1930" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¤EE„ E€E½ú±  EEEEŠµEˆë‹¤.</String>
+    <String Id="Error1931" Overridable="yes">WindowsE€ ú¨Œì¼EEE´ú´¸ú±˜ê³  Eˆê¸° EŒë¬¸EEWindows Installer Eœë¹EŠ¤E€ EœìŠ¤ú¡Eú¨Œì¼ [2]EEE¼) EE°E´ú¦¸ú±  EEEEŠµEˆë‹¤. E´ ú°E¡œê·¸E¨EEE¬E”르EEE‘동Eœí‚¤E¤E´ E´EEE´Eœë¥¼ EE°E´ú¦¸ú±´E¼ ú±©Eˆë‹¤. {{ú¨¨úž¤E€ EE E [3], OS E´ú´¸EEEE E [4]}}</String>
+    <String Id="Error1932" Overridable="yes">Windows Installer Eœë¹EŠ¤E€ E´ú´¸EEWindows ú¨Œì¼ [2]EEE¼) EE°E´ú¦¸ú±  EEEEŠµEˆë‹¤. {{ú¨¨úž¤E€ EE E [3], OS E´ú´¸EEEE E [4], SFP E¤EE [5]}}</String>
+    <String Id="Error1933" Overridable="yes">Windows Installer Eœë¹EŠ¤E€ E´ú´¸EEE¼E€ Windows ú¨Œì¼EEEE°E´ú¦¸ú±  EEEEŠµEˆë‹¤. {{SFP E¤EE [2]. E´ú´¸EEú¨Œì¼ E©EE\r\n[3]}}</String>
+    <String Id="Error1934" Overridable="yes">E´ú¯¨ú °EEE•ì±E— E˜í•´ E¬E©EEE¤E˜ë¥¼ ú±  EEEEŠµEˆë‹¤ .</String>
+    <String Id="Error1935" Overridable="yes">E´Eˆë¸”리'[6]'EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. Eì„¸ú±EE´E©E€ EE›€EEEEE€Eì„ E¸E°ú±˜ì‹­Eœì˜¤. HRESULT: [3]. {{E´Eˆë¸”리 E¸ú °úª˜ì´E¤: [4], ú±¨EE [5], E¬E± E”ìE: [2]}}</String>
+    <String Id="Error1936" Overridable="yes">E´Eˆë¸”리'[6]'EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. E•ë ¥ú±EE´EE˜ E´Eˆë¸”리E€ EE‹ˆE°EEEœìE úž¤ E¸E´EEEœëªE˜E€ EŠì•˜EµEˆë‹¤. HRESULT: [3]. {{E´Eˆë¸”리 E¸ú °úª˜ì´E¤: [4], ú±¨EE [5], E¬E± E”ìE: [2]}}</String>
+    <String Id="Error1937" Overridable="yes">E´Eˆë¸”리'[6]'EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. EœëªE´EEE´úŸˆë¡œê·¸E€ E¬E”르E€ EŠê±°EEúµ•ì¸ú±  EEEEŠµEˆë‹¤. HRESULT: [3]. {{E´Eˆë¸”리 E¸ú °úª˜ì´E¤: [4], ú±¨EE [5], E¬E± E”ìE: [2]}}</String>
+    <String Id="Error1938" Overridable="yes">E´Eˆë¸”리'[6]'EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ú±˜ë‚˜ E´EE˜ E´Eˆë¸”리 E¨Eˆì„ E¾EEEEEEŠµEˆë‹¤. HRESULT: [3]. {{E´Eˆë¸”리 E¸ú °úª˜ì´E¤: [4], ú±¨EE [5], E¬E± E”ìE: [2]}}</String>
     
-    <String Id="UITextbytes" Overridable="yes">바이트</String>
+    <String Id="UITextbytes" Overridable="yes">E”이ú¦¸</String>
     <String Id="UITextGB" Overridable="yes">GB</String>
     <String Id="UITextKB" Overridable="yes">KB</String>
     <String Id="UITextMB" Overridable="yes">MB</String>
-    <String Id="UITextMenuAbsent" Overridable="yes">모든 기능을 사용할 수 없음</String>
-    <String Id="UITextMenuAdvertise" Overridable="yes">필요할 때 기능을 설치</String>
-    <String Id="UITextMenuAllCD" Overridable="yes">모든 기능이 CD에서 실행되도록 설치</String>
-    <String Id="UITextMenuAllLocal" Overridable="yes">모든 기능이 로컬 하드 드라이브에 설치</String>
-    <String Id="UITextMenuAllNetwork" Overridable="yes">모든 기능이 네트워크에서 실행되도록 설치</String>
-    <String Id="UITextMenuCD" Overridable="yes">CD에서 실행되도록 설치</String>
-    <String Id="UITextMenuLocal" Overridable="yes">로컬 하드 드라이브에 설치</String>
-    <String Id="UITextMenuNetwork" Overridable="yes">네트워크에서 실행되도록 설치</String>
-    <String Id="UITextNewFolder" Overridable="yes">Folder|한 수준 위로</String>
-    <String Id="UITextScriptInProgress" Overridable="yes">필요한 정보를 모으는 중...</String>
-    <String Id="UITextSelAbsentAbsent" Overridable="yes">이 기능은 설치되지 않습니다.</String>
-    <String Id="UITextSelAbsentAdvertise" Overridable="yes">필요할 때 이 기능을 설치하도록 설정할 수 있습니다.</String>
-    <String Id="UITextSelAbsentCD" Overridable="yes">이 기능은 CD에서 실행되도록 설치됩니다.</String>
-    <String Id="UITextSelAbsentLocal" Overridable="yes">이 기능은 로컬 하드 드라이브에 설치됩니다.</String>
-    <String Id="UITextSelAbsentNetwork" Overridable="yes">이 기능은 네트워크에서 실행되도록 설치됩니다.</String>
-    <String Id="UITextSelAdvertiseAbsent" Overridable="yes">이 기능을 사용할 수 없게 됩니다.</String>
-    <String Id="UITextSelAdvertiseAdvertise" Overridable="yes">필요할 때 설치</String>
-    <String Id="UITextSelAdvertiseCD" Overridable="yes">이 기능은 CD에서 실행할 수 있습니다.</String>
-    <String Id="UITextSelAdvertiseLocal" Overridable="yes">이 기능은 로컬 하드 드라이브에 설치됩니다.</String>
-    <String Id="UITextSelAdvertiseNetwork" Overridable="yes">이 기능은 네트워크에서 실행할 수 있습니다.</String>
-    <String Id="UITextSelCDAbsent" Overridable="yes">이 기능은 완전히 제거됩니다. CD에서 실행할 수 없습니다.</String>
-    <String Id="UITextSelCDAdvertise" Overridable="yes">이 기능은 CD에서 실행되던 상태에서 필요할 때 설치되는 것으로 변경됩니다.</String>
-    <String Id="UITextSelCDCD" Overridable="yes">이 기능은 그대로 CD에서 실행됩니다.</String>
-    <String Id="UITextSelCDLocal" Overridable="yes">이 기능은 CD에서 실행되던 상태에서 로컬 하드 드라이브에 설치되는 것으로 변경됩니다.</String>
-    <String Id="UITextSelChildCostNeg" Overridable="yes">이 기능은 하드 드라이브에서 [1]의 공간을 만듭니다.</String>
-    <String Id="UITextSelChildCostPos" Overridable="yes">이 기능을 실행하려면 하드 드라이브에 [1]이(가) 있어야 합니다.</String>
-    <String Id="UITextSelCostPending" Overridable="yes">이 기능에 대한 공간을 컴파일하는 중...</String>
-    <String Id="UITextSelLocalAbsent" Overridable="yes">이 기능은 완전히 제거됩니다.</String>
-    <String Id="UITextSelLocalAdvertise" Overridable="yes">이 기능은 로컬 하드 드라이브에서 제거되지만 필요할 때 설치하도록 설정할 수 있습니다.</String>
-    <String Id="UITextSelLocalCD" Overridable="yes">이 기능은 로컬 하드 드라이브에서 제거되지만 CD에서는 실행할 수 있습니다.</String>
-    <String Id="UITextSelLocalLocal" Overridable="yes">이 기능은 로컬 하드 드라이브에 그대로 남아 있게 됩니다.</String>
-    <String Id="UITextSelLocalNetwork" Overridable="yes">이 기능은 로컬 하드 드라이브에서 제거되지만 네트워크에서 실행할 수 있습니다.</String>
-    <String Id="UITextSelNetworkAbsent" Overridable="yes">이 기능은 완전히 제거됩니다. 네트워크에서 실행할 수 없게 됩니다.</String>
-    <String Id="UITextSelNetworkAdvertise" Overridable="yes">이 기능은 네트워크에서 실행되던 상태에서 필요할 때 설치되는 것으로 변경됩니다.</String>
-    <String Id="UITextSelNetworkLocal" Overridable="yes">이 기능은 네트워크에서 실행되던 상태에서 로컬 하드 드라이브에 설치되는 것으로 변경됩니다.</String>
-    <String Id="UITextSelNetworkNetwork" Overridable="yes">이 기능은 그대로 네트워크에서 실행됩니다.</String>
-    <String Id="UITextSelParentCostNegNeg" Overridable="yes">이 기능은 하드 드라이브에서 [1]의 공간을 만듭니다. [3]개의 하위 기능 중 [2]개가 선택되었습니다. 하위 기능은 하드 드라이브에서 [4]의 공간을 만듭니다.</String>
-    <String Id="UITextSelParentCostNegPos" Overridable="yes">이 기능은 하드 드라이브에서 [1]의 공간을 만듭니다. [3]개의 하위 기능 중 [2]개가 선택되었습니다. 하위 기능을 사용하려면 하드 드라이브에 [4]이(가) 있어야 합니다.</String>
-    <String Id="UITextSelParentCostPosNeg" Overridable="yes">이 기능을 사용하려면 하드 드라이브에 [1]이(가) 있어야 합니다. [3]개의 하위 기능 중 [2]개가 선택되었습니다. 하위 기능은 하드 드라이브에서 [4]의 공간을 만듭니다.</String>
-    <String Id="UITextSelParentCostPosPos" Overridable="yes">이 기능을 사용하려면 하드 드라이브에 [1]이(가) 있어야 합니다. [3]개의 하위 기능 중 [2]개가 선택되었습니다. 하위 기능을 사용하려면 하드 드라이브에 [4]이(가) 있어야 합니다.</String>
-    <String Id="UITextTimeRemaining" Overridable="yes">남은 시간: {[1]분 }{[2]초}</String>
-    <String Id="UITextVolumeCostAvailable" Overridable="yes">사용 가능</String>
-    <String Id="UITextVolumeCostDifference" Overridable="yes">차이</String>
-    <String Id="UITextVolumeCostRequired" Overridable="yes">í•„ìš”</String>
-    <String Id="UITextVolumeCostSize" Overridable="yes">디스크 크기</String>
-    <String Id="UITextVolumeCostVolume" Overridable="yes">覲朱エ</String>
+    <String Id="UITextMenuAbsent" Overridable="yes">E¨E  E°E¥EEE¬E©ú±  EEEEŒ</String>
+    <String Id="UITextMenuAdvertise" Overridable="yes">ú±Eš”ú±  EEE°E¥EEE¤EE/String>
+    <String Id="UITextMenuAllCD" Overridable="yes">E¨E  E°E¥E´ CDEìE E¤ú²‰ë˜EE¡EE¤EE/String>
+    <String Id="UITextMenuAllLocal" Overridable="yes">E¨E  E°E¥E´ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤EE/String>
+    <String Id="UITextMenuAllNetwork" Overridable="yes">E¨E  E°E¥E´ E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EE¡EE¤EE/String>
+    <String Id="UITextMenuCD" Overridable="yes">CDEìE E¤ú²‰ë˜EE¡EE¤EE/String>
+    <String Id="UITextMenuLocal" Overridable="yes">Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤EE/String>
+    <String Id="UITextMenuNetwork" Overridable="yes">E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EE¡EE¤EE/String>
+    <String Id="UITextNewFolder" Overridable="yes">Folder|ú±EE˜ì¤€ EE¡E/String>
+    <String Id="UITextScriptInProgress" Overridable="yes">ú±Eš”ú±EE•ë³´E¼ E¨E¼EEEE..</String>
+    <String Id="UITextSelAbsentAbsent" Overridable="yes">E´ E°E¥E€ E¤E˜ë˜E€ EŠìŠµEˆë‹¤.</String>
+    <String Id="UITextSelAbsentAdvertise" Overridable="yes">ú±Eš”ú±  EEE´ E°E¥EEE¤E˜í•˜EE¡EE¤E•í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelAbsentCD" Overridable="yes">E´ E°E¥E€ CDEìE E¤ú²‰ë˜EE¡EE¤E˜ë©Eˆë‹¤.</String>
+    <String Id="UITextSelAbsentLocal" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤E˜ë©Eˆë‹¤.</String>
+    <String Id="UITextSelAbsentNetwork" Overridable="yes">E´ E°E¥E€ E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EE¡EE¤E˜ë©Eˆë‹¤.</String>
+    <String Id="UITextSelAdvertiseAbsent" Overridable="yes">E´ E°E¥EEE¬E©ú±  EEEE²EE©Eˆë‹¤.</String>
+    <String Id="UITextSelAdvertiseAdvertise" Overridable="yes">ú±Eš”ú±  EEE¤EE/String>
+    <String Id="UITextSelAdvertiseCD" Overridable="yes">E´ E°E¥E€ CDEìE E¤ú²‰í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelAdvertiseLocal" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤E˜ë©Eˆë‹¤.</String>
+    <String Id="UITextSelAdvertiseNetwork" Overridable="yes">E´ E°E¥E€ E¤ú¦¸EŒí¬EìE E¤ú²‰í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelCDAbsent" Overridable="yes">E´ E°E¥E€ EE Ežˆ Eœê±°E©Eˆë‹¤. CDEìE E¤ú²‰í•  EEEEŠµEˆë‹¤.</String>
+    <String Id="UITextSelCDAdvertise" Overridable="yes">E´ E°E¥E€ CDEìE E¤ú²‰ë˜EEEEEEìE ú±Eš”ú±  EEE¤E˜ë˜EEEEœ¼EEE€E½E©Eˆë‹¤.</String>
+    <String Id="UITextSelCDCD" Overridable="yes">E´ E°E¥E€ E¸E€EECDEìE E¤ú²‰ë©Eˆë‹¤.</String>
+    <String Id="UITextSelCDLocal" Overridable="yes">E´ E°E¥E€ CDEìE E¤ú²‰ë˜EEEEEEìE Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤E˜ë˜EEEEœ¼EEE€E½E©Eˆë‹¤.</String>
+    <String Id="UITextSelChildCostNeg" Overridable="yes">E´ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[1]EEEµEE„ EŒë“­Eˆë‹¤.</String>
+    <String Id="UITextSelChildCostPos" Overridable="yes">E´ E°E¥EEE¤ú²‰í•˜E¤E´ ú±˜ë“œ Eœë¼E´EŒì— [1]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="UITextSelCostPending" Overridable="yes">E´ E°E¥EEE€ú±EEµEE„ E´ú¨Œì¼ú±˜ëŠ” EE..</String>
+    <String Id="UITextSelLocalAbsent" Overridable="yes">E´ E°E¥E€ EE Ežˆ Eœê±°E©Eˆë‹¤.</String>
+    <String Id="UITextSelLocalAdvertise" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì—EEEœê±°E˜ì§€EEú±Eš”ú±  EEE¤E˜í•˜EE¡EE¤E•í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelLocalCD" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì—EEEœê±°E˜ì§€EECDEìEEEE¤ú²‰í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelLocalLocal" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¸E€EEE¨EEEˆê²EE©Eˆë‹¤.</String>
+    <String Id="UITextSelLocalNetwork" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì—EEEœê±°E˜ì§€EEE¤ú¦¸EŒí¬EìE E¤ú²‰í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelNetworkAbsent" Overridable="yes">E´ E°E¥E€ EE Ežˆ Eœê±°E©Eˆë‹¤. E¤ú¦¸EŒí¬EìE E¤ú²‰í•  EEEE²EE©Eˆë‹¤.</String>
+    <String Id="UITextSelNetworkAdvertise" Overridable="yes">E´ E°E¥E€ E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EEEEEEìE ú±Eš”ú±  EEE¤E˜ë˜EEEEœ¼EEE€E½E©Eˆë‹¤.</String>
+    <String Id="UITextSelNetworkLocal" Overridable="yes">E´ E°E¥E€ E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EEEEEEìE Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤E˜ë˜EEEEœ¼EEE€E½E©Eˆë‹¤.</String>
+    <String Id="UITextSelNetworkNetwork" Overridable="yes">E´ E°E¥E€ E¸E€EEE¤ú¦¸EŒí¬EìE E¤ú²‰ë©Eˆë‹¤.</String>
+    <String Id="UITextSelParentCostNegNeg" Overridable="yes">E´ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[1]EEEµEE„ EŒë“­Eˆë‹¤. [3]Eœì˜ ú±˜ìœ„ E°E¥ EE[2]Eœê°€ E úŸë˜EˆìŠµEˆë‹¤. ú±˜ìœ„ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[4]EEEµEE„ EŒë“­Eˆë‹¤.</String>
+    <String Id="UITextSelParentCostNegPos" Overridable="yes">E´ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[1]EEEµEE„ EŒë“­Eˆë‹¤. [3]Eœì˜ ú±˜ìœ„ E°E¥ EE[2]Eœê°€ E úŸë˜EˆìŠµEˆë‹¤. ú±˜ìœ„ E°E¥EEE¬E©ú±˜ë ¤E´ ú±˜ë“œ Eœë¼E´EŒì— [4]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="UITextSelParentCostPosNeg" Overridable="yes">E´ E°E¥EEE¬E©ú±˜ë ¤E´ ú±˜ë“œ Eœë¼E´EŒì— [1]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤. [3]Eœì˜ ú±˜ìœ„ E°E¥ EE[2]Eœê°€ E úŸë˜EˆìŠµEˆë‹¤. ú±˜ìœ„ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[4]EEEµEE„ EŒë“­Eˆë‹¤.</String>
+    <String Id="UITextSelParentCostPosPos" Overridable="yes">E´ E°E¥EEE¬E©ú±˜ë ¤E´ ú±˜ë“œ Eœë¼E´EŒì— [1]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤. [3]Eœì˜ ú±˜ìœ„ E°E¥ EE[2]Eœê°€ E úŸë˜EˆìŠµEˆë‹¤. ú±˜ìœ„ E°E¥EEE¬E©ú±˜ë ¤E´ ú±˜ë“œ Eœë¼E´EŒì— [4]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="UITextTimeRemaining" Overridable="yes">E¨E€ Eœê°E {[1]EE}{[2]EE</String>
+    <String Id="UITextVolumeCostAvailable" Overridable="yes">E¬E© E€E¥</String>
+    <String Id="UITextVolumeCostDifference" Overridable="yes">E¨E´</String>
+    <String Id="UITextVolumeCostRequired" Overridable="yes">ú±Eš”</String>
+    <String Id="UITextVolumeCostSize" Overridable="yes">E”스ú¬ ú¬E°</String>
+    <String Id="UITextVolumeCostVolume" Overridable="yes">E¼E¨</String>
 </WixLocalization>

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_zh-tw.wxl
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_zh-tw.wxl	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/WixUI_zh-tw.wxl	2011-09-16 09:37:35 UTC (rev 478)
@@ -10,7 +10,7 @@
 
     You must not remove this notice, or any other, from this software.
 -->
-<WixLocalization Culture="zh-tw" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+<WixLocalization Culture="zh-tw" Codepage="950" xmlns="http://schemas.microsoft.com/wix/2006/localization">
   <String Id="WixUIBack" Overridable="yes">上一步(&B)</String>
   <String Id="WixUINext" Overridable="yes">下一步(&N)</String>
   <String Id="WixUICancel" Overridable="yes">取消</String>

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/build.cmd
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/build.cmd	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/build.cmd	2011-09-16 09:37:35 UTC (rev 478)
@@ -4,7 +4,7 @@
 @rem   usually only %TARGET% might be changed
 @rem ------------------------------------------------------------
 @set PATH=%WIX%\bin;%PATH%
- at set VERSION=1.0.1
+ at set VERSION=1.1.0
 @set TARGET=OpenRTM-aist-Python
 @set TARGET_WXS=%TARGET%.wxs
 @set TARGET_WIXOBJ=%TARGET%.wixobj
@@ -22,7 +22,7 @@
 @rem default distribution package folder
 @rem ------------------------------------------------------------
 @set DISTRIBUTION=C:\distribution
- at set OPENRTM_PY=%DISTRIBUTION%\OpenRTM-aist-Python-1.0.0
+ at set OPENRTM_PY=%DISTRIBUTION%\OpenRTM-aist-Python-1.1.0
 @set OMNIORB_PY24=%DISTRIBUTION%\omniORBpy-3.0-Python2.4
 @set OMNIORB_PY25=%DISTRIBUTION%\omniORBpy-3.4-Python2.5
 @set OMNIORB_PY26=%DISTRIBUTION%\omniORBpy-3.4-Python2.6
@@ -33,7 +33,7 @@
 @rem   supported languages have to be specified
 @rem ------------------------------------------------------------
 set LANGUAGES=(ja-jp de-de es-es fr-fr hu-hu it-it ko-kr zh-tw)
-
+copy OpenRTM-aist-Python.wxs.yaml.in OpenRTM-aist-Python.wxs.yaml
 echo off
 @rem ------------------------------------------------------------
 @rem Checking WiX
@@ -82,12 +82,14 @@
 
 if not exist OpenRTP_inc.wxs (
    cd OpenRTP
-rem set TMP_PYTHONPATH=%PYTHONPATH%
-rem set PYTHONPATH=../../bin;%PYTHONPATH%
-rem echo Generating OpenRTP_inc.wxs......
-rem openrtpwxs.py
-rem set PYTHONPATH=%TMP_PYTHONPATH%
+   copy ../makewxs.py .
+   copy ../yat.py .
+   echo Generating OpenRTP_inc.wxs......
+ at rem   openrtpwxs.py
+ at rem   set PYTHONPATH=%TMP_PYTHONPATH%
    copy OpenRTP_inc.wxs ..
+   del makewxs.py yat.py
+   del *.yaml
    cd ..
 )
 
@@ -149,3 +151,5 @@
 :END
 del *.yaml
 
+pause;
+

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/makewxs.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/makewxs.py	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/makewxs.py	2011-09-16 09:37:35 UTC (rev 478)
@@ -1,204 +1,204 @@
-#!/usr/bin/env python
-#
-# @brief WiX wxsd file generator
-# @date $Date: 2008-02-26 13:58:13 $
-# @author Norkai Ando <n-ando at aist.go.jp>
-#
-# Copyright (C) 2008
-#     Noriaki Ando
-#     Task-intelligence Research Group,
-#     Intelligent Systems Research Institute,
-#     National Institute of
-#         Advanced Industrial Science and Technology (AIST), Japan
-#     All rights reserved.
-#
-# $Id: makewxs.py 1686 2010-01-18 13:36:16Z n-ando $
-#
-
-import yaml
-import yat
-import sys
-import uuid
-import getopt
-import os
-
-def replace_uuid(text):
-    token0 = text.split("__GUID__")
-    text0 = token0[0]
-    for i in range(1, len(token0)):
-        u = str(uuid.uuid1()).upper()
-        text0 += u + token0[i]
-
-    token1 = text0.split("__UUID")
-    text1 = token1[0]
-    for i in range(1, len(token1)):
-        u = "_" + str(uuid.uuid1()).replace("-", "")
-        text1 += u + token1[i]
-    return text1
-
-class file_list:
-    def __init__(self, comp, path, files):
-        self.comp = comp
-        self.path = self.check_path(path)
-        self.files = self.to_basename(files)
-        self.shortnames = {}
-        self.shortext = {}
-        self.output = ""
-        self.head = """%s:
-  GUID: %s
-  Files:
-"""
-        self.fitem = """    - Id: %s
-      ShortName: %s
-      Name: %s
-      Source: %s
-"""
-        self.count = -1
-
-    def check_path(self, path):
-        if path[-1] != "\\" or path[-1] != "/":
-            return path + "\\"
-
-    def to_basename(self, files):
-        out = []
-        for f in files:
-            out.append(os.path.basename(f))
-        return out
-
-    def to_shortname(self, fname):
-        try:
-            name, ext = fname.rsplit(".", 1)
-        except:
-            name = fname
-            ext  = ""
-        if name != None and len(name) > 8:
-            short_name = name[:5] + self.sn_num(name[:5])
-        else:
-            short_name = name
-        if ext != None and len(ext) > 3:
-            short_ext = ext[:3]
-        else:
-            short_ext = ext
-        if short_ext == "":
-            return short_name
-        return short_name + "." + short_ext
-
-    def id(self):
-        self.count += 1
-        return self.comp + '%04d' % (self.count)
-        
-    def sn_num(self, name):
-        if self.shortnames.has_key(name):
-            self.shortnames[name] += 1
-        else:
-            self.shortnames[name] = 0
-        return "%03d" % (self.shortnames[name])
-
-    def se_num(self, ext):
-        if self.shortext.has_key(ext):
-            self.shortext[ext] += 1
-        else:
-            self.shortext[ext] = 0
-        return "%01d" % (self.shortext[ext])
-
-    def write(self, text):
-        self.output += text
-
-    def escape(self, text):
-        return text.replace("\\", "\\\\")
-
-    def yaml(self):
-        self.write(self.head % (self.comp, str(uuid.uuid1()).upper()))
-        for fname in self.files:
-            self.write(self.fitem % (self.escape(self.id()),
-                                     self.escape(self.to_shortname(fname)),
-                                     self.escape(fname),
-                                     self.escape(self.path + fname)))
-        return self.output
-
-
-class make_wxs:
-    def __init__(self, outfile, infile, yaml_files):
-        self.outfile = outfile
-        self.template = self.load_template(infile)
-        self.dict = self.load_yaml(yaml_files)
-
-    def load_template(self, template):
-        fd = open(template, 'r')
-        t = yat.Template(fd.read(), "{% ", " %}")
-        fd.close()
-        return t
-
-    def load_yaml(self, yaml_files):
-        yaml_text = ""
-        for f in yaml_files:
-            fd = open(f, "r")
-            yaml_text += replace_uuid(fd.read())
-            fd.close()
-        return yaml.load(yaml_text)
-
-    def generate(self):
-        of = open(self.outfile, 'w')
-        of.write(self.template.generate(self.dict))
-        of.close()
-
-
-def usage():
-    print """makewxs.py cmd options
-commands:
-  flist: make file list to be included wxs file
-  wxs  : make wxs file from a input template file and yaml files 
-examples:
-  makewxs.py flist -c ComponentName -p Path -o OutputFilename file_names...
-  makewxs.py wxs -o Output.wxs -i InputTempalte input_yaml_files...
-"""
-
-
-def main(argv):
-    if len(argv) == 0:
-        usage()
-        sys.exit(-1)
-
-    cmd = argv[0]
-    out = None
-    if cmd == "flist":
-        opts, args = getopt.getopt(argv[1:], "c:p:o:", [])
-        if opts == None:
-            usage()
-            sys.exit(-1)
-            return
-        for o, a in opts:
-            if o in ("-c"):
-                comp = a
-            if o in ("-p"):
-                path = a
-            if o in ("-o"):
-                out = a
-        fl = file_list(comp, path, args)
-        if out == None:
-            f = sys.stdout
-        else:
-            f = open(out, "w")
-        f.write(fl.yaml())
-        f.close()
-    elif cmd == "wxs":
-        opts, args = getopt.getopt(argv[1:], "o:i:", [])
-        if opts == None:
-            usage()
-            sys.exit(-1)
-            return
-        for o, a in opts:
-            if o in ("-o"):
-                outfile = a
-            if o in ("-i"):
-                infile = a
-        wxs = make_wxs(outfile, infile, args)
-        wxs.generate()
-    elif cmd == "":
-        pass
-    else:
-        pass
-        
-
-if __name__ == "__main__":
-    main(sys.argv[1:])
+#!/usr/bin/env python
+#
+# @brief WiX wxsd file generator
+# @date $Date: 2008-02-26 13:58:13 $
+# @author Norkai Ando <n-ando at aist.go.jp>
+#
+# Copyright (C) 2008
+#     Noriaki Ando
+#     Task-intelligence Research Group,
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+#
+# $Id: makewxs.py 1686 2010-01-18 13:36:16Z n-ando $
+#
+
+import yaml
+import yat
+import sys
+import uuid
+import getopt
+import os
+
+def replace_uuid(text):
+    token0 = text.split("__GUID__")
+    text0 = token0[0]
+    for i in range(1, len(token0)):
+        u = str(uuid.uuid1()).upper()
+        text0 += u + token0[i]
+
+    token1 = text0.split("__UUID")
+    text1 = token1[0]
+    for i in range(1, len(token1)):
+        u = "_" + str(uuid.uuid1()).replace("-", "")
+        text1 += u + token1[i]
+    return text1
+
+class file_list:
+    def __init__(self, comp, path, files):
+        self.comp = comp
+        self.path = self.check_path(path)
+        self.files = self.to_basename(files)
+        self.shortnames = {}
+        self.shortext = {}
+        self.output = ""
+        self.head = """%s:
+  GUID: %s
+  Files:
+"""
+        self.fitem = """    - Id: %s
+      ShortName: %s
+      Name: %s
+      Source: %s
+"""
+        self.count = -1
+
+    def check_path(self, path):
+        if path[-1] != "\\" or path[-1] != "/":
+            return path + "\\"
+
+    def to_basename(self, files):
+        out = []
+        for f in files:
+            out.append(os.path.basename(f))
+        return out
+
+    def to_shortname(self, fname):
+        try:
+            name, ext = fname.rsplit(".", 1)
+        except:
+            name = fname
+            ext  = ""
+        if name != None and len(name) > 8:
+            short_name = name[:5] + self.sn_num(name[:5])
+        else:
+            short_name = name
+        if ext != None and len(ext) > 3:
+            short_ext = ext[:3]
+        else:
+            short_ext = ext
+        if short_ext == "":
+            return short_name
+        return short_name + "." + short_ext
+
+    def id(self):
+        self.count += 1
+        return self.comp + '%04d' % (self.count)
+        
+    def sn_num(self, name):
+        if self.shortnames.has_key(name):
+            self.shortnames[name] += 1
+        else:
+            self.shortnames[name] = 0
+        return "%03d" % (self.shortnames[name])
+
+    def se_num(self, ext):
+        if self.shortext.has_key(ext):
+            self.shortext[ext] += 1
+        else:
+            self.shortext[ext] = 0
+        return "%01d" % (self.shortext[ext])
+
+    def write(self, text):
+        self.output += text
+
+    def escape(self, text):
+        return text.replace("\\", "\\\\")
+
+    def yaml(self):
+        self.write(self.head % (self.comp, str(uuid.uuid1()).upper()))
+        for fname in self.files:
+            self.write(self.fitem % (self.escape(self.id()),
+                                     self.escape(self.to_shortname(fname)),
+                                     self.escape(fname),
+                                     self.escape(self.path + fname)))
+        return self.output
+
+
+class make_wxs:
+    def __init__(self, outfile, infile, yaml_files):
+        self.outfile = outfile
+        self.template = self.load_template(infile)
+        self.dict = self.load_yaml(yaml_files)
+
+    def load_template(self, template):
+        fd = open(template, 'r')
+        t = yat.Template(fd.read(), "{% ", " %}")
+        fd.close()
+        return t
+
+    def load_yaml(self, yaml_files):
+        yaml_text = ""
+        for f in yaml_files:
+            fd = open(f, "r")
+            yaml_text += replace_uuid(fd.read())
+            fd.close()
+        return yaml.load(yaml_text)
+
+    def generate(self):
+        of = open(self.outfile, 'w')
+        of.write(self.template.generate(self.dict))
+        of.close()
+
+
+def usage():
+    print """makewxs.py cmd options
+commands:
+  flist: make file list to be included wxs file
+  wxs  : make wxs file from a input template file and yaml files 
+examples:
+  makewxs.py flist -c ComponentName -p Path -o OutputFilename file_names...
+  makewxs.py wxs -o Output.wxs -i InputTempalte input_yaml_files...
+"""
+
+
+def main(argv):
+    if len(argv) == 0:
+        usage()
+        sys.exit(-1)
+
+    cmd = argv[0]
+    out = None
+    if cmd == "flist":
+        opts, args = getopt.getopt(argv[1:], "c:p:o:", [])
+        if opts == None:
+            usage()
+            sys.exit(-1)
+            return
+        for o, a in opts:
+            if o in ("-c"):
+                comp = a
+            if o in ("-p"):
+                path = a
+            if o in ("-o"):
+                out = a
+        fl = file_list(comp, path, args)
+        if out == None:
+            f = sys.stdout
+        else:
+            f = open(out, "w")
+        f.write(fl.yaml())
+        f.close()
+    elif cmd == "wxs":
+        opts, args = getopt.getopt(argv[1:], "o:i:", [])
+        if opts == None:
+            usage()
+            sys.exit(-1)
+            return
+        for o, a in opts:
+            if o in ("-o"):
+                outfile = a
+            if o in ("-i"):
+                infile = a
+        wxs = make_wxs(outfile, infile, args)
+        wxs.generate()
+    elif cmd == "":
+        pass
+    else:
+        pass
+        
+
+if __name__ == "__main__":
+    main(sys.argv[1:])

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/uuid.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/uuid.py	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/uuid.py	2011-09-16 09:37:35 UTC (rev 478)
@@ -1,479 +1,479 @@
-#!/usr/bin/env python
-
-r"""UUID objects (universally unique identifiers) according to RFC 4122.
-
-This module provides immutable UUID objects (class UUID) and the functions
-uuid1(), uuid3(), uuid4(), uuid5() for generating version 1, 3, 4, and 5
-UUIDs as specified in RFC 4122.
-
-If all you want is a unique ID, you should probably call uuid1() or uuid4().
-Note that uuid1() may compromise privacy since it creates a UUID containing
-the computer's network address.  uuid4() creates a random UUID.
-
-Typical usage:
-
-    >>> import uuid
-
-    # make a UUID based on the host ID and current time
-    >>> uuid.uuid1()
-    UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
-
-    # make a UUID using an MD5 hash of a namespace UUID and a name
-    >>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
-    UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
-
-    # make a random UUID
-    >>> uuid.uuid4()
-    UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
-
-    # make a UUID using a SHA-1 hash of a namespace UUID and a name
-    >>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
-    UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
-
-    # make a UUID from a string of hex digits (braces and hyphens ignored)
-    >>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
-
-    # convert a UUID to a string of hex digits in standard form
-    >>> str(x)
-    '00010203-0405-0607-0809-0a0b0c0d0e0f'
-
-    # get the raw 16 bytes of the UUID
-    >>> x.bytes
-    '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
-
-    # make a UUID from a 16-byte string
-    >>> uuid.UUID(bytes=x.bytes)
-    UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
-
-This module works with Python 2.3 or higher."""
-
-__author__ = 'Ka-Ping Yee <ping at zesty.ca>'
-__date__ = '$Date: 2007-07-20 15:38:13 $'.split()[1].replace('/', '-')
-__version__ = '$Revision: 1.1.2.1 $'.split()[1]
-
-RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, RESERVED_FUTURE = [
-    'reserved for NCS compatibility', 'specified in RFC 4122',
-    'reserved for Microsoft compatibility', 'reserved for future definition']
-
-class UUID(object):
-    """Instances of the UUID class represent UUIDs as specified in RFC 4122.
-    UUID objects are immutable, hashable, and usable as dictionary keys.
-    Converting a UUID to a string with str() yields something in the form
-    '12345678-1234-1234-1234-123456789abc'.  The UUID constructor accepts
-    four possible forms: a similar string of hexadecimal digits, or a
-    string of 16 raw bytes as an argument named 'bytes', or a tuple of
-    six integer fields (with 32-bit, 16-bit, 16-bit, 8-bit, 8-bit, and
-    48-bit values respectively) as an argument named 'fields', or a single
-    128-bit integer as an argument named 'int'.
-    
-    UUIDs have these read-only attributes:
-
-        bytes       the UUID as a 16-byte string
-
-        fields      a tuple of the six integer fields of the UUID,
-                    which are also available as six individual attributes
-                    and two derived attributes:
-
-            time_low                the first 32 bits of the UUID
-            time_mid                the next 16 bits of the UUID
-            time_hi_version         the next 16 bits of the UUID
-            clock_seq_hi_variant    the next 8 bits of the UUID
-            clock_seq_low           the next 8 bits of the UUID
-            node                    the last 48 bits of the UUID
-
-            time                    the 60-bit timestamp
-            clock_seq               the 14-bit sequence number
-
-        hex         the UUID as a 32-character hexadecimal string
-
-        int         the UUID as a 128-bit integer
-
-        urn         the UUID as a URN as specified in RFC 4122
-
-        variant     the UUID variant (one of the constants RESERVED_NCS,
-                    RFC_4122, RESERVED_MICROSOFT, or RESERVED_FUTURE)
-
-        version     the UUID version number (1 through 5, meaningful only
-                    when the variant is RFC_4122)
-    """
-
-    def __init__(self, hex=None, bytes=None, fields=None, int=None,
-                       version=None):
-        r"""Create a UUID from either a string of 32 hexadecimal digits,
-        a string of 16 bytes as the 'bytes' argument, a tuple of six
-        integers (32-bit time_low, 16-bit time_mid, 16-bit time_hi_version,
-        8-bit clock_seq_hi_variant, 8-bit clock_seq_low, 48-bit node) as
-        the 'fields' argument, or a single 128-bit integer as the 'int'
-        argument.  When a string of hex digits is given, curly braces,
-        hyphens, and a URN prefix are all optional.  For example, these
-        expressions all yield the same UUID:
-
-        UUID('{12345678-1234-5678-1234-567812345678}')
-        UUID('12345678123456781234567812345678')
-        UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
-        UUID(bytes='\x12\x34\x56\x78'*4)
-        UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
-        UUID(int=0x12345678123456781234567812345678)
-
-        Exactly one of 'hex', 'bytes', 'fields', or 'int' must be given.
-        The 'version' argument is optional; if given, the resulting UUID
-        will have its variant and version number set according to RFC 4122,
-        overriding bits in the given 'hex', 'bytes', 'fields', or 'int'.
-        """
-
-        if [hex, bytes, fields, int].count(None) != 3:
-            raise TypeError('need just one of hex, bytes, fields, or int')
-        if hex is not None:
-            hex = hex.replace('urn:', '').replace('uuid:', '')
-            hex = hex.strip('{}').replace('-', '')
-            if len(hex) != 32:
-                raise ValueError('badly formed hexadecimal UUID string')
-            int = long(hex, 16)
-        if bytes is not None:
-            if len(bytes) != 16:
-                raise ValueError('bytes is not a 16-char string')
-            int = long(('%02x'*16) % tuple(map(ord, bytes)), 16)
-        if fields is not None:
-            if len(fields) != 6:
-                raise ValueError('fields is not a 6-tuple')
-            (time_low, time_mid, time_hi_version,
-             clock_seq_hi_variant, clock_seq_low, node) = fields
-            if not 0 <= time_low < 1<<32L:
-                raise ValueError('field 1 out of range (need a 32-bit value)')
-            if not 0 <= time_mid < 1<<16L:
-                raise ValueError('field 2 out of range (need a 16-bit value)')
-            if not 0 <= time_hi_version < 1<<16L:
-                raise ValueError('field 3 out of range (need a 16-bit value)')
-            if not 0 <= clock_seq_hi_variant < 1<<8L:
-                raise ValueError('field 4 out of range (need an 8-bit value)')
-            if not 0 <= clock_seq_low < 1<<8L:
-                raise ValueError('field 5 out of range (need an 8-bit value)')
-            if not 0 <= node < 1<<48L:
-                raise ValueError('field 6 out of range (need a 48-bit value)')
-            clock_seq = (clock_seq_hi_variant << 8L) | clock_seq_low
-            int = ((time_low << 96L) | (time_mid << 80L) |
-                   (time_hi_version << 64L) | (clock_seq << 48L) | node)
-        if int is not None:
-            if not 0 <= int < 1<<128L:
-                raise ValueError('int is out of range (need a 128-bit value)')
-        if version is not None:
-            if not 1 <= version <= 5:
-                raise ValueError('illegal version number')
-            # Set the variant to RFC 4122.
-            int &= ~(0xc000 << 48L)
-            int |= 0x8000 << 48L
-            # Set the version number.
-            int &= ~(0xf000 << 64L)
-            int |= version << 76L
-        self.__dict__['int'] = int
-
-    def __cmp__(self, other):
-        if isinstance(other, UUID):
-            return cmp(self.int, other.int)
-        return NotImplemented
-
-    def __hash__(self):
-        return hash(self.int)
-
-    def __int__(self):
-        return self.int
-
-    def __repr__(self):
-        return 'UUID(%r)' % str(self)
-
-    def __setattr__(self, name, value):
-        raise TypeError('UUID objects are immutable')
-
-    def __str__(self):
-        hex = '%032x' % self.int
-        return '%s-%s-%s-%s-%s' % (
-            hex[:8], hex[8:12], hex[12:16], hex[16:20], hex[20:])
-
-    def get_bytes(self):
-        bytes = ''
-        for shift in range(0, 128, 8):
-            bytes = chr((self.int >> shift) & 0xff) + bytes
-        return bytes
-
-    bytes = property(get_bytes)
-
-    def get_fields(self):
-        return (self.time_low, self.time_mid, self.time_hi_version,
-                self.clock_seq_hi_variant, self.clock_seq_low, self.node)
-
-    fields = property(get_fields)
-
-    def get_time_low(self):
-        return self.int >> 96L
-   
-    time_low = property(get_time_low)
-
-    def get_time_mid(self):
-        return (self.int >> 80L) & 0xffff
-
-    time_mid = property(get_time_mid)
-
-    def get_time_hi_version(self):
-        return (self.int >> 64L) & 0xffff
-    
-    time_hi_version = property(get_time_hi_version)
-
-    def get_clock_seq_hi_variant(self):
-        return (self.int >> 56L) & 0xff
-
-    clock_seq_hi_variant = property(get_clock_seq_hi_variant)
-    
-    def get_clock_seq_low(self):
-        return (self.int >> 48L) & 0xff
-
-    clock_seq_low = property(get_clock_seq_low)
-
-    def get_time(self):
-        return (((self.time_hi_version & 0x0fffL) << 48L) |
-                (self.time_mid << 32L) | self.time_low)
-
-    time = property(get_time)
-
-    def get_clock_seq(self):
-        return (((self.clock_seq_hi_variant & 0x3fL) << 8L) |
-                self.clock_seq_low)
-
-    clock_seq = property(get_clock_seq)
-    
-    def get_node(self):
-        return self.int & 0xffffffffffff
-
-    node = property(get_node)
-
-    def get_hex(self):
-        return '%032x' % self.int
-
-    hex = property(get_hex)
-
-    def get_urn(self):
-        return 'urn:uuid:' + str(self)
-
-    urn = property(get_urn)
-
-    def get_variant(self):
-        if not self.int & (0x8000 << 48L):
-            return RESERVED_NCS
-        elif not self.int & (0x4000 << 48L):
-            return RFC_4122
-        elif not self.int & (0x2000 << 48L):
-            return RESERVED_MICROSOFT
-        else:
-            return RESERVED_FUTURE
-
-    variant = property(get_variant)
-
-    def get_version(self):
-        # The version bits are only meaningful for RFC 4122 UUIDs.
-        if self.variant == RFC_4122:
-            return int((self.int >> 76L) & 0xf)
-
-    version = property(get_version)
-
-def _ifconfig_getnode():
-    """Get the hardware address on Unix by running ifconfig."""
-    import os
-    for dir in ['', '/sbin/', '/usr/sbin']:
-        try:
-            pipe = os.popen(os.path.join(dir, 'ifconfig'))
-        except IOError:
-            continue
-        for line in pipe:
-            words = line.lower().split()
-            for i in range(len(words)):
-                if words[i] in ['hwaddr', 'ether']:
-                    return int(words[i + 1].replace(':', ''), 16)
-
-def _ipconfig_getnode():
-    """Get the hardware address on Windows by running ipconfig.exe."""
-    import os, re
-    dirs = ['', r'c:\windows\system32', r'c:\winnt\system32']
-    try:
-        import ctypes
-        buffer = ctypes.create_string_buffer(300)
-        ctypes.windll.kernel32.GetSystemDirectoryA(buffer, 300)
-        dirs.insert(0, buffer.value.decode('mbcs'))
-    except:
-        pass
-    for dir in dirs:
-        try:
-            pipe = os.popen(os.path.join(dir, 'ipconfig') + ' /all')
-        except IOError:
-            continue
-        for line in pipe:
-            value = line.split(':')[-1].strip().lower()
-            if re.match('([0-9a-f][0-9a-f]-){5}[0-9a-f][0-9a-f]', value):
-                return int(value.replace('-', ''), 16)
-
-def _netbios_getnode():
-    """Get the hardware address on Windows using NetBIOS calls.
-    See http://support.microsoft.com/kb/118623 for details."""
-    import win32wnet, netbios
-    ncb = netbios.NCB()
-    ncb.Command = netbios.NCBENUM
-    ncb.Buffer = adapters = netbios.LANA_ENUM()
-    adapters._pack()
-    if win32wnet.Netbios(ncb) != 0:
-        return
-    adapters._unpack()
-    for i in range(adapters.length):
-        ncb.Reset()
-        ncb.Command = netbios.NCBRESET
-        ncb.Lana_num = ord(adapters.lana[i])
-        if win32wnet.Netbios(ncb) != 0:
-            continue
-        ncb.Reset()
-        ncb.Command = netbios.NCBASTAT
-        ncb.Lana_num = ord(adapters.lana[i])
-        ncb.Callname = '*'.ljust(16)
-        ncb.Buffer = status = netbios.ADAPTER_STATUS()
-        if win32wnet.Netbios(ncb) != 0:
-            continue
-        status._unpack()
-        bytes = map(ord, status.adapter_address)
-        return ((bytes[0]<<40L) + (bytes[1]<<32L) + (bytes[2]<<24L) +
-                (bytes[3]<<16L) + (bytes[4]<<8L) + bytes[5])
-
-# Thanks to Thomas Heller for ctypes and for his help with its use here.
-
-# If ctypes is available, use it to find system routines for UUID generation.
-_uuid_generate_random = _uuid_generate_time = _UuidCreate = None
-try:
-    import ctypes, ctypes.util
-    _buffer = ctypes.create_string_buffer(16)
-
-    # The uuid_generate_* routines are provided by libuuid on at least
-    # Linux and FreeBSD, and provided by libc on Mac OS X.
-    for libname in ['uuid', 'c']:
-        try:
-            lib = ctypes.CDLL(ctypes.util.find_library(libname))
-        except:
-            continue
-        if hasattr(lib, 'uuid_generate_random'):
-            _uuid_generate_random = lib.uuid_generate_random
-        if hasattr(lib, 'uuid_generate_time'):
-            _uuid_generate_time = lib.uuid_generate_time
-
-    # On Windows prior to 2000, UuidCreate gives a UUID containing the
-    # hardware address.  On Windows 2000 and later, UuidCreate makes a
-    # random UUID and UuidCreateSequential gives a UUID containing the
-    # hardware address.  These routines are provided by the RPC runtime.
-    try:
-        lib = ctypes.windll.rpcrt4
-    except:
-        lib = None
-    _UuidCreate = getattr(lib, 'UuidCreateSequential',
-                          getattr(lib, 'UuidCreate', None))
-except:
-    pass
-
-def _unixdll_getnode():
-    """Get the hardware address on Unix using ctypes."""
-    _uuid_generate_time(_buffer)
-    return UUID(bytes=_buffer.raw).node
-
-def _windll_getnode():
-    """Get the hardware address on Windows using ctypes."""
-    if _UuidCreate(_buffer) == 0:
-        return UUID(bytes=_buffer.raw).node
-
-def _random_getnode():
-    """Get a random node ID, with eighth bit set as suggested by RFC 4122."""
-    import random
-    return random.randrange(0, 1<<48L) | 0x010000000000L
-
-_node = None
-
-def getnode():
-    """Get the hardware address as a 48-bit integer.  The first time this
-    runs, it may launch a separate program, which could be quite slow.  If
-    all attempts to obtain the hardware address fail, we choose a random
-    48-bit number with its eighth bit set to 1 as recommended in RFC 4122."""
-
-    global _node
-    if _node is not None:
-        return _node
-
-    import sys
-    if sys.platform == 'win32':
-        getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode]
-    else:
-        getters = [_unixdll_getnode, _ifconfig_getnode]
-
-    for getter in getters + [_random_getnode]:
-        try:
-            _node = getter()
-        except:
-            continue
-        if _node is not None:
-            return _node
-
-def uuid1(node=None, clock_seq=None):
-    """Generate a UUID from a host ID, sequence number, and the current time.
-    If 'node' is not given, getnode() is used to obtain the hardware
-    address.  If 'clock_seq' is given, it is used as the sequence number;
-    otherwise a random 14-bit sequence number is chosen."""
-
-    # When the system provides a version-1 UUID generator, use it (but don't
-    # use UuidCreate here because its UUIDs don't conform to RFC 4122).
-    if _uuid_generate_time and node is clock_seq is None:
-        _uuid_generate_time(_buffer)
-        return UUID(bytes=_buffer.raw)
-
-    import time
-    nanoseconds = int(time.time() * 1e9)
-    # 0x01b21dd213814000 is the number of 100-ns intervals between the
-    # UUID epoch 1582-10-15 00:00:00 and the Unix epoch 1970-01-01 00:00:00.
-    timestamp = int(nanoseconds/100) + 0x01b21dd213814000L
-    if clock_seq is None:
-        import random
-        clock_seq = random.randrange(1<<14L) # instead of stable storage
-    time_low = timestamp & 0xffffffffL
-    time_mid = (timestamp >> 32L) & 0xffffL
-    time_hi_version = (timestamp >> 48L) & 0x0fffL
-    clock_seq_low = clock_seq & 0xffL
-    clock_seq_hi_variant = (clock_seq >> 8L) & 0x3fL
-    if node is None:
-        node = getnode()
-    return UUID(fields=(time_low, time_mid, time_hi_version,
-                        clock_seq_hi_variant, clock_seq_low, node), version=1)
-
-def uuid3(namespace, name):
-    """Generate a UUID from the MD5 hash of a namespace UUID and a name."""
-    import md5
-    hash = md5.md5(namespace.bytes + name).digest()
-    return UUID(bytes=hash[:16], version=3)
-
-def uuid4():
-    """Generate a random UUID."""
-
-    # When the system provides a version-4 UUID generator, use it.
-    if _uuid_generate_random:
-        _uuid_generate_random(_buffer)
-        return UUID(bytes=_buffer.raw)
-
-    # Otherwise, get randomness from urandom or the 'random' module.
-    try:
-        import os
-        return UUID(bytes=os.urandom(16), version=4)
-    except:
-        import random
-        bytes = [chr(random.randrange(256)) for i in range(16)]
-        return UUID(bytes=bytes, version=4)
-
-def uuid5(namespace, name):
-    """Generate a UUID from the SHA-1 hash of a namespace UUID and a name."""
-    import sha
-    hash = sha.sha(namespace.bytes + name).digest()
-    return UUID(bytes=hash[:16], version=5)
-
-# The following standard UUIDs are for use with uuid3() or uuid5().
-
-NAMESPACE_DNS = UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_URL = UUID('6ba7b811-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_OID = UUID('6ba7b812-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_X500 = UUID('6ba7b814-9dad-11d1-80b4-00c04fd430c8')
+#!/usr/bin/env python
+
+r"""UUID objects (universally unique identifiers) according to RFC 4122.
+
+This module provides immutable UUID objects (class UUID) and the functions
+uuid1(), uuid3(), uuid4(), uuid5() for generating version 1, 3, 4, and 5
+UUIDs as specified in RFC 4122.
+
+If all you want is a unique ID, you should probably call uuid1() or uuid4().
+Note that uuid1() may compromise privacy since it creates a UUID containing
+the computer's network address.  uuid4() creates a random UUID.
+
+Typical usage:
+
+    >>> import uuid
+
+    # make a UUID based on the host ID and current time
+    >>> uuid.uuid1()
+    UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
+
+    # make a UUID using an MD5 hash of a namespace UUID and a name
+    >>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
+    UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
+
+    # make a random UUID
+    >>> uuid.uuid4()
+    UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
+
+    # make a UUID using a SHA-1 hash of a namespace UUID and a name
+    >>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
+    UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
+
+    # make a UUID from a string of hex digits (braces and hyphens ignored)
+    >>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
+
+    # convert a UUID to a string of hex digits in standard form
+    >>> str(x)
+    '00010203-0405-0607-0809-0a0b0c0d0e0f'
+
+    # get the raw 16 bytes of the UUID
+    >>> x.bytes
+    '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
+
+    # make a UUID from a 16-byte string
+    >>> uuid.UUID(bytes=x.bytes)
+    UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
+
+This module works with Python 2.3 or higher."""
+
+__author__ = 'Ka-Ping Yee <ping at zesty.ca>'
+__date__ = '$Date: 2007-07-20 15:38:13 $'.split()[1].replace('/', '-')
+__version__ = '$Revision: 1.1.2.1 $'.split()[1]
+
+RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, RESERVED_FUTURE = [
+    'reserved for NCS compatibility', 'specified in RFC 4122',
+    'reserved for Microsoft compatibility', 'reserved for future definition']
+
+class UUID(object):
+    """Instances of the UUID class represent UUIDs as specified in RFC 4122.
+    UUID objects are immutable, hashable, and usable as dictionary keys.
+    Converting a UUID to a string with str() yields something in the form
+    '12345678-1234-1234-1234-123456789abc'.  The UUID constructor accepts
+    four possible forms: a similar string of hexadecimal digits, or a
+    string of 16 raw bytes as an argument named 'bytes', or a tuple of
+    six integer fields (with 32-bit, 16-bit, 16-bit, 8-bit, 8-bit, and
+    48-bit values respectively) as an argument named 'fields', or a single
+    128-bit integer as an argument named 'int'.
+    
+    UUIDs have these read-only attributes:
+
+        bytes       the UUID as a 16-byte string
+
+        fields      a tuple of the six integer fields of the UUID,
+                    which are also available as six individual attributes
+                    and two derived attributes:
+
+            time_low                the first 32 bits of the UUID
+            time_mid                the next 16 bits of the UUID
+            time_hi_version         the next 16 bits of the UUID
+            clock_seq_hi_variant    the next 8 bits of the UUID
+            clock_seq_low           the next 8 bits of the UUID
+            node                    the last 48 bits of the UUID
+
+            time                    the 60-bit timestamp
+            clock_seq               the 14-bit sequence number
+
+        hex         the UUID as a 32-character hexadecimal string
+
+        int         the UUID as a 128-bit integer
+
+        urn         the UUID as a URN as specified in RFC 4122
+
+        variant     the UUID variant (one of the constants RESERVED_NCS,
+                    RFC_4122, RESERVED_MICROSOFT, or RESERVED_FUTURE)
+
+        version     the UUID version number (1 through 5, meaningful only
+                    when the variant is RFC_4122)
+    """
+
+    def __init__(self, hex=None, bytes=None, fields=None, int=None,
+                       version=None):
+        r"""Create a UUID from either a string of 32 hexadecimal digits,
+        a string of 16 bytes as the 'bytes' argument, a tuple of six
+        integers (32-bit time_low, 16-bit time_mid, 16-bit time_hi_version,
+        8-bit clock_seq_hi_variant, 8-bit clock_seq_low, 48-bit node) as
+        the 'fields' argument, or a single 128-bit integer as the 'int'
+        argument.  When a string of hex digits is given, curly braces,
+        hyphens, and a URN prefix are all optional.  For example, these
+        expressions all yield the same UUID:
+
+        UUID('{12345678-1234-5678-1234-567812345678}')
+        UUID('12345678123456781234567812345678')
+        UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
+        UUID(bytes='\x12\x34\x56\x78'*4)
+        UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
+        UUID(int=0x12345678123456781234567812345678)
+
+        Exactly one of 'hex', 'bytes', 'fields', or 'int' must be given.
+        The 'version' argument is optional; if given, the resulting UUID
+        will have its variant and version number set according to RFC 4122,
+        overriding bits in the given 'hex', 'bytes', 'fields', or 'int'.
+        """
+
+        if [hex, bytes, fields, int].count(None) != 3:
+            raise TypeError('need just one of hex, bytes, fields, or int')
+        if hex is not None:
+            hex = hex.replace('urn:', '').replace('uuid:', '')
+            hex = hex.strip('{}').replace('-', '')
+            if len(hex) != 32:
+                raise ValueError('badly formed hexadecimal UUID string')
+            int = long(hex, 16)
+        if bytes is not None:
+            if len(bytes) != 16:
+                raise ValueError('bytes is not a 16-char string')
+            int = long(('%02x'*16) % tuple(map(ord, bytes)), 16)
+        if fields is not None:
+            if len(fields) != 6:
+                raise ValueError('fields is not a 6-tuple')
+            (time_low, time_mid, time_hi_version,
+             clock_seq_hi_variant, clock_seq_low, node) = fields
+            if not 0 <= time_low < 1<<32L:
+                raise ValueError('field 1 out of range (need a 32-bit value)')
+            if not 0 <= time_mid < 1<<16L:
+                raise ValueError('field 2 out of range (need a 16-bit value)')
+            if not 0 <= time_hi_version < 1<<16L:
+                raise ValueError('field 3 out of range (need a 16-bit value)')
+            if not 0 <= clock_seq_hi_variant < 1<<8L:
+                raise ValueError('field 4 out of range (need an 8-bit value)')
+            if not 0 <= clock_seq_low < 1<<8L:
+                raise ValueError('field 5 out of range (need an 8-bit value)')
+            if not 0 <= node < 1<<48L:
+                raise ValueError('field 6 out of range (need a 48-bit value)')
+            clock_seq = (clock_seq_hi_variant << 8L) | clock_seq_low
+            int = ((time_low << 96L) | (time_mid << 80L) |
+                   (time_hi_version << 64L) | (clock_seq << 48L) | node)
+        if int is not None:
+            if not 0 <= int < 1<<128L:
+                raise ValueError('int is out of range (need a 128-bit value)')
+        if version is not None:
+            if not 1 <= version <= 5:
+                raise ValueError('illegal version number')
+            # Set the variant to RFC 4122.
+            int &= ~(0xc000 << 48L)
+            int |= 0x8000 << 48L
+            # Set the version number.
+            int &= ~(0xf000 << 64L)
+            int |= version << 76L
+        self.__dict__['int'] = int
+
+    def __cmp__(self, other):
+        if isinstance(other, UUID):
+            return cmp(self.int, other.int)
+        return NotImplemented
+
+    def __hash__(self):
+        return hash(self.int)
+
+    def __int__(self):
+        return self.int
+
+    def __repr__(self):
+        return 'UUID(%r)' % str(self)
+
+    def __setattr__(self, name, value):
+        raise TypeError('UUID objects are immutable')
+
+    def __str__(self):
+        hex = '%032x' % self.int
+        return '%s-%s-%s-%s-%s' % (
+            hex[:8], hex[8:12], hex[12:16], hex[16:20], hex[20:])
+
+    def get_bytes(self):
+        bytes = ''
+        for shift in range(0, 128, 8):
+            bytes = chr((self.int >> shift) & 0xff) + bytes
+        return bytes
+
+    bytes = property(get_bytes)
+
+    def get_fields(self):
+        return (self.time_low, self.time_mid, self.time_hi_version,
+                self.clock_seq_hi_variant, self.clock_seq_low, self.node)
+
+    fields = property(get_fields)
+
+    def get_time_low(self):
+        return self.int >> 96L
+   
+    time_low = property(get_time_low)
+
+    def get_time_mid(self):
+        return (self.int >> 80L) & 0xffff
+
+    time_mid = property(get_time_mid)
+
+    def get_time_hi_version(self):
+        return (self.int >> 64L) & 0xffff
+    
+    time_hi_version = property(get_time_hi_version)
+
+    def get_clock_seq_hi_variant(self):
+        return (self.int >> 56L) & 0xff
+
+    clock_seq_hi_variant = property(get_clock_seq_hi_variant)
+    
+    def get_clock_seq_low(self):
+        return (self.int >> 48L) & 0xff
+
+    clock_seq_low = property(get_clock_seq_low)
+
+    def get_time(self):
+        return (((self.time_hi_version & 0x0fffL) << 48L) |
+                (self.time_mid << 32L) | self.time_low)
+
+    time = property(get_time)
+
+    def get_clock_seq(self):
+        return (((self.clock_seq_hi_variant & 0x3fL) << 8L) |
+                self.clock_seq_low)
+
+    clock_seq = property(get_clock_seq)
+    
+    def get_node(self):
+        return self.int & 0xffffffffffff
+
+    node = property(get_node)
+
+    def get_hex(self):
+        return '%032x' % self.int
+
+    hex = property(get_hex)
+
+    def get_urn(self):
+        return 'urn:uuid:' + str(self)
+
+    urn = property(get_urn)
+
+    def get_variant(self):
+        if not self.int & (0x8000 << 48L):
+            return RESERVED_NCS
+        elif not self.int & (0x4000 << 48L):
+            return RFC_4122
+        elif not self.int & (0x2000 << 48L):
+            return RESERVED_MICROSOFT
+        else:
+            return RESERVED_FUTURE
+
+    variant = property(get_variant)
+
+    def get_version(self):
+        # The version bits are only meaningful for RFC 4122 UUIDs.
+        if self.variant == RFC_4122:
+            return int((self.int >> 76L) & 0xf)
+
+    version = property(get_version)
+
+def _ifconfig_getnode():
+    """Get the hardware address on Unix by running ifconfig."""
+    import os
+    for dir in ['', '/sbin/', '/usr/sbin']:
+        try:
+            pipe = os.popen(os.path.join(dir, 'ifconfig'))
+        except IOError:
+            continue
+        for line in pipe:
+            words = line.lower().split()
+            for i in range(len(words)):
+                if words[i] in ['hwaddr', 'ether']:
+                    return int(words[i + 1].replace(':', ''), 16)
+
+def _ipconfig_getnode():
+    """Get the hardware address on Windows by running ipconfig.exe."""
+    import os, re
+    dirs = ['', r'c:\windows\system32', r'c:\winnt\system32']
+    try:
+        import ctypes
+        buffer = ctypes.create_string_buffer(300)
+        ctypes.windll.kernel32.GetSystemDirectoryA(buffer, 300)
+        dirs.insert(0, buffer.value.decode('mbcs'))
+    except:
+        pass
+    for dir in dirs:
+        try:
+            pipe = os.popen(os.path.join(dir, 'ipconfig') + ' /all')
+        except IOError:
+            continue
+        for line in pipe:
+            value = line.split(':')[-1].strip().lower()
+            if re.match('([0-9a-f][0-9a-f]-){5}[0-9a-f][0-9a-f]', value):
+                return int(value.replace('-', ''), 16)
+
+def _netbios_getnode():
+    """Get the hardware address on Windows using NetBIOS calls.
+    See http://support.microsoft.com/kb/118623 for details."""
+    import win32wnet, netbios
+    ncb = netbios.NCB()
+    ncb.Command = netbios.NCBENUM
+    ncb.Buffer = adapters = netbios.LANA_ENUM()
+    adapters._pack()
+    if win32wnet.Netbios(ncb) != 0:
+        return
+    adapters._unpack()
+    for i in range(adapters.length):
+        ncb.Reset()
+        ncb.Command = netbios.NCBRESET
+        ncb.Lana_num = ord(adapters.lana[i])
+        if win32wnet.Netbios(ncb) != 0:
+            continue
+        ncb.Reset()
+        ncb.Command = netbios.NCBASTAT
+        ncb.Lana_num = ord(adapters.lana[i])
+        ncb.Callname = '*'.ljust(16)
+        ncb.Buffer = status = netbios.ADAPTER_STATUS()
+        if win32wnet.Netbios(ncb) != 0:
+            continue
+        status._unpack()
+        bytes = map(ord, status.adapter_address)
+        return ((bytes[0]<<40L) + (bytes[1]<<32L) + (bytes[2]<<24L) +
+                (bytes[3]<<16L) + (bytes[4]<<8L) + bytes[5])
+
+# Thanks to Thomas Heller for ctypes and for his help with its use here.
+
+# If ctypes is available, use it to find system routines for UUID generation.
+_uuid_generate_random = _uuid_generate_time = _UuidCreate = None
+try:
+    import ctypes, ctypes.util
+    _buffer = ctypes.create_string_buffer(16)
+
+    # The uuid_generate_* routines are provided by libuuid on at least
+    # Linux and FreeBSD, and provided by libc on Mac OS X.
+    for libname in ['uuid', 'c']:
+        try:
+            lib = ctypes.CDLL(ctypes.util.find_library(libname))
+        except:
+            continue
+        if hasattr(lib, 'uuid_generate_random'):
+            _uuid_generate_random = lib.uuid_generate_random
+        if hasattr(lib, 'uuid_generate_time'):
+            _uuid_generate_time = lib.uuid_generate_time
+
+    # On Windows prior to 2000, UuidCreate gives a UUID containing the
+    # hardware address.  On Windows 2000 and later, UuidCreate makes a
+    # random UUID and UuidCreateSequential gives a UUID containing the
+    # hardware address.  These routines are provided by the RPC runtime.
+    try:
+        lib = ctypes.windll.rpcrt4
+    except:
+        lib = None
+    _UuidCreate = getattr(lib, 'UuidCreateSequential',
+                          getattr(lib, 'UuidCreate', None))
+except:
+    pass
+
+def _unixdll_getnode():
+    """Get the hardware address on Unix using ctypes."""
+    _uuid_generate_time(_buffer)
+    return UUID(bytes=_buffer.raw).node
+
+def _windll_getnode():
+    """Get the hardware address on Windows using ctypes."""
+    if _UuidCreate(_buffer) == 0:
+        return UUID(bytes=_buffer.raw).node
+
+def _random_getnode():
+    """Get a random node ID, with eighth bit set as suggested by RFC 4122."""
+    import random
+    return random.randrange(0, 1<<48L) | 0x010000000000L
+
+_node = None
+
+def getnode():
+    """Get the hardware address as a 48-bit integer.  The first time this
+    runs, it may launch a separate program, which could be quite slow.  If
+    all attempts to obtain the hardware address fail, we choose a random
+    48-bit number with its eighth bit set to 1 as recommended in RFC 4122."""
+
+    global _node
+    if _node is not None:
+        return _node
+
+    import sys
+    if sys.platform == 'win32':
+        getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode]
+    else:
+        getters = [_unixdll_getnode, _ifconfig_getnode]
+
+    for getter in getters + [_random_getnode]:
+        try:
+            _node = getter()
+        except:
+            continue
+        if _node is not None:
+            return _node
+
+def uuid1(node=None, clock_seq=None):
+    """Generate a UUID from a host ID, sequence number, and the current time.
+    If 'node' is not given, getnode() is used to obtain the hardware
+    address.  If 'clock_seq' is given, it is used as the sequence number;
+    otherwise a random 14-bit sequence number is chosen."""
+
+    # When the system provides a version-1 UUID generator, use it (but don't
+    # use UuidCreate here because its UUIDs don't conform to RFC 4122).
+    if _uuid_generate_time and node is clock_seq is None:
+        _uuid_generate_time(_buffer)
+        return UUID(bytes=_buffer.raw)
+
+    import time
+    nanoseconds = int(time.time() * 1e9)
+    # 0x01b21dd213814000 is the number of 100-ns intervals between the
+    # UUID epoch 1582-10-15 00:00:00 and the Unix epoch 1970-01-01 00:00:00.
+    timestamp = int(nanoseconds/100) + 0x01b21dd213814000L
+    if clock_seq is None:
+        import random
+        clock_seq = random.randrange(1<<14L) # instead of stable storage
+    time_low = timestamp & 0xffffffffL
+    time_mid = (timestamp >> 32L) & 0xffffL
+    time_hi_version = (timestamp >> 48L) & 0x0fffL
+    clock_seq_low = clock_seq & 0xffL
+    clock_seq_hi_variant = (clock_seq >> 8L) & 0x3fL
+    if node is None:
+        node = getnode()
+    return UUID(fields=(time_low, time_mid, time_hi_version,
+                        clock_seq_hi_variant, clock_seq_low, node), version=1)
+
+def uuid3(namespace, name):
+    """Generate a UUID from the MD5 hash of a namespace UUID and a name."""
+    import md5
+    hash = md5.md5(namespace.bytes + name).digest()
+    return UUID(bytes=hash[:16], version=3)
+
+def uuid4():
+    """Generate a random UUID."""
+
+    # When the system provides a version-4 UUID generator, use it.
+    if _uuid_generate_random:
+        _uuid_generate_random(_buffer)
+        return UUID(bytes=_buffer.raw)
+
+    # Otherwise, get randomness from urandom or the 'random' module.
+    try:
+        import os
+        return UUID(bytes=os.urandom(16), version=4)
+    except:
+        import random
+        bytes = [chr(random.randrange(256)) for i in range(16)]
+        return UUID(bytes=bytes, version=4)
+
+def uuid5(namespace, name):
+    """Generate a UUID from the SHA-1 hash of a namespace UUID and a name."""
+    import sha
+    hash = sha.sha(namespace.bytes + name).digest()
+    return UUID(bytes=hash[:16], version=5)
+
+# The following standard UUIDs are for use with uuid3() or uuid5().
+
+NAMESPACE_DNS = UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
+NAMESPACE_URL = UUID('6ba7b811-9dad-11d1-80b4-00c04fd430c8')
+NAMESPACE_OID = UUID('6ba7b812-9dad-11d1-80b4-00c04fd430c8')
+NAMESPACE_X500 = UUID('6ba7b814-9dad-11d1-80b4-00c04fd430c8')

Modified: branches/RELENG_1_1/OpenRTM-aist-Python/installer/yat.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/installer/yat.py	2011-09-16 08:50:01 UTC (rev 477)
+++ branches/RELENG_1_1/OpenRTM-aist-Python/installer/yat.py	2011-09-16 09:37:35 UTC (rev 478)
@@ -1,835 +1,835 @@
-#!/usr/bin/env python
-#
-# @brief YAT: YAml Template text processor
-# @date $Date: 2008-02-09 20:04:27 $
-# @author Norkai Ando <n-ando at aist.go.jp>
-#
-# Copyright (C) 2008 Noriaki Ando, All rights reserved.
-#
-# $Id: yat.py 775 2008-07-28 16:14:45Z n-ando $
-#
-
-#
-# Usage:
-#------------------------------------------------------------
-# import yaml
-# import yat
-#
-# dict   = yaml.load(open(filename, "r").read())
-# t      = yat.Template(template, "\[", "\]")
-# result = t.generate(dict)
-#------------------------------------------------------------
-#
-# 1. Simple directive:
-#    [dictionary_key]
-#
-#    Nested dictionaries can be expressed by dotted expression.
-#
-# example:
-# dict = {"a": "This is a",
-#         "b": {"1": "This is b.1",
-#               "2": "This is b.2"}
-#        }
-#
-# template:
-# [a]
-#
-# [b.1]
-#
-# [b.2]
-#
-# result:
-# This is a
-# This is b.1
-# This is b.2
-#
-#
-# 2. "for" directive:
-#    [for key in list] statement [endfor]
-#
-#    Iterative evaluation for listed values is performed by "for" statement.
-#    In iteration at each evaluation, the value of the list is assigned to
-#    "key". The "key" also can be the nested dictionary directive.
-#
-# example:
-# dict = {"list": [0, 1, 2],
-#         "listed_dict": [
-#           {"name": "x", "value": "1.0"},
-#           {"name": "y", "value": "0.2"},
-#           {"name": "z", "value": "0.1"}]}
-#
-# template:
-# [for lst in list]
-# [lst],  
-# [endfor]
-# [for lst in listed_dict]
-# [lst.name]: [lst.value]
-# 
-# [endfor]
-#
-# result:
-# 1, 2, 3,
-# x: 1.0
-# y: 0.2
-# x: 0.1
-#
-#
-# 3. "if-index" directive:
-#    [for key in val]
-#    [if-index key is first|even|odd|last|NUMBER] statement1
-#    [elif-index key is first|even|odd|last|NUMBER] statement2
-#    [endif][endfor]
-#
-#    "if-index" is used to specify the index of the "for" iteration.
-#    The "key" string which is defined in the "for" statement is used as index.
-#    A number or predefined directives such as "first", "even", "odd" and
-#    "last" can be used to specify the index.
-#
-# example:
-# dict = {"list": [0,1,2,3,4,5,6,7,8,9,10]}
-#
-# template:
-# [for key in list]
-# [if-index key is 3] [key] is hoge!!
-# [elif-index key is 6] [key] is foo!!
-# [elif-index key is 9] [key] is bar!!
-# [elif-index key is first] [key] is first
-# [elif-index key is last] Omoro-------!!!!
-# [elif-index key is odd] [key] is odd number
-# [elif-index key is even] [key] is even number
-# [endif]
-# [endfor]
-#
-# result:
-#  0 is first
-#  1 is odd number
-#  2 is even number
-#  3 is hoge!!
-#  4 is even number
-#  5 is odd number
-#  6 is foo!!
-#  7 is odd number
-#  8 is even number
-#  9 is bar!!
-#  Omoro-------!!!!
-#
-#
-# 4. "if" directive: [if key is value] text1 [else] text2 [endif]
-#    If "key" is "value", "text1" appears, otherwise "text2" appears.
-#
-# example:
-# dict = {"key1": "a", "key2": "b"}
-#
-# template:
-# [if key1 is a]
-# The key1 is "a".
-# [else]
-# This key1 is not "a".
-# [endif]
-#
-# result:
-# The key1 is "a".
-#
-#
-# 5. "if-any" directive: [if-any key1] text1 [else] text2 [endif]
-#    If the "key1" exists in the dictionary, "text1" appears, otherwise
-#    "text2" appears.
-#
-# example:
-# dict = {"key1": "a", "key2": "b"}
-#
-# template:
-# [if-any key1]
-# key1 exists.
-# [endif][if-any key3]
-# key3 exists.
-# [else]
-# key3 does not exists.
-# [endif]
-#
-# result:
-# key1 exists.
-# key3 does not exists.
-#
-#
-# 6. bracket and comment:
-#    [[] is left bracket if begin mark is "["
-#    [# comment ] is comment if begin/end marks are "[" and "]"
-#
-# example:
-# dict = {}
-#
-# template:
-# [[]bracket]
-# [# comment]
-#
-# result:
-# [bracket]
-#
-import string
-import re
-from types import StringType, IntType, FloatType, DictType, ListType, ClassType
-import sys
-
-class Template:
-    """
-    usage:
-      tempalte_text = read template text from file
-      dictionary    = create dictionaly by using yaml
-      t = Template(tempalte_text)
-      generated_text = t.generate(dictionary)
-
-    """
-    
-    def __init__(self, template, begin_mark="\[", end_mark="\]"):
-        self.__procs = [self.__proc_text,
-                        self.__proc_cmd,
-                        self.__proc_bracket]
-        self.template = template
-
-        # regular expression to devide text into DIRECTIVE, BRACKET and COMMENT
-        #
-        # default:
-        # START_MARK: "["
-        # END_MARK  : "]"
-        # -> START_MARK and END_MARK can be given in ctor
-        #
-        # ITEM: (?:"(?:[^\\"]|\\.)*"|[-\w.]+)
-        # \[(ITEM(?: +ITEM)*)\]|(\[\[\])|\[#[^\]]*\]
-        # ~~~~~~~~(1)~~~~~~ ~~(2)~~~ ~~~(3)~~~~~
-        # (1) COMMAND  : '[' ITEM (whitespace ITEM)* ']
-        #     ITEM     : STRING | NAME
-        #     STRING   : '"' (not-slash-or-dquote | '\' anychar)* '"'
-        #     NAME     : (alphanum | '_' | '-' | '.')+
-        # (2) BEGIN_MARK_ESCAPE : '[[]'
-        # (3) COMMENT  : '[#' not-rbracket
-        #        
-        # re_item      = r'(?:"(?:[^\\"]|\\.)*"|[-\w.]+)'
-        # re_command   = r'\[(%s(?: +%s)*)\]' % (re_item, re_item)
-        # re_beginmark = r'\[\[\]'
-        # re_comment   = r'\[#[^\]]*\]'
-        # re_parse     = re.compile(r'%s|(%s)|%s' 
-        #                     % (re_command, re_beginmark, re_comment))
-        # re_args      = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.]+')
-        #
-        #
-        re_item      = r'(?:"(?:[^\\"]|\\.)*"|[-\w.:]+)'
-        re_command   = r'%s(%s(?: +%s)*)%s' % \
-            (begin_mark, re_item, re_item, end_mark)
-        re_bracket   = r'%s%s%s' % \
-            (begin_mark, begin_mark, end_mark)
-        re_comment   = r'%s#[^%s]*%s' % \
-            (begin_mark, end_mark, end_mark)
-        self.begin_mark = begin_mark.replace("\\","")
-        self.re_parse = re.compile(r'%s|(%s)|%s' % \
-                                       (re_command, re_bracket, re_comment))
-        self.re_args  = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.:]+')
-        self.re_number = re.compile(r'[0-9]+')
-
-        # tokenize input text
-        self.token = self.re_parse.split(self.template)
-        self.token_len  = len(self.token)
-        
-        # initialize variables
-        self.script = program
-        self.indent = 4
-        self.script_level  = 2
-        self.level = 0
-        self.index = 0
-        self.cmd_cxt = []
-
-        # parse token
-        self.__parse_template(self.token)
-
-        return
-
-    def generate(self, dict):
-        # eval generated script
-        exec(self.script)
-        # script includes Generator class
-        gen = Generator(self.token, dict)
-        # execute generated script
-        return gen.generate()
-
-    def get_script(self):
-        return self.script
-
-    def __push_level(self):
-        self.level += 1
-
-    def __pop_level(self):
-        self.level -= 1
-
-    def __write_cmd(self, cmd):
-        tmp_cmd  = self.__indent()
-        tmp_cmd += "self.set_index(%s)\n" % (self.index)
-        self.script += tmp_cmd
-        self.__write_cmd_noindex(cmd)
-
-    def __write_cmd_noindex(self, cmd):
-        tmp_cmd  = self.__indent()
-        tmp_cmd += cmd + "\n"
-        self.script += tmp_cmd
-
-    def __parse_template(self, dict):
-        try:
-            # split into (TEXT DIRECTIVE BRACKET)* TEXT
-            self.__parse()
-        except YATException, e:
-            self.__print_error(e)
-            sys.exit(-1)
-
-    def __indent(self):
-        indent = " " * ((self.script_level + self.level) * self.indent)
-        return indent
-
-    def __parse(self):
-        while self.index < self.token_len:
-            self.__procs[self.index % 3]()
-            self.index += 1
-
-    def __proc_text(self):
-        if self.token[self.index] == None:
-            return
-        cmd_text = "self.write_token(%s)" % (self.index)
-        self.__write_cmd(cmd_text)
-        return True
- 
-    def __proc_bracket(self):
-        if self.token[self.index] == None:
-            return
-        cmd_text = "self.write(\"" + self.begin_mark + "\")"
-        self.__write_cmd(cmd_text)
-        return True
-            
-    def __proc_cmd(self):
-        cmd = self.token[self.index]
-        try:
-            args = self.re_args.findall(cmd)
-        except:
-            return
-        self.del_nl_after_cmd()
-        argc = len(args)
-        if argc == 0:
-            raise InvalidDirective(self.lineno(), "_an empty directive_ ")
-
-        # simple directive
-        if argc == 1:
-            if   args[0] == "endfor":
-                self.__endfor_cmd(args)
-                return
-            elif args[0] == "else":
-                self.__else_cmd(args)
-                return
-            elif args[0] == "last":
-                self.__last_cmd(args)
-                return
-            elif args[0] == "endif":
-                self.__endif_cmd(args)
-                return
-            else:
-                self.__cmd(args)
-                return
-        elif argc == 2:
-            if args[0] == "if-any":
-                self.__if_any_cmd(args)
-                return
-        elif argc == 4: # [for key in value]
-            if args[0] == "for" and args[2] == "in":
-                self.__for_cmd(args)
-                return True
-            elif args[0] == "if" and args[2] == "is":
-                self.__if_cmd(args)
-            elif args[0] == "elif" and args[2] == "is":
-                self.__elif_cmd(args)
-            elif args[0] == "if-index" and args[2] == "is":
-                self.__if_index_cmd(args)
-            elif args[0] == "elif-index" and args[2] == "is":
-                self.__elif_index_cmd(args)
-            else:
-                raise InvalidDirective(self.lineno(), cmd)
-        else:
-            raise InvalidDirective(self.lineno(), cmd)
-        return True
-
-    def __cmd(self, args):
-        cmd_text = "self.write_dict(\"%s\")" % (args[0])
-        self.__write_cmd(cmd_text)
-
-    #------------------------------------------------------------
-    # [for] commands
-    # - for
-    # - last
-    # - endfor
-    #------------------------------------------------------------
-    def __for_cmd(self, args):
-        """
-        The following [for] directive
-          [for tmp_key in directive]
-        is converted into the following python command.
-          for i in len(directive):
-              self.dicts.append({tmp_key: ditective[i])
-        and, endfor directive terminate as the following,
-              self.dicts.pop()
-        """
-        key = args[1]
-        directive = args[3]
-        # (key)     : variable string of index variable for [for] block
-        # (key)_list: list value of specified directive
-        # (key)_len : length of the list
-        cmd_text = "%s_list = self.get_list(\"%s\")" % (key, directive)
-        self.__write_cmd(cmd_text)
-        cmd_text = "%s_len = len(%s_list)" % (key, key)
-        self.__write_cmd(cmd_text)
-        cmd_text = "for %s_index in range(len(%s_list)):" % (key, key)
-        self.__write_cmd(cmd_text)
-        self.__push_level()
-        cmd_text = "self.push_dict({\"%s\": %s_list[%s_index]})" \
-            % (key, key, key)
-        self.__write_cmd(cmd_text)
-        self.cmd_cxt.append("for")
-
-    def __endfor_cmd(self, args):
-        try:
-            cxt = self.cmd_cxt.pop()
-            if cxt != "for":
-                raise UnmatchedBlock(self.lineno(), "endfor")
-            self.__write_cmd("self.pop_dict()")
-            self.__pop_level()
-        except:
-            print args, self.lineno()
-            raise UnmatchedBlock(self.lineno(), "endfor")
-        return
-
-    # end of [for] commands
-    #------------------------------------------------------------
-
-    #------------------------------------------------------------
-    # [if] commands
-    # - if
-    # - if-index
-    # - if-any
-    #------------------------------------------------------------
-    def __if_cmd(self, args):
-        """
-        The following [if] directive
-          [if directive is string]
-        is converted into the following python command.
-          if self.__get_string() == "string":
-        """
-        directive = args[1]
-        string = args[3]
-        cmd_text = "if self.get_text(\"%s\") == \"%s\":" % \
-            (directive, string)
-        self.__write_cmd(cmd_text)
-        self.__push_level()
-        self.cmd_cxt.append("if")
-        return
-
-    def __elif_cmd(self, args):
-        if self.cmd_cxt[-1] != "if":
-            raise UnmatchedBlock(self.lineno(), "elif")
-        directive = args[1]
-        string = args[3]
-        cmd_text = "elif self.get_text(\"%s\") == \"%s\":" % \
-            (directive, string)
-        self.__pop_level()
-        self.__write_cmd_noindex(cmd_text)
-        self.__push_level()
-        return
-
-    # [if-index] commands
-    def __if_index_cmd(self, args):
-        # [if-index KEY is [first|even|odd|last|NUMBER]]
-        #  ~~~0~~~  ~1~  2 ~~~~~~~~~~~~~~3~~~~~~~~~~~~
-        cmdlist = {"first": "if %s_index == 0:",
-                   "even" : "if (%s_index %% 2) == 0:",
-                   "odd"  : "if (%s_index %% 2) != 0:",
-                   "last" : "if %s_index == %s_len - 1:"}
-        key = args[1]
-        cmd = args[3]
-        if len(self.re_number.findall(cmd)) == 1:
-            cmd_text = "if %s_index == %s:" % (key, cmd)
-        elif cmdlist.has_key(cmd):
-            if cmd == "last":
-                cmd_text = cmdlist[cmd] % (key,key)
-            else:
-                cmd_text = cmdlist[cmd] % (key)
-        else:
-            raise InvalidDirective(self.lineno(), ''.join(args))
-        self.__write_cmd(cmd_text)
-        self.__push_level()
-        self.cmd_cxt.append("if-index")
-
-    def __elif_index_cmd(self, args):
-        if self.cmd_cxt[-1] != "if-index":
-            raise UnmatchedBlock(self.lineno(), "elif-index")
-        # [elif-index KEY is [first|even|odd|last|NUMBER]]
-        #  ~~~0~~~  ~1~  2 ~~~~~~~~~~~~~~3~~~~~~~~~~~~
-        cmdlist = {"first": "elif %s_index == 0:",
-                   "even" : "elif (%s_index %% 2) == 0:",
-                   "odd"  : "elif (%s_index %% 2) != 0:",
-                   "last" : "elif %s_index == %s_len - 1:"}
-        key = args[1]
-        cmd = args[3]
-        if len(self.re_number.findall(cmd)) == 1:
-            cmd_text = "elif %s_index == %s:" % (key, cmd)
-        elif cmdlist.has_key(cmd):
-            if cmd == "last":
-                cmd_text = cmdlist[cmd] % (key,key)
-            else:
-                cmd_text = cmdlist[cmd] % (key)
-        else:
-            raise InvalidDirective(self.lineno(), ' '.join(args))
-        self.__pop_level()
-        self.__write_cmd_noindex(cmd_text)
-        self.__push_level()
-
-    # [if-any] command
-    def __if_any_cmd(self, args):
-        directive = args[1]
-        cmd_text = "if self.has_key(\"%s\"):" % (directive)
-        self.__write_cmd(cmd_text)
-        self.__push_level()
-        self.cmd_cxt.append("if-any")
-        return
-
-    def __elif_any_cmd(self, args):
-        if self.cmd_cxt[-1] != "if-any":
-            raise UnmatchedBlock(self.lineno(), "elif-any")
-        directive = args[1]
-        cmd_text = "if self.has_key(\"%s\"):" % (directive)
-        self.__pop_level()
-        self.__write_cmd_noindex(cmd_text)
-        self.__push_level()
-        return
-
-    # [else], [endif] commands
-    def __else_cmd(self, args):
-        if self.cmd_cxt[-1] != "if" and self.cmd_cxt[-1] != "if-index" \
-                and self.cmd_cxt[-1] != "if-any":
-            raise UnmatchedBlock(self.lineno(), "else")
-        self.__pop_level()
-        self.__write_cmd_noindex("else:")
-        self.__push_level()
-        return
-
-    def __endif_cmd(self, args):
-        if self.cmd_cxt[-1] != "if" and self.cmd_cxt[-1] != "if-index" \
-                and self.cmd_cxt[-1] != "if-any":
-            raise UnmatchedBlock(self.lineno(), "endif")
-        self.cmd_cxt.pop()
-        self.__pop_level()
-        return
-    # end of [if] commands
-    #------------------------------------------------------------
-
-    def __print_error(self, e):
-        print "Parse Error: line", e.lineno, "in input data"
-        print "  " + ''.join(nesteditem(e.value))
-        lines = self.template.split("\n")
-        length = len(lines)
-        print "------------------------------------------------------------"
-        for i in range(1,10):
-            l = e.lineno - 6 + i
-            if l > 0 and l < length:
-                print lines[l]
-                if i == 5:
-                    uline = '~'*len(lines[l])
-                    print uline
-        print "------------------------------------------------------------"
-    
-    def del_nl_after_cmd(self):
-        # next text index after command
-        next = self.index + 2
-        if next > self.token_len: return
-        if self.token[next] == None: return
-        text = self.token[next]
-        tlen = len(text)
-        if tlen > 0 and text[0] == '\n':
-            self.token[next] = text[1:]
-            return
-        elif tlen > 0 and text[0] == '\r':
-            self.token[next] = text[1:]
-            return
-        elif tlen > 1 and text[0:2] == '\r\n':
-            self.token[next] = text[2:]
-
-    def lineno(self):
-        l = 1
-        for i in range(self.index):
-            if isinstance(self.token[i], StringType):
-                l += self.token[i].count('\n')
-        for i in range(1, self.index, 3):
-            l += 1
-        return l
-
-
-#------------------------------------------------------------
-# Generator and GeneratorBase classes
-#------------------------------------------------------------
-program = """
-class Generator(GeneratorBase):
-    def __init__(self, token, dict):
-        GeneratorBase.__init__(self, token, dict)
-    def generate(self):
-        try:
-            self.process()
-        except YATException, e:
-            self.print_error(e)
-            sys.exit(-1)
-        return self.text
-
-    def process(self):
-"""
-
-class GeneratorBase:
-    def __init__(self, token, dict):
-        self.token = token
-        self.dicts = [dict]
-        self.index = 0
-        self.text = ""
-
-    def print_error(self, e):
-        print "\nTemplate Generation Error: line", e.lineno, "in input data"
-        print "  " + ''.join(nesteditem(e.value))
-        temp = ""
-        for i, s in enumerate(self.token):
-            if s != None:
-                if i % 3 == 1:
-                    temp += "[" + s + "]\n"
-                else:
-                    temp += s
-        lines = temp.split("\n")
-        length = len(lines)
-        print "------------------------------------------------------------"
-        for i in range(1,10):
-            l = e.lineno - 6 + i
-            if l > 0 and l < length:
-                print lines[l]
-                if i == 5:
-                    uline = '~'*len(lines[l])
-                    print uline
-        print "------------------------------------------------------------"
-        
-    def set_index(self, index):
-        self.index = index
-
-    def push_dict(self, dict):
-        self.dicts.append(dict)
-
-    def pop_dict(self):
-        if len(self.dicts) < 2:
-            raise UnmatchedBlock(self.lineno(), "")
-        self.dicts.pop()
-
-    def write(self, text):
-        self.text += text
-
-    def write_dict(self, keytext):
-        self.write(self.get_text(keytext))
-
-    def write_token(self, index):
-        self.write(self.token[index])
-
-    def lineno(self):
-        cnt = 1
-        for i in range(0, self.index, 3):
-            if self.token[i] != None:
-                cnt += self.token[i].count('\n')
-        # count deleted '\n' after commands
-        for i in range(1, self.index, 3):
-            if self.token[i] != None:
-                cnt += 1
-        return cnt
-                                
-    def get_text(self, keytext):
-        val = self.get_value(keytext)
-        if isinstance(val, StringType):
-            return val
-        if isinstance(val, IntType) or isinstance(val, FloatType):
-            return str(val)
-        raise UnexpectedData(self.lineno(), "\"" + keytext + \
-                                 "\" should have string, int or float value.")
-
-    def get_list(self, keytext):
-        val = self.get_value(keytext)
-        if not isinstance(val, ListType):
-            raise UnexpectedData(self.lineno(),
-                                 "\"" + keytext + "\" should have list value.")
-        return val
-
-    def has_key(self, keytext):
-        try:
-            self.get_value(keytext)
-            return True
-        except NotFound, e:
-            return False
-
-    def get_value(self, keytext):
-        keys = keytext.split('.')
-        for i in range(len(self.dicts) - 1, -1, -1):
-            dict_value = self.get_dict_value(keys, self.dicts[i])
-            if dict_value != None:
-                return dict_value
-        raise NotFound(self.lineno(), keytext) 
-
-    def get_dict_value(self, keys, dict):
-        length = len(keys)
-        d = dict
-        for i in range(length):
-            if isinstance(d, DictType) and d.has_key(keys[i]):
-                d = d[keys[i]]
-            else:
-                return None
-        return d
-
-
-#------------------------------------------------------------
-# Exceptions                                
-#------------------------------------------------------------
-class YATException(Exception):
-    pass
-
-class UnknownError(YATException):
-    def __init__(self, lineno):
-        self.lineno = lineno
-        self.value = "Unknown error."
-
-class UnmatchedBlock(YATException):
-    def __init__(self, lineno, msg):
-        self.lineno = lineno
-        self.value = "Unmatched block error: " + msg
-
-class UnexpectedData(YATException):
-    def __init__(self, lineno, msg):
-        self.lineno = lineno
-        self.value = msg
-
-class NotFinalElement(YATException):
-    def __init__(self, dictkey, dictvalue):
-        self.value = "Specified key is not final element: ",\
-            dictkey, "=>", dictvalue
-
-class InvalidDirective(YATException):
-    def __init__(self, lineno, directive):
-        self.lineno = lineno
-        self.value = "Invalid directive: \"[" + directive + "]\""
-
-class UnmatchedData(YATException):
-    def __init__(self, lineno, description):
-        self.lineno = lineno
-        self.value = "Unmatched data and input: ", description
-
-class NotFound(YATException):
-    def __init__(self, lineno, description):
-        self.lineno = lineno
-        self.value = "Value not found for: \"" + description + "\""
-
-#------------------------------------------------------------
-# other functions
-#------------------------------------------------------------
-def nesteditem(aList):
-    for anItem in aList:
-        if type(anItem)==list:
-            for subitem in nesteditem(anItem):
-                yield subitem
-        else:
-            yield anItem
-
-
-
-if __name__ == "__main__":
-    dict = []
-    template = []
-    #------------------------------------------------------------
-    # Example 0
-    #------------------------------------------------------------
-    dict.append({"a": "This is a",
-                 "b": {"1": "This is b.1",
-                       "2": "This is b.2"}
-                 })
-    template.append("""[a]
-
-[b.1]
-
-[b.2]""")
-
-    #------------------------------------------------------------
-    # Example 1
-    #------------------------------------------------------------
-    dict.append({"list": [0, 1, 2],
-                 "listed_dict": [
-                {"name": "x", "value": "1.0"},
-                {"name": "y", "value": "0.2"},
-                {"name": "z", "value": "0.1"}]})
-    template.append("""[for lst in list]
-[lst],  
-[endfor]
-[for lst in listed_dict]
-[lst.name]: [lst.value]
-
-[endfor]""")
-
-    #------------------------------------------------------------
-    # Example 2
-    #------------------------------------------------------------
-    dict.append({"list": [0,1,2,3,4,5,6,7,8,9,10]})
-    template.append("""[for key in list]
-[if-index key is 3] [key] is hoge!!
-[elif-index key is 6] [key] is foo!!
-[elif-index key is 9] [key] is bar!!
-[elif-index key is first] [key] is first
-[elif-index key is last] Omoro-------!!!!
-[elif-index key is odd] [key] is odd number
-[elif-index key is even] [key] is even number
-[endif]
-[endfor]""")
-
-    #------------------------------------------------------------
-    # Example 3
-    #------------------------------------------------------------
-    dict.append({"key1": "a", "key2": "b"})
-    template.append("""[if key1 is a]
-The key1 is "a".
-[else]
-This key1 is not "a".
-[endif]""")
-
-    #------------------------------------------------------------
-    # Example 4
-    #------------------------------------------------------------
-    dict.append({"key1": "a", "key2": "b"})
-    template.append("""[if-any key1]
-key1 exists.
-[endif][if-any key3]
-key3 exists.
-[else]
-key3 does not exists.
-[endif]""")
-
-    dict.append({})
-    template.append("""
-[[]bracket]
-[# comment]
-""")
-
-    import yaml
-    if len(dict) == len(template):
-        for i in range(len(dict)-1,len(dict)):
-            t = Template(template[i])
-            print "-" * 60
-            print "Example:", i
-            print "-" * 60
-            print "Template:\n"
-            print template[i]
-            print "-" * 60
-            print "Dictionary:\n"
-            print yaml.dump(dict[i], default_flow_style=False)
-            print "-" * 60
-            print "Generated Script:\n"
-            print t.get_script()
-            print "-" * 60
-            print "Generated Text:\n"
-            print t.generate(dict[i])
-            print ""
+#!/usr/bin/env python
+#
+# @brief YAT: YAml Template text processor
+# @date $Date: 2008-02-09 20:04:27 $
+# @author Norkai Ando <n-ando at aist.go.jp>
+#
+# Copyright (C) 2008 Noriaki Ando, All rights reserved.
+#
+# $Id: yat.py 775 2008-07-28 16:14:45Z n-ando $
+#
+
+#
+# Usage:
+#------------------------------------------------------------
+# import yaml
+# import yat
+#
+# dict   = yaml.load(open(filename, "r").read())
+# t      = yat.Template(template, "\[", "\]")
+# result = t.generate(dict)
+#------------------------------------------------------------
+#
+# 1. Simple directive:
+#    [dictionary_key]
+#
+#    Nested dictionaries can be expressed by dotted expression.
+#
+# example:
+# dict = {"a": "This is a",
+#         "b": {"1": "This is b.1",
+#               "2": "This is b.2"}
+#        }
+#
+# template:
+# [a]
+#
+# [b.1]
+#
+# [b.2]
+#
+# result:
+# This is a
+# This is b.1
+# This is b.2
+#
+#
+# 2. "for" directive:
+#    [for key in list] statement [endfor]
+#
+#    Iterative evaluation for listed values is performed by "for" statement.
+#    In iteration at each evaluation, the value of the list is assigned to
+#    "key". The "key" also can be the nested dictionary directive.
+#
+# example:
+# dict = {"list": [0, 1, 2],
+#         "listed_dict": [
+#           {"name": "x", "value": "1.0"},
+#           {"name": "y", "value": "0.2"},
+#           {"name": "z", "value": "0.1"}]}
+#
+# template:
+# [for lst in list]
+# [lst],  
+# [endfor]
+# [for lst in listed_dict]
+# [lst.name]: [lst.value]
+# 
+# [endfor]
+#
+# result:
+# 1, 2, 3,
+# x: 1.0
+# y: 0.2
+# x: 0.1
+#
+#
+# 3. "if-index" directive:
+#    [for key in val]
+#    [if-index key is first|even|odd|last|NUMBER] statement1
+#    [elif-index key is first|even|odd|last|NUMBER] statement2
+#    [endif][endfor]
+#
+#    "if-index" is used to specify the index of the "for" iteration.
+#    The "key" string which is defined in the "for" statement is used as index.
+#    A number or predefined directives such as "first", "even", "odd" and
+#    "last" can be used to specify the index.
+#
+# example:
+# dict = {"list": [0,1,2,3,4,5,6,7,8,9,10]}
+#
+# template:
+# [for key in list]
+# [if-index key is 3] [key] is hoge!!
+# [elif-index key is 6] [key] is foo!!
+# [elif-index key is 9] [key] is bar!!
+# [elif-index key is first] [key] is first
+# [elif-index key is last] Omoro-------!!!!
+# [elif-index key is odd] [key] is odd number
+# [elif-index key is even] [key] is even number
+# [endif]
+# [endfor]
+#
+# result:
+#  0 is first
+#  1 is odd number
+#  2 is even number
+#  3 is hoge!!
+#  4 is even number
+#  5 is odd number
+#  6 is foo!!
+#  7 is odd number
+#  8 is even number
+#  9 is bar!!
+#  Omoro-------!!!!
+#
+#
+# 4. "if" directive: [if key is value] text1 [else] text2 [endif]
+#    If "key" is "value", "text1" appears, otherwise "text2" appears.
+#
+# example:
+# dict = {"key1": "a", "key2": "b"}
+#
+# template:
+# [if key1 is a]
+# The key1 is "a".
+# [else]
+# This key1 is not "a".
+# [endif]
+#
+# result:
+# The key1 is "a".
+#
+#
+# 5. "if-any" directive: [if-any key1] text1 [else] text2 [endif]
+#    If the "key1" exists in the dictionary, "text1" appears, otherwise
+#    "text2" appears.
+#
+# example:
+# dict = {"key1": "a", "key2": "b"}
+#
+# template:
+# [if-any key1]
+# key1 exists.
+# [endif][if-any key3]
+# key3 exists.
+# [else]
+# key3 does not exists.
+# [endif]
+#
+# result:
+# key1 exists.
+# key3 does not exists.
+#
+#
+# 6. bracket and comment:
+#    [[] is left bracket if begin mark is "["
+#    [# comment ] is comment if begin/end marks are "[" and "]"
+#
+# example:
+# dict = {}
+#
+# template:
+# [[]bracket]
+# [# comment]
+#
+# result:
+# [bracket]
+#
+import string
+import re
+from types import StringType, IntType, FloatType, DictType, ListType, ClassType
+import sys
+
+class Template:
+    """
+    usage:
+      tempalte_text = read template text from file
+      dictionary    = create dictionaly by using yaml
+      t = Template(tempalte_text)
+      generated_text = t.generate(dictionary)
+
+    """
+    
+    def __init__(self, template, begin_mark="\[", end_mark="\]"):
+        self.__procs = [self.__proc_text,
+                        self.__proc_cmd,
+                        self.__proc_bracket]
+        self.template = template
+
+        # regular expression to devide text into DIRECTIVE, BRACKET and COMMENT
+        #
+        # default:
+        # START_MARK: "["
+        # END_MARK  : "]"
+        # -> START_MARK and END_MARK can be given in ctor
+        #
+        # ITEM: (?:"(?:[^\\"]|\\.)*"|[-\w.]+)
+        # \[(ITEM(?: +ITEM)*)\]|(\[\[\])|\[#[^\]]*\]
+        # ~~~~~~~~(1)~~~~~~ ~~(2)~~~ ~~~(3)~~~~~
+        # (1) COMMAND  : '[' ITEM (whitespace ITEM)* ']
+        #     ITEM     : STRING | NAME
+        #     STRING   : '"' (not-slash-or-dquote | '\' anychar)* '"'
+        #     NAME     : (alphanum | '_' | '-' | '.')+
+        # (2) BEGIN_MARK_ESCAPE : '[[]'
+        # (3) COMMENT  : '[#' not-rbracket
+        #        
+        # re_item      = r'(?:"(?:[^\\"]|\\.)*"|[-\w.]+)'
+        # re_command   = r'\[(%s(?: +%s)*)\]' % (re_item, re_item)
+        # re_beginmark = r'\[\[\]'
+        # re_comment   = r'\[#[^\]]*\]'
+        # re_parse     = re.compile(r'%s|(%s)|%s' 
+        #                     % (re_command, re_beginmark, re_comment))
+        # re_args      = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.]+')
+        #
+        #
+        re_item      = r'(?:"(?:[^\\"]|\\.)*"|[-\w.:]+)'
+        re_command   = r'%s(%s(?: +%s)*)%s' % \
+            (begin_mark, re_item, re_item, end_mark)
+        re_bracket   = r'%s%s%s' % \
+            (begin_mark, begin_mark, end_mark)
+        re_comment   = r'%s#[^%s]*%s' % \
+            (begin_mark, end_mark, end_mark)
+        self.begin_mark = begin_mark.replace("\\","")
+        self.re_parse = re.compile(r'%s|(%s)|%s' % \
+                                       (re_command, re_bracket, re_comment))
+        self.re_args  = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.:]+')
+        self.re_number = re.compile(r'[0-9]+')
+
+        # tokenize input text
+        self.token = self.re_parse.split(self.template)
+        self.token_len  = len(self.token)
+        
+        # initialize variables
+        self.script = program
+        self.indent = 4
+        self.script_level  = 2
+        self.level = 0
+        self.index = 0
+        self.cmd_cxt = []
+
+        # parse token
+        self.__parse_template(self.token)
+
+        return
+
+    def generate(self, dict):
+        # eval generated script
+        exec(self.script)
+        # script includes Generator class
+        gen = Generator(self.token, dict)
+        # execute generated script
+        return gen.generate()
+
+    def get_script(self):
+        return self.script
+
+    def __push_level(self):
+        self.level += 1
+
+    def __pop_level(self):
+        self.level -= 1
+
+    def __write_cmd(self, cmd):
+        tmp_cmd  = self.__indent()
+        tmp_cmd += "self.set_index(%s)\n" % (self.index)
+        self.script += tmp_cmd
+        self.__write_cmd_noindex(cmd)
+
+    def __write_cmd_noindex(self, cmd):
+        tmp_cmd  = self.__indent()
+        tmp_cmd += cmd + "\n"
+        self.script += tmp_cmd
+
+    def __parse_template(self, dict):
+        try:
+            # split into (TEXT DIRECTIVE BRACKET)* TEXT
+            self.__parse()
+        except YATException, e:
+            self.__print_error(e)
+            sys.exit(-1)
+
+    def __indent(self):
+        indent = " " * ((self.script_level + self.level) * self.indent)
+        return indent
+
+    def __parse(self):
+        while self.index < self.token_len:
+            self.__procs[self.index % 3]()
+            self.index += 1
+
+    def __proc_text(self):
+        if self.token[self.index] == None:
+            return
+        cmd_text = "self.write_token(%s)" % (self.index)
+        self.__write_cmd(cmd_text)
+        return True
+ 
+    def __proc_bracket(self):
+        if self.token[self.index] == None:
+            return
+        cmd_text = "self.write(\"" + self.begin_mark + "\")"
+        self.__write_cmd(cmd_text)
+        return True
+            
+    def __proc_cmd(self):
+        cmd = self.token[self.index]
+        try:
+            args = self.re_args.findall(cmd)
+        except:
+            return
+        self.del_nl_after_cmd()
+        argc = len(args)
+        if argc == 0:
+            raise InvalidDirective(self.lineno(), "_an empty directive_ ")
+
+        # simple directive
+        if argc == 1:
+            if   args[0] == "endfor":
+                self.__endfor_cmd(args)
+                return
+            elif args[0] == "else":
+                self.__else_cmd(args)
+                return
+            elif args[0] == "last":
+                self.__last_cmd(args)
+                return
+            elif args[0] == "endif":
+                self.__endif_cmd(args)
+                return
+            else:
+                self.__cmd(args)
+                return
+        elif argc == 2:
+            if args[0] == "if-any":
+                self.__if_any_cmd(args)
+                return
+        elif argc == 4: # [for key in value]
+            if args[0] == "for" and args[2] == "in":
+                self.__for_cmd(args)
+                return True
+            elif args[0] == "if" and args[2] == "is":
+                self.__if_cmd(args)
+            elif args[0] == "elif" and args[2] == "is":
+                self.__elif_cmd(args)
+            elif args[0] == "if-index" and args[2] == "is":
+                self.__if_index_cmd(args)
+            elif args[0] == "elif-index" and args[2] == "is":
+                self.__elif_index_cmd(args)
+            else:
+                raise InvalidDirective(self.lineno(), cmd)
+        else:
+            raise InvalidDirective(self.lineno(), cmd)
+        return True
+
+    def __cmd(self, args):
+        cmd_text = "self.write_dict(\"%s\")" % (args[0])
+        self.__write_cmd(cmd_text)
+
+    #------------------------------------------------------------
+    # [for] commands
+    # - for
+    # - last
+    # - endfor
+    #------------------------------------------------------------
+    def __for_cmd(self, args):
+        """
+        The following [for] directive
+          [for tmp_key in directive]
+        is converted into the following python command.
+          for i in len(directive):
+              self.dicts.append({tmp_key: ditective[i])
+        and, endfor directive terminate as the following,
+              self.dicts.pop()
+        """
+        key = args[1]
+        directive = args[3]
+        # (key)     : variable string of index variable for [for] block
+        # (key)_list: list value of specified directive
+        # (key)_len : length of the list
+        cmd_text = "%s_list = self.get_list(\"%s\")" % (key, directive)
+        self.__write_cmd(cmd_text)
+        cmd_text = "%s_len = len(%s_list)" % (key, key)
+        self.__write_cmd(cmd_text)
+        cmd_text = "for %s_index in range(len(%s_list)):" % (key, key)
+        self.__write_cmd(cmd_text)
+        self.__push_level()
+        cmd_text = "self.push_dict({\"%s\": %s_list[%s_index]})" \
+            % (key, key, key)
+        self.__write_cmd(cmd_text)
+        self.cmd_cxt.append("for")
+
+    def __endfor_cmd(self, args):
+        try:
+            cxt = self.cmd_cxt.pop()
+            if cxt != "for":
+                raise UnmatchedBlock(self.lineno(), "endfor")
+            self.__write_cmd("self.pop_dict()")
+            self.__pop_level()
+        except:
+            print args, self.lineno()
+            raise UnmatchedBlock(self.lineno(), "endfor")
+        return
+
+    # end of [for] commands
+    #------------------------------------------------------------
+
+    #------------------------------------------------------------
+    # [if] commands
+    # - if
+    # - if-index
+    # - if-any
+    #------------------------------------------------------------
+    def __if_cmd(self, args):
+        """
+        The following [if] directive
+          [if directive is string]
+        is converted into the following python command.
+          if self.__get_string() == "string":
+        """
+        directive = args[1]
+        string = args[3]
+        cmd_text = "if self.get_text(\"%s\") == \"%s\":" % \
+            (directive, string)
+        self.__write_cmd(cmd_text)
+        self.__push_level()
+        self.cmd_cxt.append("if")
+        return
+
+    def __elif_cmd(self, args):
+        if self.cmd_cxt[-1] != "if":
+            raise UnmatchedBlock(self.lineno(), "elif")
+        directive = args[1]
+        string = args[3]
+        cmd_text = "elif self.get_text(\"%s\") == \"%s\":" % \
+            (directive, string)
+        self.__pop_level()
+        self.__write_cmd_noindex(cmd_text)
+        self.__push_level()
+        return
+
+    # [if-index] commands
+    def __if_index_cmd(self, args):
+        # [if-index KEY is [first|even|odd|last|NUMBER]]
+        #  ~~~0~~~  ~1~  2 ~~~~~~~~~~~~~~3~~~~~~~~~~~~
+        cmdlist = {"first": "if %s_index == 0:",
+                   "even" : "if (%s_index %% 2) == 0:",
+                   "odd"  : "if (%s_index %% 2) != 0:",
+                   "last" : "if %s_index == %s_len - 1:"}
+        key = args[1]
+        cmd = args[3]
+        if len(self.re_number.findall(cmd)) == 1:
+            cmd_text = "if %s_index == %s:" % (key, cmd)
+        elif cmdlist.has_key(cmd):
+            if cmd == "last":
+                cmd_text = cmdlist[cmd] % (key,key)
+            else:
+                cmd_text = cmdlist[cmd] % (key)
+        else:
+            raise InvalidDirective(self.lineno(), ''.join(args))
+        self.__write_cmd(cmd_text)
+        self.__push_level()
+        self.cmd_cxt.append("if-index")
+
+    def __elif_index_cmd(self, args):
+        if self.cmd_cxt[-1] != "if-index":
+            raise UnmatchedBlock(self.lineno(), "elif-index")
+        # [elif-index KEY is [first|even|odd|last|NUMBER]]
+        #  ~~~0~~~  ~1~  2 ~~~~~~~~~~~~~~3~~~~~~~~~~~~
+        cmdlist = {"first": "elif %s_index == 0:",
+                   "even" : "elif (%s_index %% 2) == 0:",
+                   "odd"  : "elif (%s_index %% 2) != 0:",
+                   "last" : "elif %s_index == %s_len - 1:"}
+        key = args[1]
+        cmd = args[3]
+        if len(self.re_number.findall(cmd)) == 1:
+            cmd_text = "elif %s_index == %s:" % (key, cmd)
+        elif cmdlist.has_key(cmd):
+            if cmd == "last":
+                cmd_text = cmdlist[cmd] % (key,key)
+            else:
+                cmd_text = cmdlist[cmd] % (key)
+        else:
+            raise InvalidDirective(self.lineno(), ' '.join(args))
+        self.__pop_level()
+        self.__write_cmd_noindex(cmd_text)
+        self.__push_level()
+
+    # [if-any] command
+    def __if_any_cmd(self, args):
+        directive = args[1]
+        cmd_text = "if self.has_key(\"%s\"):" % (directive)
+        self.__write_cmd(cmd_text)
+        self.__push_level()
+        self.cmd_cxt.append("if-any")
+        return
+
+    def __elif_any_cmd(self, args):
+        if self.cmd_cxt[-1] != "if-any":
+            raise UnmatchedBlock(self.lineno(), "elif-any")
+        directive = args[1]
+        cmd_text = "if self.has_key(\"%s\"):" % (directive)
+        self.__pop_level()
+        self.__write_cmd_noindex(cmd_text)
+        self.__push_level()
+        return
+
+    # [else], [endif] commands
+    def __else_cmd(self, args):
+        if self.cmd_cxt[-1] != "if" and self.cmd_cxt[-1] != "if-index" \
+                and self.cmd_cxt[-1] != "if-any":
+            raise UnmatchedBlock(self.lineno(), "else")
+        self.__pop_level()
+        self.__write_cmd_noindex("else:")
+        self.__push_level()
+        return
+
+    def __endif_cmd(self, args):
+        if self.cmd_cxt[-1] != "if" and self.cmd_cxt[-1] != "if-index" \
+                and self.cmd_cxt[-1] != "if-any":
+            raise UnmatchedBlock(self.lineno(), "endif")
+        self.cmd_cxt.pop()
+        self.__pop_level()
+        return
+    # end of [if] commands
+    #------------------------------------------------------------
+
+    def __print_error(self, e):
+        print "Parse Error: line", e.lineno, "in input data"
+        print "  " + ''.join(nesteditem(e.value))
+        lines = self.template.split("\n")
+        length = len(lines)
+        print "------------------------------------------------------------"
+        for i in range(1,10):
+            l = e.lineno - 6 + i
+            if l > 0 and l < length:
+                print lines[l]
+                if i == 5:
+                    uline = '~'*len(lines[l])
+                    print uline
+        print "------------------------------------------------------------"
+    
+    def del_nl_after_cmd(self):
+        # next text index after command
+        next = self.index + 2
+        if next > self.token_len: return
+        if self.token[next] == None: return
+        text = self.token[next]
+        tlen = len(text)
+        if tlen > 0 and text[0] == '\n':
+            self.token[next] = text[1:]
+            return
+        elif tlen > 0 and text[0] == '\r':
+            self.token[next] = text[1:]
+            return
+        elif tlen > 1 and text[0:2] == '\r\n':
+            self.token[next] = text[2:]
+
+    def lineno(self):
+        l = 1
+        for i in range(self.index):
+            if isinstance(self.token[i], StringType):
+                l += self.token[i].count('\n')
+        for i in range(1, self.index, 3):
+            l += 1
+        return l
+
+
+#------------------------------------------------------------
+# Generator and GeneratorBase classes
+#------------------------------------------------------------
+program = """
+class Generator(GeneratorBase):
+    def __init__(self, token, dict):
+        GeneratorBase.__init__(self, token, dict)
+    def generate(self):
+        try:
+            self.process()
+        except YATException, e:
+            self.print_error(e)
+            sys.exit(-1)
+        return self.text
+
+    def process(self):
+"""
+
+class GeneratorBase:
+    def __init__(self, token, dict):
+        self.token = token
+        self.dicts = [dict]
+        self.index = 0
+        self.text = ""
+
+    def print_error(self, e):
+        print "\nTemplate Generation Error: line", e.lineno, "in input data"
+        print "  " + ''.join(nesteditem(e.value))
+        temp = ""
+        for i, s in enumerate(self.token):
+            if s != None:
+                if i % 3 == 1:
+                    temp += "[" + s + "]\n"
+                else:
+                    temp += s
+        lines = temp.split("\n")
+        length = len(lines)
+        print "------------------------------------------------------------"
+        for i in range(1,10):
+            l = e.lineno - 6 + i
+            if l > 0 and l < length:
+                print lines[l]
+                if i == 5:
+                    uline = '~'*len(lines[l])
+                    print uline
+        print "------------------------------------------------------------"
+        
+    def set_index(self, index):
+        self.index = index
+
+    def push_dict(self, dict):
+        self.dicts.append(dict)
+
+    def pop_dict(self):
+        if len(self.dicts) < 2:
+            raise UnmatchedBlock(self.lineno(), "")
+        self.dicts.pop()
+
+    def write(self, text):
+        self.text += text
+
+    def write_dict(self, keytext):
+        self.write(self.get_text(keytext))
+
+    def write_token(self, index):
+        self.write(self.token[index])
+
+    def lineno(self):
+        cnt = 1
+        for i in range(0, self.index, 3):
+            if self.token[i] != None:
+                cnt += self.token[i].count('\n')
+        # count deleted '\n' after commands
+        for i in range(1, self.index, 3):
+            if self.token[i] != None:
+                cnt += 1
+        return cnt
+                                
+    def get_text(self, keytext):
+        val = self.get_value(keytext)
+        if isinstance(val, StringType):
+            return val
+        if isinstance(val, IntType) or isinstance(val, FloatType):
+            return str(val)
+        raise UnexpectedData(self.lineno(), "\"" + keytext + \
+                                 "\" should have string, int or float value.")
+
+    def get_list(self, keytext):
+        val = self.get_value(keytext)
+        if not isinstance(val, ListType):
+            raise UnexpectedData(self.lineno(),
+                                 "\"" + keytext + "\" should have list value.")
+        return val
+
+    def has_key(self, keytext):
+        try:
+            self.get_value(keytext)
+            return True
+        except NotFound, e:
+            return False
+
+    def get_value(self, keytext):
+        keys = keytext.split('.')
+        for i in range(len(self.dicts) - 1, -1, -1):
+            dict_value = self.get_dict_value(keys, self.dicts[i])
+            if dict_value != None:
+                return dict_value
+        raise NotFound(self.lineno(), keytext) 
+
+    def get_dict_value(self, keys, dict):
+        length = len(keys)
+        d = dict
+        for i in range(length):
+            if isinstance(d, DictType) and d.has_key(keys[i]):
+                d = d[keys[i]]
+            else:
+                return None
+        return d
+
+
+#------------------------------------------------------------
+# Exceptions                                
+#------------------------------------------------------------
+class YATException(Exception):
+    pass
+
+class UnknownError(YATException):
+    def __init__(self, lineno):
+        self.lineno = lineno
+        self.value = "Unknown error."
+
+class UnmatchedBlock(YATException):
+    def __init__(self, lineno, msg):
+        self.lineno = lineno
+        self.value = "Unmatched block error: " + msg
+
+class UnexpectedData(YATException):
+    def __init__(self, lineno, msg):
+        self.lineno = lineno
+        self.value = msg
+
+class NotFinalElement(YATException):
+    def __init__(self, dictkey, dictvalue):
+        self.value = "Specified key is not final element: ",\
+            dictkey, "=>", dictvalue
+
+class InvalidDirective(YATException):
+    def __init__(self, lineno, directive):
+        self.lineno = lineno
+        self.value = "Invalid directive: \"[" + directive + "]\""
+
+class UnmatchedData(YATException):
+    def __init__(self, lineno, description):
+        self.lineno = lineno
+        self.value = "Unmatched data and input: ", description
+
+class NotFound(YATException):
+    def __init__(self, lineno, description):
+        self.lineno = lineno
+        self.value = "Value not found for: \"" + description + "\""
+
+#------------------------------------------------------------
+# other functions
+#------------------------------------------------------------
+def nesteditem(aList):
+    for anItem in aList:
+        if type(anItem)==list:
+            for subitem in nesteditem(anItem):
+                yield subitem
+        else:
+            yield anItem
+
+
+
+if __name__ == "__main__":
+    dict = []
+    template = []
+    #------------------------------------------------------------
+    # Example 0
+    #------------------------------------------------------------
+    dict.append({"a": "This is a",
+                 "b": {"1": "This is b.1",
+                       "2": "This is b.2"}
+                 })
+    template.append("""[a]
+
+[b.1]
+
+[b.2]""")
+
+    #------------------------------------------------------------
+    # Example 1
+    #------------------------------------------------------------
+    dict.append({"list": [0, 1, 2],
+                 "listed_dict": [
+                {"name": "x", "value": "1.0"},
+                {"name": "y", "value": "0.2"},
+                {"name": "z", "value": "0.1"}]})
+    template.append("""[for lst in list]
+[lst],  
+[endfor]
+[for lst in listed_dict]
+[lst.name]: [lst.value]
+
+[endfor]""")
+
+    #------------------------------------------------------------
+    # Example 2
+    #------------------------------------------------------------
+    dict.append({"list": [0,1,2,3,4,5,6,7,8,9,10]})
+    template.append("""[for key in list]
+[if-index key is 3] [key] is hoge!!
+[elif-index key is 6] [key] is foo!!
+[elif-index key is 9] [key] is bar!!
+[elif-index key is first] [key] is first
+[elif-index key is last] Omoro-------!!!!
+[elif-index key is odd] [key] is odd number
+[elif-index key is even] [key] is even number
+[endif]
+[endfor]""")
+
+    #------------------------------------------------------------
+    # Example 3
+    #------------------------------------------------------------
+    dict.append({"key1": "a", "key2": "b"})
+    template.append("""[if key1 is a]
+The key1 is "a".
+[else]
+This key1 is not "a".
+[endif]""")
+
+    #------------------------------------------------------------
+    # Example 4
+    #------------------------------------------------------------
+    dict.append({"key1": "a", "key2": "b"})
+    template.append("""[if-any key1]
+key1 exists.
+[endif][if-any key3]
+key3 exists.
+[else]
+key3 does not exists.
+[endif]""")
+
+    dict.append({})
+    template.append("""
+[[]bracket]
+[# comment]
+""")
+
+    import yaml
+    if len(dict) == len(template):
+        for i in range(len(dict)-1,len(dict)):
+            t = Template(template[i])
+            print "-" * 60
+            print "Example:", i
+            print "-" * 60
+            print "Template:\n"
+            print template[i]
+            print "-" * 60
+            print "Dictionary:\n"
+            print yaml.dump(dict[i], default_flow_style=False)
+            print "-" * 60
+            print "Generated Script:\n"
+            print t.get_script()
+            print "-" * 60
+            print "Generated Text:\n"
+            print t.generate(dict[i])
+            print ""



openrtm-commit メーリングリストの案内