
å€èšèªã€ã³ã¹ããŒã©ãŒãå¿ èŠãªã®ã¯ãªãã§ããïŒ
æè¡çãªéšåã«ç§»ãåã«ãç§ã¯æšã«ã€ããŠå°ãèããåºããã¿ã³ããªã³ãšã®ããããã¹ãŠã®ã·ã£ãŒãããã¯ãã³ã¹ãå¿ èŠãªçç±ã説æããŸãã ããã§ã¯ãå žåçãªWindowsã€ã³ã¹ããŒã©ãŒã¯ã©ã®ãããªãã®ã§ããããïŒ ããã¯.msiãŸãã¯.exeãã¡ã€ã«ã§ããèµ·åæã«ãã©ãã«äœãé 眮ãããã«é¢å¿ããããå¯èœã§ããã°ãããé 眮ããã·ã§ãŒãã«ãããäœæããŠã€ã³ã¹ããŒã«ããããã°ã©ã ãèµ·åãããŠãŒã¶ãŒãããã«äœ¿çšã§ããããã«ããŸãã ããªãã¿ã®å æ¯ã§ããã ããã¯ãéçºè ã®åã«ããã¿ã¹ã¯ãããŒã«ã©ã€ãºãããããŒãžã§ã³ãäœæãããšããæ å ãåŸããŸã§ãã€ã³ã¹ããŒã©ãŒãã©ã®ããã«èŠãããã§ãã ãã·ã¢èªããã€ãèªãäžåœèª...æ¬åœã«æ¬²ãããŠãŒã¶ãŒåãã
ãããŠãååãšããŠãããã°ã©ã èªäœã«åé¡ããªãå Žåãã€ã³ã¹ããŒã©ã¯éçºè ãããªãèå³æ·±ãéžæè¢ã®åã«çœ®ããŸãã ãªãã·ã§ã³ã¯äœã§ããïŒ
- æãç°¡åãªè§£æ±ºçã¯ãã€ã³ã¹ããŒã©ãŒã®æãäœæããåã€ã³ã¹ããŒã©ãŒãç®çã®èšèªã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãæã¡ãå¿ èŠãªãã¡ã€ã«ãšèšå®ã§ããã°ã©ã ãã€ã³ã¹ããŒã«ããåãèšèªã§ã€ã³ã¿ãŒãã§ã€ã¹ã衚瀺ãããããã«ããããšã§ãã æ®å¿µãªããããã®æ¹æ³ã«ã¯ããããªãã€ãã¹ç¹ããããŸããããŒã«ã©ã€ãºã®æ°ãå¢ãããšã30人以äžã®ã€ã³ã¹ããŒã©ãŒã®ç®¡çã¯ããŸã䟿å©ã§ã¯ãããŸããã ããã«ãé¢çœãç¬éããããã¢ããããŸãããŠãŒã¶ãŒãæ€çŽ¢ã§ããã°ã©ã ãèŠã€ããå Žåããã®èšèªããµããŒãããŠãããšæšªã«æžãããŠããã°ãããŠã³ããŒãããå¯èœæ§ãé«ããªããŸãã æ²ããããªã誰ããè±èªãç¥ã£ãŠããããã§ã¯ãããŸããã
- 1ã€ã®ã€ã³ã¹ããŒã©ãŒãäœæããèµ·åæã«ããã°ã©ã èšèªãèªåçã«éžæã§ããŸãã ããã¯ãããšãã°ã人æ°ã®ãã7-zipãŠãŒãã£ãªãã£ã®64ãããããŒãžã§ã³ã®å Žåã§ãã æ®å¿µãªããããã®æ¹æ³ã«ã¯å€ãã®æ¬ ç¹ããããŸãã ãŸããè±èªãç¥ããªããŠãŒã¶ãŒã¯ãã€ã³ã¹ããŒã©ãŒã®ã€ã³ã¿ãŒãã§ã€ã¹ã«ç°¡åã«å¯Ÿå¿ã§ããŸããã 第äºã«ãããã°ã©ã ã¯ãã°ãã°ã·ã¹ãã èšå®ã«åºã¥ããŠèµ·åæã«èšèªãéžæããŸãããããã¯ãŠãŒã¶ãŒãæ¬åœã«æããã®ã«åžžã«å¯Ÿå¿ãããšã¯éããŸããã ãã®çµæãããã°ã©ã ã¯å€ãã®å ŽåããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãªã©ã®åŸ®åŠãªåé¡ã«æªåœ±é¿ãåãŒãééã£ãèšèªã§ã€ã³ã¿ãŒãã§ã€ã¹ãæšæž¬ããŠè¡šç€ºããŸããã
- ã€ã³ã¹ããŒã©ãŒã®èµ·åæã«ã€ã³ã¹ããŒã©ãŒã®èšèªãšããã°ã©ã ãéžæããããã«ãŠãŒã¶ãŒãæåŸ ããããšããå§ãããŸãã ããããããã§ç§ãã¡ã¯çŽç²ã«æè¡çãªå°é£ã«çŽé¢ããŠããŸãïŒWindowsã®åªå ã€ã³ã¹ããŒã©ãŒã¿ã€ãã§ããMSIã¯ååãšããŠãã®å¯èœæ§ããµããŒãããŠããããInnosetup / Nsisã䜿çšãããšå¥ã®åé¡ãçºçããŸã- ã ããã«ãMSIãã©ãŒã ãã¡ã¯ã¿ãŒã®ã€ã³ã¹ããŒã©ãŒã¯ãã¯ã³ã¯ãªãã¯ã§æ°åå°ã®ã³ã³ãã¥ãŒã¿ãŒã«ããã°ã©ã ãèªåçã«æŽæ°ããã³å±éããããã«äœ¿çšãã倧äŒæ¥ãéåžžã«å¥œãã§ãã
éžæããèšèªã§ãŠãŒã¶ãŒãšè©±ãMSIãæ£çŽã«äœæããããšã¯ã§ããŸããã ãããããè»äºããªãã¯ãã䜿çšããŠãAdobeãDrWebãªã©ã®å€§äŒæ¥ã®ã€ã³ã¹ããŒã©ãŒã§èŠããã¯ããã¯ã䜿çšããããšãã§ããŸããã€ã³ã¹ããŒã©ãŒã¯ãèµ·åæã«èšèªãéžæããããã³ããã衚瀺ãã.exeãã¡ã€ã«ã§ããããã.msiãæœåºããŠå®è¡ããŸãå€æ°ã®å¥åŠãªæäœãè¡ãããéžæããèšèªã§ã€ã³ã¹ããŒã«ãè¡ãããŸãã æã人æ°ã®ããã¿ã€ãã®ãè»äºããªãã¯ãã¯ãOrderShareã«åã¡ãåœç¶ã®ããã°ã©ã ã§ãã 圌女ã¯MSIãå®è¡ãã.exeã«ããã¯ããŠãèšèªéžæã¡ãã¥ãŒãèªåã§æ·»ä»ããŸãã ãã®äžã®ãã¹ãŠã¯ãäŸ¡æ Œãé€ããŠè¯ãã§ã-è·å ŽãããçŽ5000ãã«ã éåžžã«é«äŸ¡ãªããã§ã¯ãããŸããïŒã©ã€ã»ã³ã¹ãããã€ããããŸãïŒããã¹ã±ãŒã©ããªãã£ãäœäžããŸãã ãã®ãããªã€ã³ã¹ããŒã©ãŒããªãŒãã³ãœãŒã¹ã«å ¥ããããšã¯ã§ããŸããããŸããæ¹èšã®ããã«æ£çŽã«ããªãŒã©ã³ãµãŒã«æäŸããããšãã§ããŸããã ãã ããInstallShieldã䜿çšããã«ãç¡æã®ããã°ã©ã ãã·ã£ãŒãããã¯ã¿ã³ããªã³ãããã³ããã€ãã®åªæã䜿çšããããšãã§ããŸãã
äŸç€ºçãªå€èšèªããã°ã©ã
ãŸããã€ã³ã¹ããŒã«ããåçŽãªå€èšèªããã°ã©ã ãäœæããŸãã æãç°¡åã§èŠèŠçãªæ¹æ³ã¯ãç¡æã®Qtãã¬ãŒã ã¯ãŒã¯ã䜿çšããããšã§ãããã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ãå€èšèªãããã«äœ¿çšã§ããŸãã ããããããã°ã©ã ããã«ãããããã«ãã¹ãŠãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸãã ãbin \ qmake.exeããã€ã³ã¹ããŒã«ããããã©ã«ããŒã«QTDIRç°å¢å€æ°ãèšå®ããŸãïŒQtã®ææ°ããŒãžã§ã³ã§ã¯ãããã©ã«ãã§ã¯ãCïŒ\ QtSDK \ Desktop \ Qt \ 4.7.3 \ mingwãïŒãMINGWDIRç°å¢å€æ°ã¯ãbin \ mingw32-make.exeããã€ã³ã¹ããŒã«ããããã©ã«ãïŒQtã®ææ°ããŒãžã§ã³ã§ã¯ãããã©ã«ãã§ã€ã³ã¹ããŒã«ãããå ŽåããCïŒ\ QtSDK \ mingwãã«ãªããŸãïŒã ãããã®ç°å¢å€æ°ã¯ãã¯ã³ã¯ãªãã¯ã§ãã¹ãŠãæ£ããåéããããã«ããã«ãã¹ã¯ãªããã«å¿ èŠã§ã:)ã
ããã°ã©ã èªäœã¯ãã§ã«æºåæžã¿ã§ãã ããã§ãœãŒã¹ãååŸããã©ããã§å±éããŠããbuild.batããšããååã®ããããã¡ã€ã«ãèµ·åããŸãã ãã®ããããã¡ã€ã«ã¯ããœãŒã¹ãããã¢ããã°ã©ã ãåéããçµæããïŒ TEMPïŒ \ multilang_testãã«å ¥ããŸãã ãã®ãã©ã«ãã«ç§»åãããšãããã°ã©ã ã®å®è¡å¯èœãã¡ã€ã«ãããã€ãã®Qtã©ã€ãã©ãªãææ ®æ·±ãæ¡åŒµåãqmããä»ãããã·ã¢èªã®ããŒã«ã©ã€ãºãã¡ã€ã«ã衚瀺ãããŸãã ããã°ã©ã ãèµ·åããŠãããã¡ãã¥ãŒã䜿çšããããšã§ããã®å Žã§è±èªãšãã·ã¢èªã®éã§èšèªãåãæ¿ããããšãã§ããŸãã ã€ã³ã¹ããŒã©ãŒãããã°ã©ã ã«ã©ã®èšèªã話ãããäŒããããã«ãååã®ç¹å¥ãªã¬ãžã¹ããªããŒãHKCU \ Software \ my_company \ multilang_app \ lang_curããèµ·åããŸããããã¯ãè±èªã®ã€ã³ã¿ãŒãã§ã€ã¹èšèªã§ã¯0ããã·ã¢èªã§ã¯1ã«èšå®ã§ããŸãïŒ

...ãããŠé害ã®ããå€èšèªã€ã³ã¹ããŒã©ãŒ
ããã°ã©ã ãå€æããåŸããã®ã€ã³ã¹ããŒã©ãŒãäœæã§ããŸãã ã€ã³ã¹ããŒã©ãŒããã«ãããã«ã¯ãMicrosoftã®ç¡æã®WiXããã°ã©ã ã䜿çšããŸãïŒã¡ãªã¿ã«ãç§ã®èšæ¶ãæ£ãããã°ãããã¯ãªãŒãã³ãœãŒã¹ã«ç§»è¡ãããæåã®Microsoftãããžã§ã¯ãã§ãïŒã ããããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ã§ããŸãïŒ.netãã¬ãŒã ã¯ãŒã¯ãå¿ èŠã§ãïŒã åè¿°ã®ããŒãã¹ãã©ãããäœæããããã°ã©ã ãå¿ èŠã§ãããããã®ç®çã®ããã«ãç¡æã®dotnetinstallerããã°ã©ã ã䜿çšããŸã ããã®ããã°ã©ã ã¯ã ããããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ã§ããŸãã dotnetinstallerã®å ŽåãDNIDIRç°å¢å€æ°ããdotnetinstaller.exeããã€ã³ã¹ããŒã«ããããã©ã«ããŒã«èšå®ããå¿ èŠããããŸãïŒããã©ã«ãã®ã€ã³ã¹ããŒã«ã§ã¯ããCïŒ\ Program Files \ dotnetinstaller \ binãã«ãªããŸãïŒã
ãŸããMSIãå®è¡ããå¿ èŠããããŸãã WiXã¯XMLèšè¿°ããMSIãäœæããŸããããã¯éåžžã«åçŽã§ãHabrã«é¢ããå€ãã®èšäºã§è©³ãã説æãããŠããŸãã 詳现ã«å ¥ããªãããã«ãã€ã³ã¹ããŒã©ãŒãããžã§ã¯ããæºåããŸããã ããã§ãœãŒã¹ãååŸããã©ããã§å±éãããbuild.batããšããååã®ããããã¡ã€ã«ãå®è¡ããŸãããã®çµæãå€æ°ã®äžéãã¡ã€ã«ãšæçµçãªé²å-file "ïŒ TEMPïŒ \ multilang_test \ multilang_install.exe "-çµã¿ç«ãŠãããå€èšèªã€ã³ã¹ããŒã©ãŒãå®è¡ãããšãæåã«èšèªéžæã¡ãã¥ãŒã衚瀺ããã次ã«éžæããèšèªã®ã€ã³ã¹ããŒã©ãŒã€ã³ã¿ãŒãã§ãŒã¹ãšãéžæããèšèªã®ã€ã³ã¹ããŒã«æžã¿ããã°ã©ã ã衚瀺ãããŸãã

ã©ãïŒ ã¢ããã«å£ããªãçµæãããããäžé£ã®éæ³ã®ã¢ã¯ã·ã§ã³ãæ€èšããŠãã ããã ãŸããè±èªãšãã·ã¢èªã®ã€ã³ã¹ããŒã©ãŒãMSI圢åŒã§äœæããŸãããã®ãããWiXãªã³ã«ãŒã«ã³ãã³ãã©ã€ã³ããŒã-culturesïŒen-USããè±èªã§ãã-culturesïŒru-RUãããã·ã¢èªã§æå®ããã ãã§ååã§ãïŒãã«ããã¡ã€ã«ãåç §ïŒã
éžæããèšèªã«å¿ããŠãããŒãã¹ãã©ããããçµæã®MSIã€ã³ã¹ããŒã©ãŒã解åããŠå®è¡ããŸãã ååãšããŠãããŒãã¹ãã©ããã«äž¡æ¹ã®MSIããã®ãŸãŸé 眮ããããšã劚ãããã®ã¯ãããŸããã ããããããã¯æåã®è§£æ±ºçã§ã¯ãããŸãããåMSIã«ã¯ããã°ã©ã å ã®ãã¹ãŠã®ãã¡ã€ã«ãå«ãŸããŠãããããã¹ãã®è¡ãšããã©ã«ãã®èšèªãèšå®ããããã«ã¬ãžã¹ããªã«æžã蟌ãå€ãç°ãªãã ãã§ãã å°ããªããã°ã©ã ãš2ã€ã®èšèªã®å Žåãããã¯éèŠã§ã¯ãããŸããããããã°ã©ã ã®ãã¡ã€ã«ã®ééãå°ãªããšã100ã¡ã¬ãã€ãã§ã3ããŒã¹ã®èšèªã«ããŒã«ã©ã€ãºãããŠããå Žåããããã3ã®ã¬ãã€ãã®ééã®ã€ã³ã¹ããŒã«ããã±ãŒãžãäœæããå¿ èŠã¯ãããŸããã ãããã£ãŠãããŒãã¹ãã©ãããŒã«ã¯è±èªã®MSIã1ã€ã ãä¿åããæ®ãã¯è±èªã®ã€ã³ã¹ããŒã©ãŒãšããŒã«ã©ã€ãºãããã€ã³ã¹ããŒã©ãŒã®éããå«ã.MSTãã¡ã€ã«ã§ãããããããå€æããä¿åããŸãã ãã®ãããªãã¡ã€ã«ã¯éåžžãµã€ãºãå°ãããã€ã³ã¹ããŒã«äžã«è±èªã®MSIã«ãé©çšãããŠãããŒã«ã©ã€ãºããããã¡ã€ã«ã«ãå€æãã§ããŸãã MSTãã¡ã€ã«ãäœæããã«ã¯ãWiXã«å«ãŸããŠããããŒãããã°ã©ã ã䜿çšããŸãã 奜å¥å¿peopleçãªäººã¯ã.batãã¡ã€ã«ã®å 容ãå床調ã¹ãŸãã
ããã§ã1ã€ã®å€§ããªMSIãã¡ã€ã«ãšãããããã·ã¢èªã«å€æããå°ããªMSTãã§ããŸããã ããŒãã¹ãã©ãããå ¥ããããšã¯ã§ããŸããïŒ çè«çã«ã¯ãå®éã«ã¯ããã¡ã€ã«ããã®ãŸãŸçœ®ããå Žåã«åé¡ãçºçããå¯èœæ§ããããŸãã ä»åã¯ããã°ã©ã ãã¢ã³ã€ã³ã¹ããŒã«ãã段éã§ãã MSIãä»ããŠã€ã³ã¹ããŒã«ãããããã°ã©ã ã®ã¢ã³ã€ã³ã¹ããŒã«ã¯ãéåžžãããªããããããæ¹æ³ã§è¡ãããŸãïŒã€ã³ã¹ããŒã«äžã«ãWindowsã¯MSIããã®ãã©ã«ããŒã«ä¿åãïŒãšããã§ãWindowsãã©ã«ããŒã®çµ¶æçãªæé·ã®çç±ã®1ã€ïŒãã¢ã³ã€ã³ã¹ããŒã«äžã«ä¿åãããMSIã䜿çšããŸãã ãã¡ã€ã«ã®åé¡ã¯ãWindows MSTãä¿åã§ããªãããšã§ãããMSIãšMSTãã¡ã€ã«ã®çµã¿åããã䜿çšããŠãã·ã¢èªããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããšãããã°ã©ã ã®è¿œå ãšåé€ãä»ããŠã¢ã³ã€ã³ã¹ããŒã«ãããšãã«æœåšçãªåé¡ãçºçããŸãïŒWindowsã¯ã€ã³ã¹ããŒã«ã«é¢äžããMSTãèŠã€ããããšããŸããããè¡ãããšãã§ãããéåžžã«æ°åã害ããã§ãããã Windowsãæ··ä¹±ãããªãããã«ãMSTãã¡ã€ã«ãMSIå ã«é 眮ããMSIãã¡ã€ã«ããçŽæ¥é©çšã§ããŸãã ãããè¡ãããã«ãMicrosoftã®Visual Basicçšã®ç¹å¥ãªã¹ã¯ãªããããããŸãã ããããå ¥æã§ããã€ã³ã¹ããŒã©ãŒãœãŒã¹ãšå ±ã«ã¢ãŒã«ã€ãã«æ éã«å ¥ããããŸãã ãã®ã¹ã¯ãªããã䜿çšãããšïŒå¥œå¥å¿ã匷ãå Žåãããããã¡ã€ã«ã調ã¹ãããšãã§ããŸãïŒãMSTãMSIã«é 眮ãããã®ãããªMSIããã·ã¢èªã¢ãŒãã§å®è¡ããã«ã¯ã次ã®ããã«ããŸãã
msiexec / i multilang_install_en.msi TRANSFORMS =ïŒ1049
ããã§å®äºã§ããããŒãã¹ãã©ãããäœæã§ããŸãã ãã§ã«è¿°ã¹ãããã«ãããã«ã¯ãdotnetinstallerãšããå¥åŠãªååã®ç¹å¥ã«èšç·ŽããããªãŒãã³ãœãŒã¹ããã°ã©ã ããããŸãã äžè¬ã«ã.NET Frameworkããã«ããã€ã³ã¹ããŒã©ãŒãäœæããããšãç®çãšããŠããŸãããèšèªéžæã¡ãã¥ãŒãäœæããéžæããèšèªã«å¿ããŠãç°ãªãã³ãã³ãã©ã€ã³ããŒã§MSIãæœåºããã³èµ·åããããšãã§ããŸãã WiXãšåæ§ã«ãdotnetinstallerã¯XML圢åŒã®ãœãŒã¹ãåãå ¥ããŸãïŒäœææžã¿ã®ãããžã§ã¯ããœãŒã¹ãå«ãŸããŠããŸãïŒã ãããžã§ã¯ãå šäœã¯éåžžã«åçŽã§ãããã®äžã§ã2ã€ã®èšèªã§ã¡ãã¥ãŒãäœæããå¿ èŠãããããšãdotnetinstallerã«äŒããŸããè±èªã®å Žåã¯ãã®ãŸãŸMSIãåŒã³åºãããã·ã¢èªã®å Žåã¯å€æãé©çšããŸãã
ãŸãšã
ç§ã®äŸã§äœ¿çšãããŠããUTF-8ãšã³ã³ãŒãã£ã³ã°ã®ãœãŒã¹ã³ãŒãã¯ããã·ã¢èªã§å®å šã«ã³ã¡ã³ãåãããŠãããæå°éã®å€èšèªããã°ã©ã ãšæå°éã®ã€ã³ã¹ããŒã©ãŒã®äŸãšããŠäœ¿çšã§ããŸãã æ®å¿µãªãããäžèšã®åªæãããããããã«ãMSIã¯å ã å€èšèªã®ãªãŒã«ã€ã³ã¯ã³ã€ã³ã¹ããŒã©ãŒãäœæããããã«èšèšãããŠããªãã£ãããããã®ãããªã€ã³ã¹ããŒã©ãŒã®äœæã¯ããªãè€éãªããã»ã¹ã§ãã ãããã£ãŠããWindowsããŽãã®èªå®ãç·æ¥ã«å¿ èŠãšãããäŒæ¥ã¯ã©ã€ã¢ã³ãã«MSIã䜿çšããå Žåã¯ãInnoSetupãŸãã¯NSISã䜿çšããŠãã ãããå€èšèªã€ã³ã¹ããŒã©ãŒãäœæããã¿ã¹ã¯ã¯ã¯ããã«ç°¡åã§ãã
ãã¢ããã°ã©ã ãšãã¢ã€ã³ã¹ããŒã©ãŒã¯å€§å¹ ã«ç°¡ç¥åãããŠããããã®èšäºã§èª¬æãããŠããææ³ã瀺ãããã«å¿ èŠãªæå°éã®ãã®ã®ã¿ãå«ãŸããŠããããšã«æ³šæããŠãã ããã
ç§ã¯ã·ã ã«å¥ããåããŠã³ã¡ã³ããåŸ ã¡ãŸããã ãã¹ãŠã®äŸã¯ãã¹ããããŠããŸããããŠãŒã¶ãŒã³ã³ãã¥ãŒã¿ãŒã§ã¯ãã¹ãŠãå¯èœã§ããããšããèªèº«ã§ç解ããŠããŸãã ãããã£ãŠãäœããã©ããã§æ©èœããªãå Žåã¯ãæžã蟌ã¿ãä¿®æ£ããŠãã ããã
ãããŠããäžã€ã®çµæ
äžèšã®ãã¹ãŠãé©çšããçµæã¯ãããŒã«ã«ãããã¯ãŒã¯ãã¹ãã£ã³ããããã®ç¡æã®Advanced IP Scannerããã°ã©ã ã«ãããŸãã å€èšèªã€ã³ã¹ããŒã©ãŒãã€ã³ã¿ãŒãã§ãŒã¹èšèªã®åçéžæãªã©ã ã¹ãã£ããŒã«é¢ããã³ã¡ã³ããåãä»ããŠããŸã:)ã