diff --git a/src/WINNT/install/wix/Binary/New.ico b/src/WINNT/install/wix/Binary/New.ico
new file mode 100644
index 0000000000..27881dfe97
Binary files /dev/null and b/src/WINNT/install/wix/Binary/New.ico differ
diff --git a/src/WINNT/install/wix/Binary/Up.ico b/src/WINNT/install/wix/Binary/Up.ico
new file mode 100644
index 0000000000..86f6b5a847
Binary files /dev/null and b/src/WINNT/install/wix/Binary/Up.ico differ
diff --git a/src/WINNT/install/wix/Binary/bannrbmp.bmp b/src/WINNT/install/wix/Binary/bannrbmp.bmp
new file mode 100644
index 0000000000..423c631a91
Binary files /dev/null and b/src/WINNT/install/wix/Binary/bannrbmp.bmp differ
diff --git a/src/WINNT/install/wix/Binary/completi.ico b/src/WINNT/install/wix/Binary/completi.ico
new file mode 100644
index 0000000000..93a95a1b19
Binary files /dev/null and b/src/WINNT/install/wix/Binary/completi.ico differ
diff --git a/src/WINNT/install/wix/Binary/custicon.ico b/src/WINNT/install/wix/Binary/custicon.ico
new file mode 100644
index 0000000000..878d3ba54b
Binary files /dev/null and b/src/WINNT/install/wix/Binary/custicon.ico differ
diff --git a/src/WINNT/install/wix/Binary/dlgbmp.bmp b/src/WINNT/install/wix/Binary/dlgbmp.bmp
new file mode 100644
index 0000000000..18bcf3c996
Binary files /dev/null and b/src/WINNT/install/wix/Binary/dlgbmp.bmp differ
diff --git a/src/WINNT/install/wix/Binary/exclamic.ico b/src/WINNT/install/wix/Binary/exclamic.ico
new file mode 100644
index 0000000000..906ce3246d
Binary files /dev/null and b/src/WINNT/install/wix/Binary/exclamic.ico differ
diff --git a/src/WINNT/install/wix/Binary/info.ico b/src/WINNT/install/wix/Binary/info.ico
new file mode 100644
index 0000000000..7e0ff7f14c
Binary files /dev/null and b/src/WINNT/install/wix/Binary/info.ico differ
diff --git a/src/WINNT/install/wix/Binary/insticon.ico b/src/WINNT/install/wix/Binary/insticon.ico
new file mode 100644
index 0000000000..94753ac296
Binary files /dev/null and b/src/WINNT/install/wix/Binary/insticon.ico differ
diff --git a/src/WINNT/install/wix/Binary/removico.ico b/src/WINNT/install/wix/Binary/removico.ico
new file mode 100644
index 0000000000..097cafe274
Binary files /dev/null and b/src/WINNT/install/wix/Binary/removico.ico differ
diff --git a/src/WINNT/install/wix/Binary/repairic.ico b/src/WINNT/install/wix/Binary/repairic.ico
new file mode 100644
index 0000000000..6fb68610c9
Binary files /dev/null and b/src/WINNT/install/wix/Binary/repairic.ico differ
diff --git a/src/WINNT/install/wix/CellServDB b/src/WINNT/install/wix/CellServDB
new file mode 100644
index 0000000000..6d43dc846f
--- /dev/null
+++ b/src/WINNT/install/wix/CellServDB
@@ -0,0 +1,483 @@
+>grand.central.org #GCO Public CellServDB 11 May 2004
+18.7.14.88 #grand-opening.mit.edu
+128.2.191.224 #penn.central.org
+>wu-wien.ac.at #University of Economics, Vienna, Austria
+137.208.3.33 #afsdb1.wu-wien.ac.at
+137.208.7.4 #afsdb2.wu-wien.ac.at
+137.208.7.7 #afsdb3.wu-wien.ac.at
+>hephy.at #hephy-vienna
+193.170.243.10 #mowgli.oeaw.ac.at
+193.170.243.12 #baloo.oeaw.ac.at
+193.170.243.14 #akela.oeaw.ac.at
+>itp.tugraz.at #Institute for Theoretical Physics, TU Graz, Austria
+129.27.157.6 #fubphsv2.tu-graz.ac.at
+129.27.161.7 #faepsv01.tu-graz.ac.at
+129.27.161.15 #faepsv02.tu-graz.ac.at
+>cern.ch #European Laboratory for Particle Physics, Geneva
+137.138.128.148 #afsdb1.cern.ch
+137.138.246.50 #afsdb3.cern.ch
+137.138.246.51 #afsdb2.cern.ch
+>ams.cern.ch #AMS Experiment
+137.138.206.77 #pcamsf2.cern.ch
+137.138.206.123 #pcamsf4.cern.ch
+>ethz.ch #Swiss Federal Inst. of Tech. - Zurich, Switzerland
+129.132.97.19 #amalthea.ethz.ch
+129.132.97.27 #nethzafs-001.ethz.ch
+129.132.115.3 #himalia.ethz.ch
+129.132.115.37 #nethzafs-005.ethz.ch
+129.132.115.38 #nethzafs-006.ethz.ch
+>psi.ch #Paul Scherrer Institut - Villigen, Switzerland
+129.129.16.10 #afs1.psi.ch
+129.129.16.11 #afs2.psi.ch
+>extundo.com #Simon Josefsson's cell
+195.42.214.241 #slipsten.extundo.com
+>mekinok.com #Mekinok, Inc.
+4.36.43.98 #loggerhead.mekinok.com
+>membrain.com #membrain.com
+66.93.118.125 #stormy
+130.85.24.11 #weasel
+130.85.24.13 #straykitten
+>midnightlinux.com #Midnight Linux, Pittsburgh PA
+66.93.62.18 #romulus.midnihtlinux.com
+66.93.62.20 #yar.midnightlinux.com
+>setfilepointer.com #SetFilePointer.com
+63.224.10.2 #hamlet.SetFilePointer.com
+63.224.10.4 #troilus.SetFilePointer.com
+>sodre.cx #Sodre.cx
+128.8.140.165 #greed.sodre.cx
+>desy.de #Deutsches Elektronen-Synchrotron
+131.169.40.62 #vayu.desy.de
+131.169.244.60 #solar00.desy.de
+>gppc.de #GPP Chemnitz mbH
+213.187.92.33 #gpp1.gppc.de
+213.187.92.34 #paulchen.gppc.de
+213.187.92.35 #lotus.gppc.de
+>ifh.de #DESY Zeuthen
+141.34.22.10 #romulus.ifh.de
+141.34.22.11 #remus.ifh.de
+141.34.22.29 #hekate.ifh.de
+>lrz-muenchen.de #Leibniz Computing Centre, Germany
+129.187.10.36 #afs1.lrz-muenchen.de
+129.187.10.56 #afs3.lrz-muenchen.de
+129.187.10.57 #afs2.lrz-muenchen.de
+>ipp-garching.mpg.de #Institut fuer Plasmaphysik
+130.183.9.5 #afs-db1.rzg.mpg.de
+130.183.100.10 #afs-db2.aug.ipp-garching.mpg.de
+130.183.100.23 #afs-db3.aug.ipp-garching.mpg.de
+>mpe.mpg.de #MPE cell
+130.183.130.7 #irafs1.mpe-garching.mpg.de
+130.183.134.20 #irafs2.mpe-garching.mpg.de
+>i1.informatik.rwth-aachen.de #Informatik I, RWTH Aachen
+137.226.244.79 #remus.informatik.rwth-aachen.de
+>tu-chemnitz.de #Technische Universitaet Chemnitz, Germany
+134.109.2.1 #zuse.hrz.tu-chemnitz.de
+134.109.2.15 #phoenix.hrz.tu-chemnitz.de
+134.109.200.7 #aetius.hrz.tu-chemnitz.de
+>e18.ph.tum.de #Experimental Physics, TU Munich, Germany
+129.187.154.223 #hamlet.e18.physik.tu-muenchen.de
+>uni-bonn.de #Cell name
+131.220.14.198 #work15-eth.rhrz.uni-bonn.de
+131.220.14.203 #node03-en2.rhrz.uni-bonn.de
+131.220.14.205 #node05.rhrz.uni-bonn.de
+>uni-freiburg.de #Albert-Ludwigs-Universitat Freiburg
+132.230.6.235 #sv6.ruf.uni-freiburg.de
+132.230.6.236 #sv7.ruf.uni-freiburg.de
+132.230.6.237 #sv8.ruf.uni-freiburg.de
+>physik.uni-freiburg.de #institute of physics, university Freiburg, Germany
+132.230.77.16 #hepafs.physik.uni-freiburg.de
+>urz.uni-heidelberg.de #Uni Heidelberg (Rechenzentrum)
+129.206.119.10 #afsdb.urz.uni-heidelberg.de
+129.206.119.16 #afsdb1.urz.uni-heidelberg.de
+129.206.119.17 #afsdb2.urz.uni-heidelberg.de
+>uni-hohenheim.de #University of Hohenheim
+144.41.2.2 #rs13.serv.uni-hohenheim.de
+144.41.2.3 #rs14.serv.uni-hohenheim.de
+144.41.2.4 #rs15.serv.uni-hohenheim.de
+>rz.uni-jena.de #Rechenzentrum University of Jena, Germany
+141.35.2.160 #lc00.rz.uni-jena.de
+141.35.7.9 #fsuj01.rz.uni-jena.de
+141.35.7.10 #zaphod.rz.uni-jena
+>meteo.uni-koeln.de #Univ. of Cologne - Inst. for Geophysics & Meteorology
+134.95.144.22 #afs1.meteo.uni-koeln.de
+134.95.144.24 #afs2.meteo.uni-koeln.de
+>rrz.uni-koeln.de #University of Cologne - Reg Comp Center
+134.95.19.3 #afsdb1.rrz.uni-koeln.de
+134.95.19.30 #fileserv3.rrz.uni-koeln.de
+134.95.67.97 #afs.thp.uni-koeln.de
+134.95.140.190 #rzkbserv.rrz.uni-koeln.de
+>physik.uni-mainz.de #institute of physics, university Mainz, Germany
+134.93.130.93 #hardy.physik.uni-mainz.de
+>uni-mannheim.de #Uni Mannheim (Rechenzentrum)
+134.155.50.165 #afsdbx.uni-mannheim.de
+134.155.50.166 #afsdby.uni-mannheim.de
+134.155.50.167 #afsdbz.uni-mannheim.de
+>physik.uni-wuppertal.de #Physics department of Bergische Universität Wuppertal
+132.195.104.3 #afs1.physik.uni-wuppertal.de
+132.195.104.230 #afs2.physik.uni-wuppertal.de
+>ies.auc.dk #Aalborg Univ., Inst. of Electronic Systems, Denmark
+130.225.51.73 #afsdb1.kom.auc.dk
+130.225.51.74 #afsdb2.kom.auc.dk
+130.225.51.85 #afsdb3.kom.auc.dk
+>hep.caltech.edu #CalTech High Energy Physics
+131.215.126.150 #afs.hep.caltech.edu
+>andrew.cmu.edu #Carnegie Mellon University - Computing Services Cell
+128.2.10.2 #vice2.fs.andrew.cmu.edu
+128.2.10.7 #vice7.fs.andrew.cmu.edu
+128.2.10.11 #vice11.fs.andrew.cmu.edu
+128.2.10.28 #vice28.fs.andrew.cmu.edu
+128.2.32.44 #new-vice12.fs.andrew.cmu.edu
+>club.cc.cmu.edu #Carnegie Mellon University Computer Club
+128.2.4.131 #yttrium.club.cc.cmu.edu
+128.2.4.132 #zirconium.club.cc.cmu.edu
+>chem.cmu.edu #Carnegie Mellon University - Chemistry Dept.
+128.2.40.134 #afs.chem.cmu.edu
+128.2.40.140 #afs2.chem.cmu.edu
+>cs.cmu.edu #Carnegie Mellon University - School of Comp. Sci.
+128.2.194.178 #cherry.srv.cs.cmu.edu
+128.2.194.179 #pumpkin.srv.cs.cmu.edu
+128.2.194.180 #strawberry.srv.cs.cmu.edu
+>ece.cmu.edu #Carnegie Mellon University - Elec. Comp. Eng. Dept.
+128.2.129.7 #porok.ece.cmu.edu
+128.2.129.8 #vicio.ece.cmu.edu
+128.2.129.9 #e-xing.ece.cmu.edu
+>scotch.ece.cmu.edu #CMU ECE CALCM research group
+128.2.134.82 #lagavulin.ece.cmu.edu
+>msc.cornell.edu #Cornell University Materials Science Center
+128.84.231.242 #miranda.ccmr.cornell.edu
+128.84.241.35 #co.ccmr.cornell.edu
+128.84.249.78 #dax.ccmr.cornell.edu
+>dbic.dartmouth.edu #Dartmouth Brain Imaging Center
+129.170.30.143 #dbicafs1.dartmouth.edu
+129.170.30.144 #dbicafs2.dartmouth.edu
+129.170.30.145 #dbicafs3.dartmouth.edu
+>northstar.dartmouth.edu #Dartmouth College Research Computing
+129.170.16.22 #halley.dartmouth.edu
+129.170.16.42 #oort.dartmouth.edu
+129.170.16.43 #cygnusx1.dartmouth.edu
+>iastate.edu #Iowa State University
+129.186.1.243 #afsdb-1.iastate.edu
+129.186.6.243 #afsdb-2.iastate.edu
+129.186.142.243 #afsdb-3.iastate.edu
+>athena.mit.edu #MIT/Athena cell
+18.7.1.66 #paris.mit.edu.
+18.7.1.74 #chimera.mit.edu.
+18.158.0.37 #prill.mit.edu.
+>dev.mit.edu #MIT/IS Development cell
+18.7.1.70 #wham.mit.edu.
+18.7.15.89 #rattle.mit.edu.
+18.7.15.93 #hum.mit.edu.
+>net.mit.edu #MIT/Network Group cell
+18.7.7.73 #gracie.mit.edu
+18.7.21.95 #george.mit.edu
+>sipb.mit.edu #MIT/SIPB cell
+18.181.0.19 #reynelda.mit.edu.
+18.181.0.22 #rosebud.mit.edu.
+18.181.0.23 #ronald-ann.mit.edu.
+>msu.edu #Michigan State University Main Cell
+35.9.7.10 #afsdb0.cl.msu.edu
+>nd.edu #University of Notre Dame
+129.74.223.17 #john.helios.nd.edu
+129.74.223.33 #lizardo.helios.nd.edu
+129.74.223.65 #buckaroo.helios.nd.edu
+>pitt.edu #University of Pittsburgh
+136.142.8.15 #afs09.srv.cis.pitt.edu
+136.142.8.20 #afs10.srv.cis.pitt.edu
+136.142.8.21 #afs11.srv.cis.pitt.edu
+>cs.pitt.edu #University of Pittsburgh - Computer Science
+130.49.220.11 #afs01.cs.pitt.edu
+130.49.220.12 #afs02.cs.pitt.edu
+130.49.220.13 #afs03.cs.pitt.edu
+>psc.edu #PSC (Pittsburgh Supercomputing Center)
+128.182.59.182 #shaggy.psc.edu
+128.182.66.184 #velma.psc.edu
+128.182.66.185 #daphne.psc.edu
+>scoobydoo.psc.edu #PSC Test Cell
+128.182.59.181 #scooby.psc.edu
+>cede.psu.edu #Penn State - Center for Engr. Design & Entrepeneurship
+146.186.218.10 #greenly.cede.psu.edu
+146.186.218.60 #b50.cede.psu.edu
+146.186.218.246 #stalin.cede.psu.edu
+>rose-hulman.edu #Rose-Hulman Institute of Technology
+137.112.7.11 #afs1.rose-hulman.edu
+137.112.7.12 #afs2.rose-hulman.edu
+137.112.7.13 #afs3.rose-hulman.edu
+>cs.rose-hulman.edu #Rose-Hulman CS Department
+137.112.40.10 #galaxy.cs.rose-hulman.edu
+>rpi.edu #Rensselaer Polytechnic Institute
+128.113.22.11 #saul.server.rpi.edu
+128.113.22.12 #joab.server.rpi.edu
+128.113.22.13 #korah.server.rpi.edu
+128.113.22.14 #achan.server.rpi.edu
+>hep.sc.edu #University of South Carolina, Dept. of Physics
+129.252.78.77 #cpeven.physics.sc.edu
+>cs.stanford.edu #Stanford University Computer Science Department
+171.64.64.10 #cs-afs-1.Stanford.EDU
+171.64.64.66 #cs-afs-2.stanford.edu
+171.64.64.69 #cs-afs-3.stanford.edu
+>ir.stanford.edu #Stanford University
+171.64.7.222 #afsdb1.stanford.edu
+171.64.7.234 #afsdb2.stanford.edu
+171.64.7.246 #afsdb3.stanford.edu
+>slac.stanford.edu #Stanford Linear Accelerator Center
+134.79.18.25 #afsdb1.slac.stanford.edu
+134.79.18.26 #afsdb2.slac.stanford.edu
+134.79.18.27 #afsdb3.slac.stanford.edu
+>cats.ucsc.edu #UC Santa Cruz, Comm. and Tech. Services, California U.S.A
+128.114.129.14 #elan.ucsc.edu
+128.114.129.15 #ichabod.ucsc.edu
+128.114.129.18 #maneki.ucsc.edu
+>acm.uiuc.edu #ACM at the University of Illinois
+128.174.251.8 #alnitak.acm.uiuc.edu
+128.174.251.9 #alnilam.acm.uiuc.edu
+128.174.251.10 #mintaka.acm.uiuc.edu
+>ncsa.uiuc.edu #University of Illinois
+141.142.3.5 #congo.ncsa.uiuc.edu
+141.142.3.8 #nile.ncsa.uiuc.edu
+141.142.230.19 #jinx.ncsa.uiuc.edu
+>umbc.edu #University of Maryland, Baltimore County
+130.85.24.23 #db2.afs.umbc.edu
+130.85.24.87 #db3.afs.umbc.edu
+130.85.24.101 #db1.afs.umbc.edu
+>glue.umd.edu #University of Maryland - Project Glue
+128.8.70.11 #olmec.umd.edu
+128.8.73.3 #babylon.umd.edu
+129.2.128.53 #egypt.umd.edu
+>wam.umd.edu #University of Maryland Network WAM Project
+128.8.70.9 #csc-srv.wam.umd.edu
+128.8.73.9 #pg2-srv.wam.umd.edu
+129.2.128.54 #avw-srv.wam.umd.edu
+>umich.edu #University of Michigan - Campus
+141.211.1.32 #fear.ifs.umich.edu
+141.211.1.33 #surprise.ifs.umich.edu
+141.211.1.34 #ruthless.ifs.umich.edu
+>atlas.umich.edu #ATLAS group cell in physics at University of Michigan
+141.211.43.102 #linat02.grid.umich.edu
+141.211.43.106 #linat06.grid.umich.edu
+141.211.43.109 #atgrid.grid.umich.edu
+>citi.umich.edu #Center for Information Technology Integration
+141.211.133.5 #babylon.citi.umich.edu
+>lsa.umich.edu #University of Michigan - College of LS&A
+141.211.54.132 #curtis.admin.lsa.umich.edu
+141.211.61.23 #zee.admin.lsa.umich.edu
+141.211.68.15 #marshall.lsa.umich.edu
+>math.lsa.umich.edu #University of Michigan - Math Department
+141.211.61.40 #ike.math.lsa.umich.edu
+141.211.61.41 #clark.math.lsa.umich.edu
+141.211.61.42 #nimitz.math.lsa.umich.edu
+>umr.edu #University of Missouri - Rolla
+131.151.1.59 #afsdb1.umr.edu
+131.151.1.70 #afsdb3.umr.edu
+131.151.1.146 #afsdb2.umr.edu
+>physics.unc.edu #Univ. of NC at Chapel Hill, Dept. of Physics
+152.2.5.2 #valerian.physics.unc.edu
+152.2.5.3 #augustus.physics.unc.edu
+152.2.7.67 #nerva.astro.unc.edu
+>uncc.edu #University of NC at Charlotte Mosaic AFS Cell
+152.15.10.70 #as-sm1.uncc.edu
+152.15.13.7 #as-sm2.uncc.edu
+152.15.30.27 #fs-kenn3.uncc.edu
+>eng.utah.edu #University of Utah - Engineering
+155.99.222.9 #lenny.eng.utah.edu
+155.99.222.10 #carl.eng.utah.edu
+>cs.uwm.edu #University of Wisconsin--Milwaukee
+129.89.38.124 #solomons.cs.uwm.edu
+>cs.wisc.edu #Univ. of Wisconsin-Madison, Computer Sciences Dept.
+128.105.132.14 #timon.cs.wisc.edu
+128.105.132.15 #pumbaa.cs.wisc.edu
+128.105.132.16 #zazu.cs.wisc.edu
+>engr.wisc.edu #University of Wisconsin-Madison, College of Engineering
+144.92.13.14 #larry.cae.wisc.edu
+144.92.13.15 #curly.cae.wisc.edu
+144.92.13.16 #moe.cae.wisc.edu
+>hep.wisc.edu #University of Wisconsin -- High Energy Physics
+128.104.28.219 #anise.physics.wisc.edu
+>physics.wisc.edu #Univ. of Wisconsin-Madison, Physics Department
+128.104.220.51 #bubbles.physics.wisc.edu
+128.104.220.52 #buttercup.physics.wisc.edu
+128.104.220.53 #blossom.physics.wisc.edu
+>ifca.unican.es #Instituto de Fisica de Cantabria (IFCA), Santander, Spain
+193.144.209.20 #gridwall.ifca.unican.es
+>ific.uv.es #Instituto de Fisica Corpuscular, Valencia, Spain
+147.156.163.11 #alpha.ific.uv.es
+>biocenter.helsinki.fi #University of Helsinki, Institute of Biotechnology
+128.214.58.174 #afsdb1.biocenter.helsinki.fi
+128.214.88.114 #afsdb2.biocenter.helsinki.fi
+>dapnia.saclay.cea.fr #CEA DAPNIA
+132.166.32.7 #dphrsg.saclay.cea.fr
+132.166.32.12 #dphrsl.saclay.cea.fr
+>in2p3.fr #IN2P3 production cell
+134.158.232.11 #ccafsdb1.in2p3.fr
+134.158.232.12 #ccafsdb2.in2p3.fr
+134.158.232.13 #ccafsdb3.in2p3.fr
+>anl.gov #Argonne National Laboratory
+146.137.96.33 #arteus.ctd.anl.gov
+146.137.162.88 #agamemnon.ctd.anl.gov
+146.137.194.80 #antenor.ctd.anl.gov
+>rhic.bnl.gov #Relativistic Heavy Ion Collider
+130.199.6.51 #rafs03.rcf.bnl.gov
+130.199.6.52 #rafs02.rcf.bnl.gov
+130.199.6.69 #rafs01.rcf.bnl.gov
+>usatlas.bnl.gov #US Atlas Tier 1 Facility at BNL
+130.199.48.32 #aafs01.usatlas.bnl.gov
+130.199.48.33 #aafs02.usatlas.bnl.gov
+130.199.48.34 #aafs03.usatlas.bnl.gov
+>fnal.gov #Fermi National Acclerator Laboratory
+131.225.68.1 #fsus01.fnal.gov
+131.225.68.4 #fsus03.fnal.gov
+131.225.68.14 #fsus04.fnal.gov
+>ic-afs.arc.nasa.gov #Code IC, Ames Research Center
+128.102.105.62 #udanax.arc.nasa.gov
+>nersc.gov #National Energy Research Supercomputer Center
+128.55.128.250 #mars.nersc.gov
+128.55.128.252 #alfred.nersc.gov
+128.55.128.254 #lurch.nersc.gov
+>caspur.it #CASPUR Inter-University Computing Consortium, Rome
+193.204.5.45 #pomodoro.caspur.it
+193.204.5.46 #banana.caspur.it
+193.204.5.50 #maslo.caspur.it
+>fusione.it #Assoz. FUSIONE/Euratom, ENEA, Frascati-Italy
+192.107.90.2 #fusafs1.frascati.enea.it
+192.107.90.3 #fusafs2.frascati.enea.it
+192.107.90.4 #fusafs3.frascati.enea.it
+>icemb.it #ICEMB, Universita' La Sapienza - Rome - Italy
+193.204.6.130 #icembfs.caspur.it
+>infn.it #Istituto Nazionale di Fisica Nucleare (INFN), Italia
+131.154.1.7 #afs3.infn.it
+141.108.3.252 #afs1.infn.it
+192.84.134.75 #afs2.infn.it
+>kloe.infn.it #INFN, KLOE experiment at Laboratori di Frascati
+192.135.25.111 #kloeafs1.lnf.infn.it
+192.135.25.112 #kloeafs2.lnf.infn.it
+>le.infn.it #INFN, Sezione di Lecce
+192.84.152.40 #afs01.le.infn.it
+192.84.152.148 #afs02.le.infn.it
+>lnf.infn.it #INFN, Laboratori Nazionali di Frascati
+193.206.84.121 #afs1.lnf.infn.it
+193.206.84.122 #afs2.lnf.infn.it
+193.206.84.123 #afs3.lnf.infn.it
+>lngs.infn.it #INFN, Laboratori Nazionali di Gran Sasso
+192.84.135.21 #rsgs05.lngs.infn.it
+>pi.infn.it #INFN, Sezione di Pisa
+131.114.134.26 #unknownhost.pi.infn.it
+192.84.133.50 #aix1.pi.infn.it
+>psm.it #Progetto San Marco, Universita' di Roma-1
+151.100.1.65 #atlante.psm.uniroma1.it
+>tgrid.it #CASPUR-CILEA-CINECA Grid Cell
+193.204.5.33 #cccgrid.caspur.it
+>ictp.trieste.it #The Abdus Salam International Centre for Theoretical Physics (IC
+140.105.16.8 #fs1.ictp.trieste.it
+140.105.16.9 #fs2.ictp.trieste.it
+>ing.uniroma1.it #Universita' La Sapienza, Fac. Ingeneria
+151.100.85.253 #alfa.ing.uniroma1.it
+>vn.uniroma3.it #University of Rome 3, Area Vasca Navale
+193.204.161.136 #alfa.dia.uniroma3.it
+193.204.161.137 #beta.dia.uniroma3.it
+193.204.161.138 #gamma.dia.uniroma3.it
+>italia #Italian public AFS cell
+193.204.5.9 #afs.caspur.it
+>cmf.nrl.navy.mil #Naval Research Lab - CCS
+134.207.10.68 #picard.cmf.nrl.navy.mil
+134.207.10.69 #riker.cmf.nrl.navy.mil
+134.207.10.70 #kirk.cmf.nrl.navy.mil
+>lcp.nrl.navy.mil #Naval Research Lab - Lab for Computational Physics
+132.250.114.2 #afs1.lcp.nrl.navy.mil
+132.250.114.4 #afs2.lcp.nrl.navy.mil
+132.250.114.6 #afs3.lcp.nrl.navy.mil
+>es.net #Energy Sciences Net
+198.128.3.21 #fs1.es.net
+198.128.3.22 #fs2.es.net
+198.128.3.23 #fs3.es.net
+>laroia.net #Laroia Networks
+66.66.102.254 #supercore.laroia.net
+>sinenomine.net #Sine Nomine Associates
+66.92.236.139 #afs.sinenomine.net
+>slackers.net #The Slackers' Network
+63.201.48.27 #alexandria.slackers.net
+>nikhef.nl #The Dutch National Institute for High Energy Physics
+192.16.185.26 #afs1.nikhef.nl
+192.16.185.27 #afs2.nikhef.nl
+>1ts.org #KCR/private Karl Ramm, Cambridge, MA
+4.36.43.102 #dol-guldur.1ts.org
+>bazquux.org #Baz Quux Organization
+66.207.142.196 #baxquux.org
+>coed.org #Adam Pennington's Cell
+66.93.61.184 #vice1.coed.org
+128.2.4.163 #vice3.coed.org
+>dementia.org #Dementia Unlimited
+128.2.12.45 #alycia.dementia.org
+128.2.120.216 #meredith.dementia.org
+>idahofuturetruck.org #University of Idaho hybrid vehicle development
+12.18.238.210 #dsle210.fsr.net
+>nimlabs.org #Nimlabs, Ink. Cell.
+18.238.1.103 #olfin.nimlabs.org
+18.238.1.105 #caerbanog.nimlabs.org
+>nomh.org #nomh.org
+204.29.154.12 #iota.nomh.org
+>oc7.org #The OC7 Project
+128.2.6.107 #vice3.oc7.org
+128.2.122.140 #vice2.oc7.org
+>openafs.org #OpenAFS Project
+128.2.13.199 #new-virtue.openafs.org
+128.2.121.218 #virtue.openafs.org
+130.237.48.87 #andrew.e.kth.se
+130.237.48.107 #onyx.e.kth.se
+>e.kth.se #Royal Institute of Technology, Elektro
+130.237.32.145 #sonen.e.kth.se
+130.237.48.7 #anden.e.kth.se
+130.237.48.244 #fadern.e.kth.se
+>hallf.kth.se #Royal Institute of Technology, HALLF
+130.237.24.141 #rasmus13.hallf.kth.se
+130.237.24.152 #rasmus3.hallf.kth.se
+130.237.24.177 #rasmus29.hallf.kth.se
+>isk.kth.se #Royal Institute of Technology, ISK
+130.237.202.12 #afsdb2.isk.kth.se
+130.237.206.13 #afsdb1.isk.kth.se
+130.237.209.141 #afsdb3.isk.kth.se
+>it.kth.se #Royal Institute of Technology, IT
+130.237.212.15 #ptah.it.kth.se
+130.237.212.16 #toth.it.kth.se
+130.237.215.7 #isis.it.kth.se
+>md.kth.se #Royal Institute of Technology, MMK
+130.237.57.68 #trinity.md.kth.se
+130.237.57.72 #morpheus.md.kth.se
+130.237.67.230 #neo.speech.kth.se
+>mech.kth.se #Royal Institute of Technology, MECH
+130.237.233.142 #matterhorn.mech.kth.se
+130.237.233.143 #castor.mech.kth.se
+130.237.233.144 #pollux.mech.kth.se
+>nada.kth.se #Royal Institute of Technology, NADA
+130.237.222.20 #kosmos.nada.kth.se
+130.237.223.12 #sputnik.nada.kth.se
+130.237.224.78 #mir.nada.kth.se
+130.237.227.23 #gagarin.nada.kth.se
+130.237.228.28 #laika.nada.kth.se
+>pdc.kth.se #Royal Institute of Technology, PDC
+130.237.232.29 #crab.pdc.kth.se
+130.237.232.112 #anna.pdc.kth.se
+130.237.232.114 #hokkigai.pdc.kth.se
+>stacken.kth.se #Stacken Computer Club
+130.237.234.3 #milko.stacken.kth.se
+130.237.234.43 #hot.stacken.kth.se
+130.237.237.230 #fishburger.stacken.kth.se
+>syd.kth.se #Royal Institute of Technology, KTH-Syd
+130.237.83.23 #afs.haninge.kth.se
+>physto.se #Physics department Stockholm University
+130.237.205.36 #sysafs1.physto.se
+130.237.205.72 #sysafs2.physto.se
+>sanchin.se #Sanchin Consulting AB, Sweden
+192.195.148.10 #sesan.sanchin.se
+>su.se #Stockholm University
+130.237.162.81 #afsdb1.su.se
+130.237.162.82 #afsdb2.su.se
+>f9.ijs.si #F9, Jozef Stefan Institue
+194.249.156.1 #brenta.ijs.si
+>p-ng.si #Nova Gorica Polytechnic
+193.2.120.2 #solkan.p-ng.si
+>phy.bris.ac.uk #Bristol University - phyics
+137.222.58.9 #afs1.phy.bris.ac.uk
+>hep.man.ac.uk #Manchester HEP
+194.36.2.3 #afs1.hep.man.ac.uk
+194.36.2.4 #afs2.hep.man.ac.uk
+194.36.2.5 #afs3.hep.man.ac.uk
+>rl.ac.uk #Rutherford Appleton Lab, England
+130.246.183.164 #wallace.cc.rl.ac.uk
diff --git a/src/WINNT/install/wix/Icon/ico_AcctManager.ico b/src/WINNT/install/wix/Icon/ico_AcctManager.ico
new file mode 100644
index 0000000000..321a135ddd
Binary files /dev/null and b/src/WINNT/install/wix/Icon/ico_AcctManager.ico differ
diff --git a/src/WINNT/install/wix/Icon/ico_Help.ico b/src/WINNT/install/wix/Icon/ico_Help.ico
new file mode 100644
index 0000000000..2ed9e7a293
Binary files /dev/null and b/src/WINNT/install/wix/Icon/ico_Help.ico differ
diff --git a/src/WINNT/install/wix/Icon/ico_ServerManager.ico b/src/WINNT/install/wix/Icon/ico_ServerManager.ico
new file mode 100644
index 0000000000..1827121ed0
Binary files /dev/null and b/src/WINNT/install/wix/Icon/ico_ServerManager.ico differ
diff --git a/src/WINNT/install/wix/Icon/ico_afscreds.ico b/src/WINNT/install/wix/Icon/ico_afscreds.ico
new file mode 100644
index 0000000000..1abfe161ef
Binary files /dev/null and b/src/WINNT/install/wix/Icon/ico_afscreds.ico differ
diff --git a/src/WINNT/install/wix/Icon/ico_afssvrcfg.ico b/src/WINNT/install/wix/Icon/ico_afssvrcfg.ico
new file mode 100644
index 0000000000..f06b8ace54
Binary files /dev/null and b/src/WINNT/install/wix/Icon/ico_afssvrcfg.ico differ
diff --git a/src/WINNT/install/wix/NTMakefile b/src/WINNT/install/wix/NTMakefile
new file mode 100644
index 0000000000..ce69def93e
--- /dev/null
+++ b/src/WINNT/install/wix/NTMakefile
@@ -0,0 +1,73 @@
+RELDIR=WINNT\install\wix
+!INCLUDE ..\..\..\config\NTMakefile.$(SYS_NAME)
+!INCLUDE ..\..\..\config\NTMakefile.version
+
+MEDIADIR = $(DESTDIR)\WinInstall
+MEDIABINDIR = $(MEDIADIR)\Dll
+
+MSIFILE = $(MEDIADIR)\openafs-$(LANG).msi
+
+WIXINCLUDES = \
+ config.wxi \
+ feature.wxi \
+ files.wxi \
+ language_config.wxi \
+ property.wxi \
+ registry.wxi \
+ lang\$(LANG)\ui.wxi
+
+WIXOBJ = $(OJT)\openafs-$(LANG).wixobj
+
+LANGUAGES=en_US de_DE es_ES ja_JP ko_KR pt_BR zh_CN zh_TW
+
+languages:
+# Don't bother with non en_US for now. The other builds comprise of either
+# verbatim copies of en_US files, partial translations or doesn't build
+# (no languages resources). Someday when OpenAFS 8.1029828419 comes out we'll
+# get someone to translate.
+# for %l in ( $(LANGUAGES ) do (
+# $(MAKE) /f NTMakefile /nologo LANG=%l lang
+# )
+ $(MAKE) /f NTMakefile /nologo LANG=en_US lang
+
+lang:: $(MSIFILE)
+
+customactions:
+ $(CD) custom
+ $(MAKE) /f NTMakefile /nologo install
+ $(CD) ..
+
+install: customactions languages
+
+$(MSIFILE): $(WIXOBJ)
+ light -nologo -out $(MSIFILE) \
+ -loc lang\$(LANG)\strings.wxl \
+ $(WIXOBJ)
+ dir $(MSIFILE)
+
+$(WIXOBJ): openafs.wxs $(WIXINCLUDES)
+ candle -nologo -out $@ \
+ "-dCellName=$(CELLNAME_DEFAULT)" \
+ -dLanguage=$(LANG) \
+ -dNumericVersion=$(AFSPRODUCT_VERSION) \
+ -dVersionMajor=$(AFSPRODUCT_VER_MAJOR) \
+ -dVersionMinor=$(AFSPRODUCT_VER_MINOR) \
+ -dVersionPatch=$(AFSPRODUCT_VER_PATCH) \
+ "-dDestDir=$(DESTDIR)\\" \
+ -dCellDbFile=CellServDB \
+ -v0 \
+ -w0 \
+ openafs.wxs
+
+# Cleanup
+clean::
+ for %l in ( $(LANGUAGES) ) do (
+ $(MAKE) /f NTMakefile /nologo LANG=%l lang_clean
+ )
+ $(CD) custom
+ $(MAKE) /f NTMakefile /nologo clean
+ $(CD) ..
+
+lang_clean:
+ -$(DEL) $(WIXOBJ)
+ -$(DEL) $(MSIFILE)
diff --git a/src/WINNT/install/wix/config.wxi b/src/WINNT/install/wix/config.wxi
new file mode 100644
index 0000000000..61875656c9
--- /dev/null
+++ b/src/WINNT/install/wix/config.wxi
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WINNT/install/wix/custom/NTMakefile b/src/WINNT/install/wix/custom/NTMakefile
new file mode 100644
index 0000000000..38b6b86304
--- /dev/null
+++ b/src/WINNT/install/wix/custom/NTMakefile
@@ -0,0 +1,56 @@
+# rcsid : $Id$
+
+RELDIR=WINNT\install\wix\custom
+!INCLUDE ..\..\..\..\config\NTMakefile.$(SYS_NAME)
+!INCLUDE ..\..\..\..\config\NTMakefile.version
+
+MEDIABINDIR = $(DESTDIR)\WinInstall\Dll
+
+EXEFILE = $(MEDIABINDIR)\instloop.exe
+
+DLLFILE = $(MEDIABINDIR)\afscustom.dll
+
+DLLEXPORTS=\
+ -EXPORT:InstallNetProvider \
+ -EXPORT:UninstallNetProvider \
+ -EXPORT:ConfigureClientService \
+ -EXPORT:ConfigureServerService \
+ -EXPORT:AbortMsiImmediate \
+ -EXPORT:UninstallNsisInstallation
+
+DLLLIBFILES=\
+ msi.lib advapi32.lib
+
+LINK=link
+
+# afscustom.dll
+
+$(OUT)\afscustom.obj: afscustom.cpp
+ $(CC) -ML -c /Fo$@ $**
+
+$(DLLFILE): $(OUT)\afscustom.obj
+ $(LINK) -DLL $(DLLEXPORTS) \
+ -OUT:$@ $** $(DLLLIBFILES)
+
+# instloop.exe
+
+SOURCEFILES = instloop.c renameconnection.cpp wmi.cpp
+OBJFILES = $(OUT)\instloop.obj $(OUT)\renameconnection.obj $(OUT)\wmi.obj
+EXELIBFILES = setupapi.lib msi.lib uuid.lib Shell32.lib ole32.lib advapi32.lib wbemuuid.lib
+
+$(OUT)\instloop.obj: instloop.c
+ $(CC) -ML -c -DUNICODE -D_UNICODE /Fo$@ $**
+
+$(OUT)\renameconnection.obj: renameconnection.cpp
+ $(CC) -ML -c -DUNICODE -D_UNICODE /Fo$@ $**
+
+$(OUT)\wmi.obj: wmi.cpp
+ $(CC) -I$(NTDDKDIR) -ML -c -DUNICODE -D_UNICODE /Fo$@ $**
+
+$(EXEFILE): $(OBJFILES)
+ $(LINK) /OUT:$@ $(OBJFILES) $(EXELIBFILES)
+
+
+install: $(EXEFILE) $(DLLFILE)
+
+clean ::
diff --git a/src/WINNT/install/wix/custom/afscustom.cpp b/src/WINNT/install/wix/custom/afscustom.cpp
new file mode 100644
index 0000000000..816a306985
--- /dev/null
+++ b/src/WINNT/install/wix/custom/afscustom.cpp
@@ -0,0 +1,353 @@
+/**************************************************************
+* afscustom.cpp : Dll implementing custom action to install AFS
+*
+* The functions in this file are for use as entry points
+* for calls from MSI only. The specific MSI parameters
+* are noted in the comments section of each of the
+* functions.
+*
+* rcsid: $Id$
+**************************************************************/
+
+// Only works for Win2k and above
+
+#define _WIN32_WINNT 0x0500
+
+#include "afscustom.h"
+#include "tchar.h"
+
+void ShowMsiError( MSIHANDLE hInstall, DWORD errcode, DWORD param ){
+ MSIHANDLE hRecord;
+
+ hRecord = MsiCreateRecord(3);
+ MsiRecordClearData(hRecord);
+ MsiRecordSetInteger(hRecord, 1, errcode);
+ MsiRecordSetInteger(hRecord, 2, param);
+
+ MsiProcessMessage( hInstall, INSTALLMESSAGE_ERROR, hRecord );
+
+ MsiCloseHandle( hRecord );
+}
+
+/* Abort the installation (called as an immediate custom action) */
+MSIDLLEXPORT AbortMsiImmediate( MSIHANDLE hInstall ) {
+ DWORD rv;
+ DWORD dwSize = 0;
+ LPTSTR sReason = NULL;
+ LPTSTR sFormatted = NULL;
+ MSIHANDLE hRecord = NULL;
+ LPTSTR cAbortReason = _T("ABORTREASON");
+
+ rv = MsiGetProperty( hInstall, cAbortReason, _T(""), &dwSize );
+ if(rv != ERROR_MORE_DATA) goto _cleanup;
+
+ sReason = new TCHAR[ ++dwSize ];
+
+ rv = MsiGetProperty( hInstall, cAbortReason, sReason, &dwSize );
+
+ if(rv != ERROR_SUCCESS) goto _cleanup;
+
+ hRecord = MsiCreateRecord(3);
+ MsiRecordClearData(hRecord);
+ MsiRecordSetString(hRecord, 0, sReason);
+
+ dwSize = 0;
+
+ rv = MsiFormatRecord(hInstall, hRecord, "", &dwSize);
+ if(rv != ERROR_MORE_DATA) goto _cleanup;
+
+ sFormatted = new TCHAR[ ++dwSize ];
+
+ rv = MsiFormatRecord(hInstall, hRecord, sFormatted, &dwSize);
+
+ if(rv != ERROR_SUCCESS) goto _cleanup;
+
+ MsiCloseHandle(hRecord);
+
+ hRecord = MsiCreateRecord(3);
+ MsiRecordClearData(hRecord);
+ MsiRecordSetInteger(hRecord, 1, ERR_ABORT);
+ MsiRecordSetString(hRecord,2, sFormatted);
+ MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecord);
+
+_cleanup:
+ if(sFormatted) delete sFormatted;
+ if(hRecord) MsiCloseHandle( hRecord );
+ if(sReason) delete sReason;
+
+ return ~ERROR_SUCCESS;
+}
+
+/* Configure the client and server services */
+MSIDLLEXPORT ConfigureClientService( MSIHANDLE hInstall ) {
+ DWORD rv = ConfigService( 1 );
+ if(rv != ERROR_SUCCESS) {
+ ShowMsiError( hInstall, ERR_SCC_FAILED, rv );
+ }
+ return rv;
+}
+
+MSIDLLEXPORT ConfigureServerService( MSIHANDLE hInstall ) {
+ DWORD rv = ConfigService( 2 );
+ if(rv != ERROR_SUCCESS) {
+ ShowMsiError( hInstall, ERR_SCS_FAILED, rv );
+ }
+ return ERROR_SUCCESS;
+}
+
+DWORD ConfigService( int svc ) {
+ SC_HANDLE scm = NULL;
+ SC_HANDLE hsvc = NULL;
+ SC_LOCK scl = NULL;
+ DWORD rv = ERROR_SUCCESS;
+
+ scm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+ if(scm == NULL) {rv = GetLastError(); goto _cleanup; }
+
+ scl = LockServiceDatabase(scm);
+ if(scl == NULL) {rv = GetLastError(); goto _cleanup; }
+
+ hsvc = OpenService( scm, ((svc==1)? _T("TransarcAFSDaemon") : _T("TransarcAFSServer")), SERVICE_ALL_ACCESS);
+ if(hsvc == NULL) {rv = GetLastError(); goto _cleanup; }
+
+ SERVICE_FAILURE_ACTIONS sfa;
+ SC_ACTION saact[3];
+
+ sfa.dwResetPeriod = 3600; // one hour
+ sfa.lpRebootMsg = NULL;
+ sfa.lpCommand = NULL;
+ sfa.cActions = 3;
+ sfa.lpsaActions = saact;
+
+ saact[0].Type = SC_ACTION_RESTART;
+ saact[0].Delay = 5000;
+ saact[1].Type = SC_ACTION_RESTART;
+ saact[1].Delay = 5000;
+ saact[2].Type = SC_ACTION_NONE;
+ saact[2].Delay = 5000;
+
+ if(!ChangeServiceConfig2(hsvc, SERVICE_CONFIG_FAILURE_ACTIONS, &sfa))
+ rv = GetLastError();
+
+_cleanup:
+ if(hsvc) CloseServiceHandle(hsvc);
+ if(scl) UnlockServiceDatabase(scl);
+ if(scm) CloseServiceHandle(scm);
+
+ return rv;
+}
+
+/* Sets the registry keys required for the functioning of the network
+provider */
+
+MSIDLLEXPORT InstallNetProvider( MSIHANDLE hInstall ) {
+ return InstNetProvider( hInstall, 1 );
+}
+
+MSIDLLEXPORT UninstallNetProvider( MSIHANDLE hInstall) {
+ return InstNetProvider( hInstall, 0 );
+}
+
+DWORD InstNetProvider(MSIHANDLE hInstall, int bInst) {
+ LPTSTR strOrder;
+ HKEY hkOrder;
+ LONG rv;
+ DWORD dwSize;
+ HANDLE hProcHeap;
+
+ strOrder = (LPTSTR) 0;
+
+ CHECK(rv = RegOpenKeyEx( HKEY_LOCAL_MACHINE, STR_KEY_ORDER, 0, KEY_READ | KEY_WRITE, &hkOrder ));
+
+ dwSize = 0;
+ CHECK(rv = RegQueryValueEx( hkOrder, STR_VAL_ORDER, NULL, NULL, NULL, &dwSize ) );
+
+ strOrder = new TCHAR[ (dwSize + STR_SERVICE_LEN) * sizeof(TCHAR) ];
+
+ CHECK(rv = RegQueryValueEx( hkOrder, STR_VAL_ORDER, NULL, NULL, (LPBYTE) strOrder, &dwSize));
+
+ npi_CheckAndAddRemove( strOrder, STR_SERVICE , bInst);
+
+ dwSize = (lstrlen( strOrder ) + 1) * sizeof(TCHAR);
+
+ CHECK(rv = RegSetValueEx( hkOrder, STR_VAL_ORDER, NULL, REG_SZ, (LPBYTE) strOrder, dwSize ));
+
+ /* everything else should be set by the MSI tables */
+ rv = ERROR_SUCCESS;
+_cleanup:
+
+ if( rv != ERROR_SUCCESS ) {
+ ShowMsiError( hInstall, ERR_NPI_FAILED, rv );
+ }
+
+ if(strOrder) delete strOrder;
+
+ return rv;
+}
+
+/* Check and add or remove networkprovider key value
+ str : target string
+ str2: string to add/remove
+ bInst: == 1 if string should be added to target if not already there, otherwise remove string from target if present.
+ */
+int npi_CheckAndAddRemove( LPTSTR str, LPTSTR str2, int bInst ) {
+
+ LPTSTR target, charset, match;
+ int ret=0;
+
+ target = new TCHAR[lstrlen(str)+3];
+ lstrcpy(target,_T(","));
+ lstrcat(target,str);
+ lstrcat(target,_T(","));
+ charset = new TCHAR[lstrlen(str2)+3];
+ lstrcpy(charset,_T(","));
+ lstrcat(charset,str2);
+ lstrcat(charset,_T(","));
+
+ match = _tcsstr(target, charset);
+
+ if ((match) && (bInst)) {
+ ret = INP_ERR_PRESENT;
+ goto cleanup;
+ }
+
+ if ((!match) && (!bInst)) {
+ ret = INP_ERR_ABSENT;
+ goto cleanup;
+ }
+
+ if (bInst) // && !match
+ {
+ lstrcat(str, _T(","));
+ lstrcat(str, str2);
+ ret = INP_ERR_ADDED;
+ goto cleanup;
+ }
+
+ // if (!bInst) && (match)
+ {
+ lstrcpy(str+(match-target),match+lstrlen(str2)+2);
+ str[lstrlen(str)-1]=_T('\0');
+ ret = INP_ERR_REMOVED;
+ goto cleanup;
+ }
+
+cleanup:
+
+ delete target;
+ delete charset;
+ return ret;
+}
+
+/* Uninstall NSIS */
+MSIDLLEXPORT UninstallNsisInstallation( MSIHANDLE hInstall )
+{
+ DWORD rv = ERROR_SUCCESS;
+ // lookup the NSISUNINSTALL property value
+ LPTSTR cNsisUninstall = _T("NSISUNINSTALL");
+ HANDLE hIo = NULL;
+ DWORD dwSize = 0;
+ LPTSTR strPathUninst = NULL;
+ HANDLE hJob = NULL;
+ STARTUPINFO sInfo;
+ PROCESS_INFORMATION pInfo;
+
+ pInfo.hProcess = NULL;
+ pInfo.hThread = NULL;
+
+ rv = MsiGetProperty( hInstall, cNsisUninstall, _T(""), &dwSize );
+ if(rv != ERROR_MORE_DATA) goto _cleanup;
+
+ strPathUninst = new TCHAR[ ++dwSize ];
+
+ rv = MsiGetProperty( hInstall, cNsisUninstall, strPathUninst, &dwSize );
+ if(rv != ERROR_SUCCESS) goto _cleanup;
+
+ // Create a process for the uninstaller
+ sInfo.cb = sizeof(sInfo);
+ sInfo.lpReserved = NULL;
+ sInfo.lpDesktop = _T("");
+ sInfo.lpTitle = _T("Foo");
+ sInfo.dwX = 0;
+ sInfo.dwY = 0;
+ sInfo.dwXSize = 0;
+ sInfo.dwYSize = 0;
+ sInfo.dwXCountChars = 0;
+ sInfo.dwYCountChars = 0;
+ sInfo.dwFillAttribute = 0;
+ sInfo.dwFlags = 0;
+ sInfo.wShowWindow = 0;
+ sInfo.cbReserved2 = 0;
+ sInfo.lpReserved2 = 0;
+ sInfo.hStdInput = 0;
+ sInfo.hStdOutput = 0;
+ sInfo.hStdError = 0;
+
+ if(!CreateProcess(
+ strPathUninst,
+ _T("Uninstall /S"),
+ NULL,
+ NULL,
+ FALSE,
+ CREATE_SUSPENDED,
+ NULL,
+ NULL,
+ &sInfo,
+ &pInfo)) {
+ pInfo.hProcess = NULL;
+ pInfo.hThread = NULL;
+ rv = 40;
+ goto _cleanup;
+ };
+
+ // Create a job object to contain the NSIS uninstall process tree
+
+ JOBOBJECT_ASSOCIATE_COMPLETION_PORT acp;
+
+ acp.CompletionKey = 0;
+
+ hJob = CreateJobObject(NULL, _T("NSISUninstallObject"));
+ if(!hJob) {
+ rv = 41;
+ goto _cleanup;
+ }
+
+ hIo = CreateIoCompletionPort(INVALID_HANDLE_VALUE,0,0,0);
+ if(!hIo) {
+ rv = 42;
+ goto _cleanup;
+ }
+
+ acp.CompletionPort = hIo;
+
+ SetInformationJobObject( hJob, JobObjectAssociateCompletionPortInformation, &acp, sizeof(acp));
+
+ AssignProcessToJobObject( hJob, pInfo.hProcess );
+
+ ResumeThread( pInfo.hThread );
+
+ DWORD a,b,c;
+ for(;;) {
+ if(!GetQueuedCompletionStatus(hIo, &a, (PULONG_PTR) &b, (LPOVERLAPPED *) &c, INFINITE)) {
+ Sleep(1000);
+ continue;
+ }
+ if(a == JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO) {
+ break;
+ }
+ }
+
+ rv = ERROR_SUCCESS;
+
+_cleanup:
+ if(hIo) CloseHandle(hIo);
+ if(pInfo.hProcess) CloseHandle( pInfo.hProcess );
+ if(pInfo.hThread) CloseHandle( pInfo.hThread );
+ if(hJob) CloseHandle(hJob);
+ if(strPathUninst) delete strPathUninst;
+
+ if(rv != ERROR_SUCCESS) {
+ ShowMsiError( hInstall, ERR_NSS_FAILED, rv );
+ }
+ return rv;
+}
diff --git a/src/WINNT/install/wix/custom/afscustom.h b/src/WINNT/install/wix/custom/afscustom.h
new file mode 100644
index 0000000000..3ad73750a6
--- /dev/null
+++ b/src/WINNT/install/wix/custom/afscustom.h
@@ -0,0 +1,56 @@
+/* afsMsiTools.h
+ *
+ * Declarations for OpenAFS MSI setup tools
+ *
+ * rcsid : $Id$
+ */
+
+#ifndef __afsMsiTools_H__
+#define __afsMsiTools_H__
+
+#include
+#include
+#include
+#include
+#include
+
+#define MSIDLLEXPORT UINT __stdcall
+
+#define CHECK(x) if((x)) goto _cleanup
+
+#define CHECKX(x,y) if(!(x)) { msiErr = (y); goto _cleanup; }
+
+#define CHECK2(x,y) if((x)) { msiErr = (y); goto _cleanup; }
+
+#define STR_KEY_ORDER _T("SYSTEM\\CurrentControlSet\\Control\\NetworkProvider\\Order")
+#define STR_VAL_ORDER _T("ProviderOrder")
+
+#define STR_SERVICE _T("TransarcAFSDaemon")
+#define STR_SERVICE_LEN 18
+
+#define INP_ERR_PRESENT 1
+#define INP_ERR_ADDED 2
+#define INP_ERR_ABSENT 3
+#define INP_ERR_REMOVED 4
+
+#define ERR_NPI_FAILED 4001
+#define ERR_SCC_FAILED 4002
+#define ERR_SCS_FAILED 4003
+#define ERR_ABORT 4004
+#define ERR_NSS_FAILED 4005
+
+/* non-exported */
+int npi_CheckAndAddRemove( LPTSTR, LPTSTR, int );
+DWORD InstNetProvider(MSIHANDLE, int);
+void ShowMsiError(MSIHANDLE, DWORD, DWORD);
+DWORD ConfigService(int);
+
+/* exported */
+MSIDLLEXPORT InstallNetProvider( MSIHANDLE );
+MSIDLLEXPORT UninstallNetProvider ( MSIHANDLE );
+MSIDLLEXPORT ConfigureClientService( MSIHANDLE );
+MSIDLLEXPORT ConfigureServerService( MSIHANDLE );
+MSIDLLEXPORT AbortMsiImmediate( MSIHANDLE );
+MSIDLLEXPORT UninstallNsisInstallation( MSIHANDLE hInstall );
+
+#endif /*__afsMsiTools_H__*/
diff --git a/src/WINNT/install/wix/custom/instloop.c b/src/WINNT/install/wix/custom/instloop.c
new file mode 100644
index 0000000000..dd0fa3101d
--- /dev/null
+++ b/src/WINNT/install/wix/custom/instloop.c
@@ -0,0 +1,594 @@
+#include
+#include
+#define INITGUID
+#include
+#include
+#include
+#include
+
+#undef REDIRECT_STDOUT
+
+#ifdef USE_PAUSE
+#define PAUSE \
+ do { \
+ char c; \
+ printf("PAUSED - PRESS ENTER TO CONTINUE\n"); \
+ scanf("%c", &c); \
+ } while(0)
+#else
+#define PAUSE
+#endif
+
+/*#define USE_SLEEP*/
+
+#ifdef USE_SLEEP
+#define SLEEP Sleep(10*1000)
+#else
+#define SLEEP
+#endif
+
+
+static void ShowUsage(void);
+DWORD InstallLoopBack(LPCTSTR pConnectionName, LPCTSTR ip, LPCTSTR mask);
+DWORD UnInstallLoopBack(void);
+int RenameConnection(PCWSTR GuidString, PCWSTR pszNewName);
+DWORD SetIpAddress(LPCWSTR guid, LPCWSTR ip, LPCWSTR mask);
+HRESULT LoopbackBindings (LPCWSTR loopback_guid);
+BOOL UpdateHostsFile( LPCWSTR swName, LPCWSTR swIp, LPCSTR szFilename, BOOL bPre );
+
+#define DRIVER_DESC "Microsoft Loopback Adapter"
+#define DRIVER _T("loopback")
+#define MANUFACTURE _T("microsoft")
+#define DEFAULT_NAME _T("AFS")
+#define DEFAULT_IP _T("10.254.254.253")
+#define DEFAULT_MASK _T("255.255.255.252")
+
+static void
+ShowUsage(void)
+{
+ printf("instloop [-i [name [ip mask]] | -u]\n\n");
+ printf(" -i install the %s\n", DRIVER_DESC);
+ _tprintf(_T(" (if unspecified, uses name %s,\n"), DEFAULT_NAME);
+ _tprintf(_T(" ip %s, and mask %s)\n"), DEFAULT_IP, DEFAULT_MASK);
+ printf(" -u uninstall the %s\n", DRIVER_DESC);
+}
+
+static void
+DisplayStartup(BOOL bInstall)
+{
+ printf("%snstalling the %s\n"
+ " (Note: This may take up to a minute or two...)\n",
+ bInstall ? "I" : "Un",
+ DRIVER_DESC);
+
+}
+
+static void
+DisplayResult(BOOL bInstall, DWORD rc)
+{
+ if (rc)
+ {
+ printf("Could not %sinstall the %s\n", bInstall ? "" : "un",
+ DRIVER_DESC);
+ SLEEP;
+ PAUSE;
+ }
+}
+
+
+int _tmain(int argc, TCHAR *argv[])
+{
+ DWORD rc = 0;
+#ifdef REDIRECT_STDOUT
+ FILE *fh = NULL;
+#endif
+
+ PAUSE;
+
+#ifdef REDIRECT_STDOUT
+ fh = freopen("instlog.txt","a+", stdout);
+#endif
+
+ if (argc > 1)
+ {
+ if (_tcsicmp(argv[1], _T("-i")) == 0)
+ {
+ TCHAR* name = DEFAULT_NAME;
+ TCHAR* ip = DEFAULT_IP;
+ TCHAR* mask = DEFAULT_MASK;
+
+ if (argc > 2)
+ {
+ name = argv[2];
+ if (argc > 3)
+ {
+ if (argc < 5)
+ {
+ ShowUsage();
+#ifdef REDIRECT_STDOUT
+ fflush(fh); fclose(fh);
+#endif
+ return 1;
+ }
+ else
+ {
+ ip = argv[3];
+ mask = argv[4];
+ }
+ }
+ }
+ DisplayStartup(TRUE);
+ if(IsLoopbackInstalled()) {
+ printf("Loopback already installed\n");
+ rc = 0; /* don't signal an error. */
+ } else {
+ rc = InstallLoopBack(name, ip, mask);
+ }
+ DisplayResult(TRUE, rc);
+#ifdef REDIRECT_STDOUT
+ fflush(fh); fclose(fh);
+#endif
+ return rc;
+ }
+ else if (_tcsicmp(argv[1], _T("-u")) == 0)
+ {
+ DisplayStartup(FALSE);
+ rc = UnInstallLoopBack();
+ DisplayResult(FALSE, rc);
+#ifdef REDIRECT_STDOUT
+ fflush(fh); fclose(fh);
+#endif
+ return rc;
+ }
+ ShowUsage();
+#ifdef REDIRECT_STDOUT
+ fflush(fh); fclose(fh);
+#endif
+ return 1;
+ }
+ ShowUsage();
+#ifdef REDIRECT_STDOUT
+ fflush(fh); fclose(fh);
+#endif
+ return 0;
+}
+
+
+DWORD UnInstallLoopBack(void)
+{
+ BOOL ok;
+ DWORD ret = 0;
+ GUID netGuid;
+ HDEVINFO hDeviceInfo = INVALID_HANDLE_VALUE;
+ SP_DEVINFO_DATA DeviceInfoData;
+ TCHAR* deviceDesc;
+ DWORD index = 0;
+ BOOL found = FALSE;
+ DWORD size = 0;
+
+ // initialize the structure size
+ DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
+
+ // copy the net class GUID
+ memcpy(&netGuid, &GUID_DEVCLASS_NET, sizeof(GUID_DEVCLASS_NET));
+
+ // return a device info set contains all installed devices of the Net class
+ hDeviceInfo = SetupDiGetClassDevs(&netGuid, NULL, NULL, DIGCF_PRESENT);
+
+ if (hDeviceInfo == INVALID_HANDLE_VALUE)
+ return GetLastError();
+
+ deviceDesc = malloc(MAX_PATH*sizeof(TCHAR));
+ // enumerate the driver info list
+ while (SetupDiEnumDeviceInfo(hDeviceInfo, index, &DeviceInfoData))
+ {
+ // try to get the DeviceDesc registry property
+ ok = SetupDiGetDeviceRegistryProperty(hDeviceInfo, &DeviceInfoData,
+ SPDRP_DEVICEDESC,
+ NULL, (PBYTE)deviceDesc,
+ MAX_PATH * sizeof(TCHAR), &size);
+ if (!ok)
+ {
+ ret = GetLastError();
+ if (ret != ERROR_INSUFFICIENT_BUFFER)
+ break;
+ // if the buffer is too small, reallocate
+ free(deviceDesc);
+ deviceDesc = malloc(size);
+ ok = SetupDiGetDeviceRegistryProperty(hDeviceInfo,
+ &DeviceInfoData,
+ SPDRP_DEVICEDESC,
+ NULL, (PBYTE)deviceDesc,
+ size, NULL);
+ if (!ok)
+ break;
+ }
+
+ // case insensitive comparison
+ _tcslwr(deviceDesc);
+ if( _tcsstr(deviceDesc, DRIVER))
+ {
+ found = TRUE;
+ break;
+ }
+
+ index++;
+ }
+
+ free(deviceDesc);
+
+ if (found == FALSE)
+ {
+ ret = GetLastError();
+ printf("The %s does not seem to be installed\n", DRIVER_DESC);
+ goto cleanup;
+ }
+
+ ok = SetupDiSetSelectedDevice(hDeviceInfo, &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+ ok = SetupDiCallClassInstaller(DIF_REMOVE, hDeviceInfo, &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+cleanup:
+ // clean up the device info set
+ if (hDeviceInfo != INVALID_HANDLE_VALUE)
+ SetupDiDestroyDeviceInfoList(hDeviceInfo);
+
+ return ret;
+}
+
+BOOL IsLoopbackInstalled()
+{
+ char *hwid = "*MSLOOP";
+ HDEVINFO DeviceInfoSet;
+ SP_DEVINFO_DATA DeviceInfoData;
+ DWORD i,err;
+ BOOL found;
+
+ //
+ // Create a Device Information Set with all present devices.
+ //
+ DeviceInfoSet = SetupDiGetClassDevs(NULL, 0, 0, DIGCF_ALLCLASSES | DIGCF_PRESENT ); // All devices present on system
+ if (DeviceInfoSet == INVALID_HANDLE_VALUE)
+ {
+ return FALSE; // nothing installed?
+ }
+
+ //
+ // Enumerate through all Devices.
+ //
+ found = FALSE;
+ DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
+ for (i=0; SetupDiEnumDeviceInfo(DeviceInfoSet,i,&DeviceInfoData); i++)
+ {
+ DWORD DataT;
+ LPTSTR p,buffer = NULL;
+ DWORD buffersize = 0;
+
+ //
+ // We won't know the size of the HardwareID buffer until we call
+ // this function. So call it with a null to begin with, and then
+ // use the required buffer size to Alloc the nessicary space.
+ // Keep calling we have success or an unknown failure.
+ //
+ while (!SetupDiGetDeviceRegistryProperty(DeviceInfoSet,&DeviceInfoData,SPDRP_HARDWAREID,&DataT,(PBYTE)buffer,buffersize,&buffersize))
+ {
+ if (GetLastError() == ERROR_INVALID_DATA)
+ {
+ // May be a Legacy Device with no hwid. Continue.
+ break;
+ }
+ else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
+ {
+ // We need to change the buffer size.
+ if (buffer)
+ LocalFree(buffer);
+ buffer = (char *)LocalAlloc(LPTR,buffersize);
+ }
+ else
+ {
+ goto cleanup_DeviceInfo;
+ }
+ }
+
+ if (GetLastError() == ERROR_INVALID_DATA)
+ continue;
+
+ // Compare each entry in the buffer multi-sz list with our hwid.
+ for (p=buffer; *p && (p < &buffer[buffersize]); p += lstrlen(p)+1)
+ {
+ if (!strcmp(hwid,p))
+ {
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (buffer) LocalFree(buffer);
+ if (found) break;
+ }
+
+ // Cleanup.
+cleanup_DeviceInfo:
+ err = GetLastError();
+ SetupDiDestroyDeviceInfoList(DeviceInfoSet);
+ SetLastError(err);
+
+ return found;
+}
+
+
+DWORD InstallLoopBack(LPCTSTR pConnectionName, LPCTSTR ip, LPCTSTR mask)
+{
+ BOOL ok;
+ DWORD ret = 0;
+ GUID netGuid;
+ HDEVINFO hDeviceInfo = INVALID_HANDLE_VALUE;
+ SP_DEVINFO_DATA DeviceInfoData;
+ SP_DRVINFO_DATA DriverInfoData;
+ SP_DEVINSTALL_PARAMS DeviceInstallParams;
+ TCHAR className[MAX_PATH];
+ TCHAR temp[MAX_PATH];
+ DWORD index = 0;
+ BOOL found = FALSE;
+ BOOL registered = FALSE;
+ BOOL destroyList = FALSE;
+
+ HKEY hkey = NULL;
+ DWORD cbSize;
+ DWORD dwValueType;
+ TCHAR pCfgGuidString[40];
+
+ // initialize the structure size
+ DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
+ DriverInfoData.cbSize = sizeof(SP_DRVINFO_DATA);
+
+ // copy the net class GUID
+ memcpy(&netGuid, &GUID_DEVCLASS_NET, sizeof(GUID_DEVCLASS_NET));
+
+ // create an empty device info set associated with the net class GUID
+ hDeviceInfo = SetupDiCreateDeviceInfoList(&netGuid, NULL);
+ if (hDeviceInfo == INVALID_HANDLE_VALUE)
+ return GetLastError();
+
+ // get the class name from GUID
+ ok = SetupDiClassNameFromGuid(&netGuid, className, MAX_PATH, NULL);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ // create a device info element and add the new device instance
+ // key to registry
+ ok = SetupDiCreateDeviceInfo(hDeviceInfo, className, &netGuid, NULL, NULL,
+ DICD_GENERATE_ID, &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ // select the newly created device info to be the currently
+ // selected member
+ ok = SetupDiSetSelectedDevice(hDeviceInfo, &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ // build a list of class drivers
+ ok = SetupDiBuildDriverInfoList(hDeviceInfo, &DeviceInfoData,
+ SPDIT_CLASSDRIVER);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ destroyList = TRUE;
+
+ // enumerate the driver info list
+ while (SetupDiEnumDriverInfo(hDeviceInfo, &DeviceInfoData,
+ SPDIT_CLASSDRIVER, index, &DriverInfoData))
+ {
+ // if the manufacture is microsoft
+ if (_tcsicmp(DriverInfoData.MfgName, MANUFACTURE) == 0)
+ {
+ // case insensitive search for loopback
+ _tcscpy(temp, DriverInfoData.Description);
+ _tcslwr(temp);
+ if( _tcsstr(temp, DRIVER))
+ {
+ found = TRUE;
+ break;
+ }
+ }
+ index++;
+ }
+
+ if (!found)
+ {
+ ret = GetLastError();
+ printf("Could not find the %s driver to install\n", DRIVER_DESC);
+ goto cleanup;
+ }
+
+ // set the loopback driver to be the currently selected
+ ok = SetupDiSetSelectedDriver(hDeviceInfo, &DeviceInfoData,
+ &DriverInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ // register the phantom device to repare for install
+ ok = SetupDiCallClassInstaller(DIF_REGISTERDEVICE, hDeviceInfo,
+ &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ // registered, but remove if errors occur in the following code
+ registered = TRUE;
+
+ // ask the installer if we can install the device
+ ok = SetupDiCallClassInstaller(DIF_ALLOW_INSTALL, hDeviceInfo,
+ &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ if (ret != ERROR_DI_DO_DEFAULT)
+ {
+ goto cleanup;
+ }
+ else
+ ret = 0;
+ }
+
+ // install the files first
+ ok = SetupDiCallClassInstaller(DIF_INSTALLDEVICEFILES, hDeviceInfo,
+ &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ // get the device install parameters and disable filecopy
+ DeviceInstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
+ ok = SetupDiGetDeviceInstallParams(hDeviceInfo, &DeviceInfoData,
+ &DeviceInstallParams);
+ if (ok)
+ {
+ DeviceInstallParams.Flags |= DI_NOFILECOPY;
+ ok = SetupDiSetDeviceInstallParams(hDeviceInfo, &DeviceInfoData,
+ &DeviceInstallParams);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+ }
+
+ //
+ // Register any device-specific co-installers for this device,
+ //
+
+ ok = SetupDiCallClassInstaller(DIF_REGISTER_COINSTALLERS,
+ hDeviceInfo,
+ &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ //
+ // install any installer-specified interfaces.
+ // and then do the real install
+ //
+ ok = SetupDiCallClassInstaller(DIF_INSTALLINTERFACES,
+ hDeviceInfo,
+ &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+ PAUSE;
+ ok = SetupDiCallClassInstaller(DIF_INSTALLDEVICE,
+ hDeviceInfo,
+ &DeviceInfoData);
+ if (!ok)
+ {
+ ret = GetLastError();
+ PAUSE;
+ goto cleanup;
+ }
+
+ /* Skip to the end if we aren't setting the name */
+ if (!pConnectionName) goto cleanup;
+
+ // Figure out NetCfgInstanceId
+ hkey = SetupDiOpenDevRegKey(hDeviceInfo,
+ &DeviceInfoData,
+ DICS_FLAG_GLOBAL,
+ 0,
+ DIREG_DRV,
+ KEY_READ);
+ if (hkey == INVALID_HANDLE_VALUE)
+ {
+ ret = GetLastError();
+ goto cleanup;
+ }
+
+ cbSize = sizeof(pCfgGuidString);
+ ret = RegQueryValueEx(hkey, _T("NetCfgInstanceId"), NULL,
+ &dwValueType, (LPBYTE)pCfgGuidString, &cbSize);
+ RegCloseKey(hkey);
+
+ ret = RenameConnection(pCfgGuidString, pConnectionName);
+ if (ret)
+ {
+ printf("Could not set the connection name to \"%S\"\n",
+ pConnectionName);
+ goto cleanup;
+ }
+
+ if (!ip) goto cleanup;
+ ret = SetIpAddress(pCfgGuidString, ip, mask);
+ if (ret)
+ {
+ printf("Could not set the ip address and network mask\n");
+ goto cleanup;
+ }
+ ret = LoopbackBindings(pCfgGuidString);
+ if (ret)
+ {
+ printf("Could not properly set the bindings\n");
+ goto cleanup;
+ }
+ ret = !UpdateHostsFile( pConnectionName, ip, "hosts", FALSE );
+ if (ret)
+ {
+ printf("Could not update hosts file\n");
+ goto cleanup;
+ }
+ ret = !UpdateHostsFile( pConnectionName, ip, "lmhosts", TRUE );
+ if (ret)
+ {
+ printf("Could not update lmhosts file\n");
+ goto cleanup;
+ }
+
+
+cleanup:
+ // an error has occured, but the device is registered, we must remove it
+ if (ret != 0 && registered)
+ SetupDiCallClassInstaller(DIF_REMOVE, hDeviceInfo, &DeviceInfoData);
+
+ found = SetupDiDeleteDeviceInfo(hDeviceInfo, &DeviceInfoData);
+
+ // destroy the driver info list
+ if (destroyList)
+ SetupDiDestroyDriverInfoList(hDeviceInfo, &DeviceInfoData,
+ SPDIT_CLASSDRIVER);
+ // clean up the device info set
+ if (hDeviceInfo != INVALID_HANDLE_VALUE)
+ SetupDiDestroyDeviceInfoList(hDeviceInfo);
+
+ return ret;
+}
diff --git a/src/WINNT/install/wix/custom/renameconnection.cpp b/src/WINNT/install/wix/custom/renameconnection.cpp
new file mode 100644
index 0000000000..e143532b36
--- /dev/null
+++ b/src/WINNT/install/wix/custom/renameconnection.cpp
@@ -0,0 +1,94 @@
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define NETSHELL_LIBRARY _T("netshell.dll")
+
+// Use the IShellFolder API to rename the connection.
+static HRESULT rename_shellfolder(PCWSTR wGuid, PCWSTR wNewName)
+{
+ // This is the GUID for the network connections folder. It is constant.
+ // {7007ACC7-3202-11D1-AAD2-00805FC1270E}
+ const GUID CLSID_NetworkConnections = {
+ 0x7007ACC7, 0x3202, 0x11D1, {
+ 0xAA, 0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E
+ }
+ };
+ LPITEMIDLIST pidl;
+ IShellFolder *pShellFolder;
+ IMalloc *pShellMalloc;
+
+ // Build the display name in the form "::{GUID}".
+ if (wcslen(wGuid) >= MAX_PATH)
+ return E_INVALIDARG;
+ WCHAR szAdapterGuid[MAX_PATH + 2];
+ swprintf(szAdapterGuid, L"::%ls", wGuid);
+
+ // Initialize COM.
+ CoInitialize(NULL);
+
+ // Get the shell allocator.
+ HRESULT hr = SHGetMalloc(&pShellMalloc);
+ if (SUCCEEDED(hr))
+ {
+ // Create an instance of the network connections folder.
+ hr = CoCreateInstance(CLSID_NetworkConnections, NULL,
+ CLSCTX_INPROC_SERVER, IID_IShellFolder,
+ reinterpret_cast(&pShellFolder));
+ }
+ // Parse the display name.
+ if (SUCCEEDED(hr))
+ {
+ hr = pShellFolder->ParseDisplayName(NULL, NULL, szAdapterGuid, NULL,
+ &pidl, NULL);
+ }
+ if (SUCCEEDED(hr))
+ {
+ hr = pShellFolder->SetNameOf(NULL, pidl, wNewName, SHGDN_NORMAL,
+ &pidl);
+ pShellMalloc->Free(pidl);
+ }
+ CoUninitialize();
+ return hr;
+}
+
+extern "C" int RenameConnection(PCWSTR GuidString, PCWSTR NewName)
+{
+ typedef HRESULT (WINAPI *lpHrRenameConnection)(const GUID *, PCWSTR);
+ lpHrRenameConnection RenameConnectionFunc = NULL;
+ HRESULT status;
+
+ // First try the IShellFolder interface, which was unimplemented
+ // for the network connections folder before XP.
+ status = rename_shellfolder(GuidString, NewName);
+ if (status == E_NOTIMPL)
+ {
+ // The IShellFolder interface is not implemented on this platform.
+ // Try the (undocumented) HrRenameConnection API in the netshell
+ // library.
+ CLSID clsid;
+ HINSTANCE hNetShell;
+ status = CLSIDFromString((LPOLESTR) GuidString, &clsid);
+ if (FAILED(status))
+ return -1;
+ hNetShell = LoadLibrary(NETSHELL_LIBRARY);
+ if (hNetShell == NULL)
+ return -1;
+ RenameConnectionFunc =
+ (lpHrRenameConnection) GetProcAddress(hNetShell,
+ "HrRenameConnection");
+ if (RenameConnectionFunc == NULL)
+ {
+ FreeLibrary(hNetShell);
+ return -1;
+ }
+ status = RenameConnectionFunc(&clsid, NewName);
+ FreeLibrary(hNetShell);
+ }
+ if (FAILED(status))
+ return -1;
+ return 0;
+}
diff --git a/src/WINNT/install/wix/custom/wmi.cpp b/src/WINNT/install/wix/custom/wmi.cpp
new file mode 100644
index 0000000000..f125eb0aa1
--- /dev/null
+++ b/src/WINNT/install/wix/custom/wmi.cpp
@@ -0,0 +1,780 @@
+//**************************************************************************
+//
+// Description:
+//
+// Call EnableStatic method of Win32_NetworkAdapterConfiguration
+// for some network adapter GUID.
+//
+// Note:
+//
+// The EnableStatic method is notsupported on Win9x platforms.
+//
+//**************************************************************************
+
+#define _WIN32_DCOM
+#include
+#include
+#include
+#include
+
+#include
+
+/* These two are from the Windows DDK */
+#include
+#include
+
+#include
+//#include
+
+//#ifndef TEST
+//inline void printf(char*, ...) {}
+//#else
+#include
+//#endif
+
+#define CLEANUP_ON_FAILURE(hr) \
+ do { if (!SUCCEEDED(hr)) goto cleanup; } while (0)
+
+#define CLEANUP_ON_AND_SET(check, var, value) \
+ do { if (check) { (var) = (value); goto cleanup; } } while (0)
+
+#define ETCDIR "\\drivers\\etc"
+
+#define EACCES (13)
+#define ENOENT (2)
+
+DWORD AdjustMaxLana(DWORD dwMaxLana);
+
+typedef
+HRESULT
+(*FindNetworkAdapterConfigurationInstance_t)(
+ IN PVOID pContext,
+ IN IWbemServices *pSvc,
+ OUT BSTR* pPath
+ );
+
+HRESULT
+FindNetworkAdapterConfigurationInstanceByGUID(
+ IN PVOID pContext,
+ IN IWbemServices *pSvc,
+ OUT BSTR* pPath
+ )
+{
+ HRESULT hr = 0;
+ BOOL bFound = FALSE;
+ BSTR Language = 0;
+ BSTR Query = 0;
+ IEnumWbemClassObject* pEnum = 0;
+ IWbemClassObject* pObj = 0;
+ VARIANT Value;
+ VariantInit(&Value);
+ LPCWSTR adapter_guid = (LPCWSTR)pContext;
+
+ // Check arguments
+ if (!pPath || !adapter_guid || *pPath)
+ return E_INVALIDARG;
+
+ *pPath = 0;
+
+ // Query for all network adapters
+ Language = SysAllocString(L"WQL");
+ Query = SysAllocString(L"select * from Win32_NetworkAdapterConfiguration");
+
+ // Issue the query.
+ hr = pSvc->ExecQuery(Language,
+ Query,
+ WBEM_FLAG_FORWARD_ONLY, // Flags
+ 0, // Context
+ &pEnum);
+ if (!SUCCEEDED(hr))
+ {
+ printf("ExecQuery() error (0x%08X)\n", hr);
+ goto cleanup;
+ }
+
+ // Retrieve the objects in the result set.
+ while (!bFound)
+ {
+ ULONG uReturned = 0;
+
+ hr = pEnum->Next(0, // Time out
+ 1, // One object
+ &pObj,
+ &uReturned);
+ CLEANUP_ON_FAILURE(hr);
+
+ if (uReturned == 0)
+ break;
+
+ // Use the object.
+ hr = pObj->Get(L"SettingID", // property name
+ 0L,
+ &Value, // output to this variant
+ NULL,
+ NULL);
+ CLEANUP_ON_FAILURE(hr);
+
+ bFound = !wcscmp(adapter_guid, V_BSTR(&Value));
+
+ if (bFound)
+ {
+ printf("Found adapter: %S\n", V_BSTR(&Value));
+ VariantClear(&Value);
+ hr = pObj->Get(L"__RELPATH", // property name
+ 0L,
+ &Value, // output to this variant
+ NULL,
+ NULL);
+ CLEANUP_ON_FAILURE(hr);
+
+ *pPath = SysAllocString(V_BSTR(&Value));
+
+ }
+
+ VariantClear(&Value);
+
+ // Release it.
+ // ===========
+ pObj->Release(); // Release objects not owned.
+ pObj = 0;
+ }
+
+
+ // All done.
+ cleanup:
+ SysFreeString(Query);
+ SysFreeString(Language);
+ VariantClear(&Value);
+ if (pEnum)
+ pEnum->Release();
+ if (pObj)
+ pObj->Release();
+
+ return *pPath ? 0 : ( SUCCEEDED(hr) ? WBEM_E_NOT_FOUND : hr );
+}
+
+HRESULT
+SetupStringAsSafeArray(LPCWSTR s, VARIANT* v)
+{
+ HRESULT hr = 0;
+ BSTR b = 0;
+ SAFEARRAY* array = 0;
+ long index[] = {0};
+
+ if (V_VT(v) != VT_EMPTY)
+ return E_INVALIDARG;
+
+ b = SysAllocString(s);
+ CLEANUP_ON_AND_SET(!b, hr, E_OUTOFMEMORY);
+
+ array = SafeArrayCreateVector(VT_BSTR, 0, 1);
+ CLEANUP_ON_AND_SET(!array, hr, E_OUTOFMEMORY);
+
+ hr = SafeArrayPutElement(array, index, b);
+ CLEANUP_ON_FAILURE(hr);
+
+ V_VT(v) = VT_ARRAY|VT_BSTR;
+ V_ARRAY(v) = array;
+
+ cleanup:
+ if (b)
+ SysFreeString(b);
+ if (!SUCCEEDED(hr))
+ {
+ if (array)
+ SafeArrayDestroy(array);
+ }
+ return hr;
+}
+
+
+HRESULT
+WMIEnableStatic(
+ FindNetworkAdapterConfigurationInstance_t pFindInstance,
+ PVOID pContext,
+ LPCWSTR ip,
+ LPCWSTR mask
+ )
+{
+ HRESULT hr = 0;
+
+ IWbemLocator* pLocator = 0;
+ IWbemServices* pNamespace = 0;
+ IWbemClassObject* pClass = 0;
+ IWbemClassObject* pOutInst = 0;
+ IWbemClassObject* pInClass = 0;
+ IWbemClassObject* pInInst = 0;
+
+ BSTR NamespacePath = 0;
+ BSTR ClassPath = 0;
+ BSTR InstancePath = 0;
+ BSTR MethodName = 0; // needs to be BSTR for ExecMethod()
+
+ VARIANT v_ip_list;
+ VariantInit(&v_ip_list);
+
+ VARIANT v_mask_list;
+ VariantInit(&v_mask_list);
+
+ VARIANT v_ret_value;
+ VariantInit(&v_ret_value);
+
+ int count;
+
+ // end of declarations & NULL initialization
+
+ NamespacePath = SysAllocString(L"root\\cimv2");
+ CLEANUP_ON_AND_SET(!NamespacePath, hr, E_OUTOFMEMORY);
+
+ ClassPath = SysAllocString(L"Win32_NetWorkAdapterConfiguration");
+ CLEANUP_ON_AND_SET(!ClassPath, hr, E_OUTOFMEMORY);
+
+ MethodName = SysAllocString(L"EnableStatic");
+ CLEANUP_ON_AND_SET(!MethodName, hr, E_OUTOFMEMORY);
+
+ // Initialize COM and connect up to CIMOM
+
+ hr = CoInitializeEx(0, COINIT_MULTITHREADED);
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = CoInitializeSecurity(NULL, -1, NULL, NULL,
+ RPC_C_AUTHN_LEVEL_CONNECT,
+ RPC_C_IMP_LEVEL_IMPERSONATE,
+ NULL, EOAC_NONE, 0);
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER,
+ IID_IWbemLocator, (LPVOID *) &pLocator);
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = pLocator->ConnectServer(NamespacePath, NULL, NULL, NULL, 0,
+ NULL, NULL, &pNamespace);
+ CLEANUP_ON_FAILURE(hr);
+
+ printf("Connected to WMI\n");
+
+ // Set the proxy so that impersonation of the client occurs.
+ hr = CoSetProxyBlanket(pNamespace,
+ RPC_C_AUTHN_WINNT,
+ RPC_C_AUTHZ_NONE,
+ NULL,
+ RPC_C_AUTHN_LEVEL_CALL,
+ RPC_C_IMP_LEVEL_IMPERSONATE,
+ NULL,
+ EOAC_NONE);
+ CLEANUP_ON_FAILURE(hr);
+
+ // Get the class object
+ hr = pNamespace->GetObject(ClassPath, 0, NULL, &pClass, NULL);
+ CLEANUP_ON_FAILURE(hr);
+
+ // Get the instance
+ hr = pFindInstance(pContext, pNamespace, &InstancePath);
+ CLEANUP_ON_FAILURE(hr);
+
+ printf("Found Adapter Instance: %S\n", InstancePath);
+
+#if 0
+ // Use the adapter instance index to set MAXLANA in the registry.
+ {
+ DWORD dwIndex;
+ if (swscanf(InstancePath, L"Win32_NetworkAdapterConfiguration.Index=%u", &dwIndex)==1)
+ {
+ DWORD ret = 0;
+ printf("Setting MAXLANA to at least %u\n",dwIndex+1);
+ ret = AdjustMaxLana(dwIndex+1);
+ if (ret) printf("AdjustMaxLana returned the error code %u.\n",ret);
+ }
+ }
+#endif
+
+ // Get the input argument and set the property
+ hr = pClass->GetMethod(MethodName, 0, &pInClass, NULL);
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = pInClass->SpawnInstance(0, &pInInst);
+ CLEANUP_ON_FAILURE(hr);
+
+ // Set up parameters
+ hr = SetupStringAsSafeArray(ip, &v_ip_list);
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = pInInst->Put(L"IPAddress", 0, &v_ip_list, 0);
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = SetupStringAsSafeArray(mask, &v_mask_list);
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = pInInst->Put(L"SubNetMask", 0, &v_mask_list, 0);
+ CLEANUP_ON_FAILURE(hr);
+
+ // Sleep for a twenty seconds
+ printf("Calling ExecMethod in 20 seconds...\r");
+ Sleep(10000);
+ printf("Calling ExecMethod in 10 seconds...\r");
+ Sleep(5000);
+ printf("Calling ExecMethod in 5 seconds...\r");
+ Sleep(2000);
+
+// printf("Skipping ExecMethod\n");
+// hr = 0;
+// goto cleanup;
+
+ // Try up to five times, sleeping 3 seconds between tries
+ for (count=0; count<5; count++)
+ {
+ if (count>0) printf("Trying again in 3 seconds...\n");
+
+ Sleep(3000);
+
+ printf("Calling ExecMethod NOW... \n");
+
+ // Call the method
+
+ hr = pNamespace->ExecMethod(InstancePath, MethodName, 0, NULL, pInInst,
+ &pOutInst, NULL);
+
+ if (!SUCCEEDED(hr))
+ {
+ printf("ExecMethod failed (0x%08X)\n", hr);
+ continue;
+ }
+
+ // Get the EnableStatic method return value
+ hr = pOutInst->Get(L"ReturnValue", 0, &v_ret_value, 0, 0);
+
+ if (!SUCCEEDED(hr))
+ {
+ printf("WARNING: Could not determine return value for EnableStatic (0x%08X)\n", hr);
+ continue;
+ }
+
+ hr = V_I4(&v_ret_value);
+
+
+ if(hr != 0)
+ printf("EnableStatic failed (0x%08X)\n", hr);
+ else
+ {
+ printf("EnableStatic succeeded\n");
+ break;
+ }
+
+ }
+
+
+
+ cleanup:
+ // Free up resources
+ VariantClear(&v_ret_value);
+ VariantClear(&v_ip_list);
+ VariantClear(&v_mask_list);
+
+ SysFreeString(NamespacePath);
+ SysFreeString(ClassPath);
+ SysFreeString(InstancePath);
+ SysFreeString(MethodName);
+
+ if (pClass) pClass->Release();
+ if (pInInst) pInInst->Release();
+ if (pInClass) pInClass->Release();
+ if (pOutInst) pOutInst->Release();
+ if (pLocator) pLocator->Release();
+ if (pNamespace) pNamespace->Release();
+
+ CoUninitialize();
+ return hr;
+}
+
+
+/**********************************************************
+* LoopbackBindings : unbind all other
+* protocols except TCP/IP, netbios, netbt.
+*/
+extern "C" HRESULT LoopbackBindings (LPCWSTR loopback_guid)
+{
+ HRESULT hr = 0;
+ INetCfg *pCfg = NULL;
+ INetCfgLock *pLock = NULL;
+ INetCfgComponent *pAdapter = NULL;
+ IEnumNetCfgComponent *pEnumComponent = NULL;
+ BOOL bLockGranted = FALSE;
+ BOOL bInitialized = FALSE;
+ BOOL bConfigChanged = FALSE;
+ LPWSTR swName = NULL;
+ GUID g;
+ wchar_t device_guid[100];
+ DWORD lenDeviceId;
+
+ printf("\nRunning LoopbackBindings()...\n");
+
+ hr = CoInitializeEx( NULL, COINIT_DISABLE_OLE1DDE | COINIT_APARTMENTTHREADED );
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = CoCreateInstance( CLSID_CNetCfg, NULL, CLSCTX_INPROC_SERVER, IID_INetCfg, (void**)&pCfg );
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = pCfg->QueryInterface( IID_INetCfgLock, (void**)&pLock );
+ CLEANUP_ON_FAILURE(hr);
+
+ hr = pLock->AcquireWriteLock( 1000, L"AFS Configuration", NULL );
+ CLEANUP_ON_FAILURE(hr);
+ bLockGranted = TRUE;
+
+ hr = pCfg->Initialize( NULL );
+ CLEANUP_ON_FAILURE(hr);
+ bInitialized = TRUE;
+
+ hr = pCfg->EnumComponents( &GUID_DEVCLASS_NET, &pEnumComponent );
+ CLEANUP_ON_FAILURE(hr);
+
+
+ while( pEnumComponent->Next( 1, &pAdapter, NULL ) == S_OK )
+ {
+ pAdapter->GetDisplayName( &swName );
+ pAdapter->GetInstanceGuid( &g );
+ StringFromGUID2(g, device_guid, 99);
+
+ if(!wcscmp( device_guid, loopback_guid )) // found loopback adapter
+ {
+ INetCfgComponentBindings *pBindings;
+ INetCfgBindingPath *pPath;
+ IEnumNetCfgBindingPath *pEnumPaths;
+ INetCfgComponent *upper;
+
+ wprintf(L"LoopbackBindings found: %s\n", device_guid );
+
+ hr = pAdapter->QueryInterface( IID_INetCfgComponentBindings, (void**) &pBindings);
+ if(hr==S_OK)
+ {
+ hr = pBindings->EnumBindingPaths( EBP_ABOVE, &pEnumPaths );
+ if(hr==S_OK)
+ {
+ while(pEnumPaths->Next( 1, &pPath, NULL ) == S_OK)
+ {
+ pPath->GetOwner( &upper );
+
+ LPWSTR swId = NULL, swName = NULL;
+
+ upper->GetDisplayName( &swName );
+ upper->GetId( &swId );
+
+ wprintf(L"Looking at %s (%s)... \n",swName, swId);
+
+ {
+ wprintf(L" Moving to the end of binding order...");
+ INetCfgComponentBindings *pBindings2;
+ hr = upper->QueryInterface( IID_INetCfgComponentBindings, (void**) &pBindings2);
+ if (hr==S_OK)
+ {
+ printf("...");
+ hr = pBindings2->MoveAfter(pPath, NULL);
+ pBindings2->Release();
+ bConfigChanged=TRUE;
+ }
+ if (hr==S_OK) printf("success\n"); else printf("failed: 0x%0lx\n",hr);
+
+ }
+
+ if ( !_wcsicmp(swId, L"ms_netbios") ||
+ !_wcsicmp(swId, L"ms_tcpip") ||
+ !_wcsicmp(swId, L"ms_netbt") )
+ {
+ if (pPath->IsEnabled()!=S_OK)
+ {
+ wprintf(L" Enabling %s: ",swName);
+ hr = pPath->Enable(TRUE);
+ if (hr==S_OK) printf("success\n"); else printf("failed: %ld\n",hr);
+ bConfigChanged=TRUE;
+ }
+
+
+ }
+ else //if (!_wcsicmp(swId, L"ms_server") || (!_wcsicmp(swId, L"ms_msclient"))
+ {
+ if (pPath->IsEnabled()==S_OK)
+ {
+ wprintf(L" Disabling %s: ",swName);
+ hr = pPath->Enable(FALSE);
+ if (hr==S_OK) printf("success\n"); else printf("failed: %ld\n",hr);
+ bConfigChanged=TRUE;
+ }
+ }
+
+ CoTaskMemFree( swName );
+ CoTaskMemFree( swId );
+
+ pPath->Release();
+ }
+ pEnumPaths->Release();
+ }
+ pBindings->Release();
+ } // hr==S_OK for QueryInterface IID_INetCfgComponentBindings
+ }
+
+ CoTaskMemFree( swName );
+
+ pAdapter->Release();
+ }
+
+ pEnumComponent->Release();
+
+ hr = 0;
+
+cleanup:
+
+ if(bConfigChanged) pCfg->Apply();
+
+ if(pAdapter) pAdapter->Release();
+
+ if(bInitialized) pCfg->Uninitialize();
+ if(bLockGranted) pLock->ReleaseWriteLock();
+
+ if(pLock) pLock->Release();
+ if(pCfg) pCfg->Release();
+
+ if (hr) printf ("LoopbackBindings() is returning %u\n",hr);
+ return hr;
+}
+
+
+ extern "C"
+ DWORD
+SetIpAddress(
+ LPCWSTR guid,
+ LPCWSTR ip,
+ LPCWSTR mask
+ )
+{
+ printf("\nRunning SetIpAddress()...\n");
+ HRESULT hr = 0;
+
+ hr = WMIEnableStatic(FindNetworkAdapterConfigurationInstanceByGUID,
+ (PVOID)guid, ip, mask);
+ return hr;
+}
+
+/* Set MAXLANA in the registry to the specified value, unless the existing registry value is larger */
+DWORD AdjustMaxLana(DWORD dwMaxLana)
+{
+
+ LONG ret = 0;
+ HKEY hNetBiosParamKey = NULL;
+ DWORD dwType, dwExistingMaxLana, dwSize;
+
+ printf ("Making sure MaxLana is at least %u...\n", dwMaxLana);
+
+ ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\Services\\NetBIOS\\Parameters"),
+ 0, KEY_ALL_ACCESS , &hNetBiosParamKey);
+ if (ret) return ret;
+
+
+
+ dwSize = 4;
+ ret = RegQueryValueEx(hNetBiosParamKey, _T("MaxLana"), 0, &dwType, (LPBYTE) &dwExistingMaxLana, &dwSize);
+ if ((ret) && (ret != ERROR_MORE_DATA) && (ret != ERROR_FILE_NOT_FOUND))
+ {
+ RegCloseKey(hNetBiosParamKey);
+ return ret;
+ }
+
+ if ((dwType != REG_DWORD) || (ret)) dwExistingMaxLana = 0;
+
+ printf (" MaxLana is currently %u\n", dwExistingMaxLana);
+
+ if (dwExistingMaxLana < dwMaxLana)
+ {
+ printf (" Changing to %u\n", dwMaxLana);
+ ret = RegSetValueEx(hNetBiosParamKey, _T("MaxLana"), 0, REG_DWORD, (const BYTE*)&dwMaxLana, 4);
+ if (ret)
+ {
+ RegCloseKey(hNetBiosParamKey);
+ return ret;
+ }
+
+ }
+
+ RegCloseKey(hNetBiosParamKey);
+ return 0;
+
+
+}
+
+extern "C"
+BOOL UpdateHostsFile( LPCWSTR swName, LPCWSTR swIp, LPCSTR szFilename, BOOL bPre )
+{
+ char szIp[2048], szName[2048];
+ char etcPath[MAX_PATH];
+ char tempPath[MAX_PATH];
+ char buffer[2048], temp[2048];
+ char *str;
+ HRESULT rv;
+ DWORD fa,len;
+ FILE *hFile, *hTemp;
+
+ _snprintf(szIp, 2047, "%S", swIp);
+ _snprintf(szName, 2047, "%S", swName);
+ strupr(szName);
+ printf("Starting UpdateHostsFile() on %s file\n",szFilename);
+
+ rv = SHGetFolderPathA( NULL, CSIDL_SYSTEM, NULL, SHGFP_TYPE_CURRENT , etcPath );
+ if(rv != S_OK) return FALSE;
+
+ strcat( etcPath, ETCDIR );
+
+ fa = GetFileAttributesA( etcPath );
+
+ if(fa == INVALID_FILE_ATTRIBUTES)
+ {
+ // the directory doesn't exist
+ // it should be there. non-existence implies more things are wrong
+ printf( "Path does not exist : %s\n", etcPath );
+ return FALSE;
+ }
+
+ strcpy( tempPath, etcPath );
+ strcat( etcPath, "\\" );
+ strcat( etcPath, szFilename );
+
+ fa = GetFileAttributesA( etcPath );
+
+ if(fa == INVALID_FILE_ATTRIBUTES)
+ {
+ printf( "No %s file found. Creating...", szFilename);
+
+ hFile = fopen( etcPath, "w" );
+ if(!hFile)
+ {
+ printf("FAILED : can't create %s file\nErrno is %d\n",etcPath,errno);
+ return FALSE;
+ }
+
+ fprintf(hFile, "%s\t%s%s\n", szIp, szName, (bPre)?"\t#PRE":"");
+
+ fclose( hFile );
+
+ printf("done\n");
+ }
+ else // the file exists. parse and update
+ {
+
+ printf( "Updating %s file ...",szFilename );
+
+ hFile = fopen( etcPath, "r");
+ if(!hFile)
+ {
+ printf("FAILED : can't open %s file\nErrno is %d\n",etcPath,errno);
+ return FALSE;
+ }
+
+ strcat( tempPath, szFilename );
+ strcat( tempPath, ".tmp" );
+ hTemp = fopen( tempPath, "w");
+ if(!hTemp)
+ {
+ printf("FAILED : can't create temp file %s\nErrno is %d\n",tempPath,errno);
+ fclose(hFile);
+ return FALSE;
+ }
+
+ while(fgets( buffer, 2046, hFile))
+ {
+ strcpy( temp, buffer );
+ strupr( temp );
+
+ if ((strlen(temp)<1) || (*(temp+strlen(temp)-1)!='\n')) strcat(temp, "\n");
+
+ if(!(str = strstr(temp, szName)))
+ {
+ fputs( buffer, hTemp );
+ }
+ else
+ {
+ // check for FOOBAFS or AFSY
+ //if(str <= temp || (*(str-1) != '-' && !isspace(*(str+strlen(szName)))))
+ if ( (str == temp) || (!*(str+strlen(szName))) || (!isspace(*(str-1))) || (!isspace(*(str+strlen(szName)))) )
+ fputs( buffer, hTemp );
+ }
+ }
+
+
+ len = 2048;
+ GetComputerNameA( buffer, &len );
+ buffer[11] = 0;
+ fprintf( hTemp, "%s\t%s%s\n", szIp, szName, (bPre)?"\t#PRE":"");
+
+ fclose( hTemp );
+ fclose( hFile );
+
+ strcpy(buffer, etcPath);
+ strcat(buffer, ".old");
+
+ errno = 0;
+
+ if ((unlink( buffer ) != 0) && (errno == EACCES))
+ {
+ printf("FAILED : Can't delete %s file\nErrno is %d",buffer,errno);
+ return FALSE;
+
+ }
+
+ if ((errno) && (errno != ENOENT)) printf("WEIRD : errno after unlink is %d...",errno);
+
+ if(rename( etcPath, buffer) != 0)
+ {
+ printf("FAILED : Can't rename old %s file\nErrno is %d\n",etcPath,errno);
+ return FALSE;
+ }
+
+ if(rename( tempPath, etcPath ) != 0)
+ {
+ printf("FAILED : Can't rename new %s file\nErrno is %d\n",tempPath,errno);
+ return FALSE;
+ }
+
+ printf("done\n");
+ }
+
+ return TRUE;
+}
+
+#ifdef TEST
+#if 0
+int
+wmain(
+ int argc,
+ wchar_t* argv[]
+ )
+{
+ if (argc < 3)
+ {
+ printf("usage: %S ip mask\n"
+ " example: %S 10.0.0.1 255.0.0.0", argv[0], argv[0]);
+ return 0;
+ }
+
+ return WMIEnableStatic(FindNetworkAdapterConfigurationInstanceByGUID,
+ L"{B4981E32-551C-4164-96B6-B8874BD2E555}",
+ argv[1], argv[2]);
+}
+#else
+int
+wmain(
+ int argc,
+ wchar_t* argv[]
+ )
+{
+ if (argc < 4)
+ {
+ printf("usage: %S adapter_guid ip mask\n"
+ " example: %S {B4981E32-551C-4164-96B6-B8874BD2E555} "
+ "10.0.0.1 255.0.0.0", argv[0], argv[0]);
+ return 0;
+ }
+
+ return WMIEnableStatic(FindNetworkAdapterConfigurationInstanceByGUID,
+ argv[1], argv[2], argv[3]);
+}
+#endif
+#endif
+
diff --git a/src/WINNT/install/wix/feature.wxi b/src/WINNT/install/wix/feature.wxi
new file mode 100644
index 0000000000..73412d658d
--- /dev/null
+++ b/src/WINNT/install/wix/feature.wxi
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+
+
+
+
+
+ VersionNT = 500 And ServicePackLevel < 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WINNT/install/wix/files.wxi b/src/WINNT/install/wix/files.wxi
new file mode 100644
index 0000000000..fa6a77fdd2
--- /dev/null
+++ b/src/WINNT/install/wix/files.wxi
@@ -0,0 +1,1228 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ While we would love to just use the merge modules, they are unfortunately
+ non-retargetable. Therefore we just use the DLLs directly.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WINNT/install/wix/lang/de_DE/ActionText.wxi b/src/WINNT/install/wix/lang/de_DE/ActionText.wxi
new file mode 100644
index 0000000000..51183f48ae
--- /dev/null
+++ b/src/WINNT/install/wix/lang/de_DE/ActionText.wxi
@@ -0,0 +1,143 @@
+
+
+Anwendungsprogramm wird angeboten
+
+In der Registrierung wird Speicherplatz reserviert
+
+Installierte Anwendungsprogramme werden gesucht
+
+Ausführbare Dateien werden gebunden
+
+Kompatible Produkte werden gesucht
+
+Speicherbedarf wird berechnet
+
+Speicherbedarf wird berechnet
+
+Ordner werden erstellt
+
+Verknüpfungen werden erstellt
+
+Dienste werden gelöscht
+
+Dateien werden dupliziert
+
+Speicherbedarf wird berechnet
+
+Verwandte Anwendungen werden gesucht
+
+Skriptoperationen werden generiert für Aktion:
+
+Netzwerkinstallationsdateien werden kopiert
+
+Neue Dateien werden kopiert
+
+ODBC-Komponenten werden installiert
+
+Neue Dienste werden installiert
+
+Systemkatalog wird installiert
+
+Die Installation wird überprüft
+
+Die Startbedingungen werden überprüft
+
+Funktionszustände verwandter Anwendungen werden migriert
+
+Dateien werden verschoben
+
+Assemblierungsinformationen werden veröffentlicht
+
+Veröffentlichung der Assemblierungsinformationen wird aufgehoben
+
+Dateien werden gepatcht
+
+Registrierung der Komponente(n) wird aktualisiert
+
+Qualifizierte Komponenten werden veröffentlicht
+
+Produktfunktionen werden veröffentlicht
+
+Produktinformation wird veröffentlicht
+
+Klassenserver werden registriert
+
+COM+-Anwendungen und Komponenten werden registriert
+
+Erweiterungsserver werden registriert
+
+Schriftarten werden registriert
+
+MIME-Informationen werden registriert
+
+Produkt wird registriert
+
+Programmidentifikatoren werden registriert
+
+Typbibliotheken werden registriert
+
+Benutzer wird registriert
+
+Duplizierte Dateien werden entfernt
+
+Umgebungsstrings werden aktualisiert
+
+Anwendungen werden entfernt
+
+Dateien werden entfernt
+
+Ordner werden entfernt
+
+INI-Dateieinträge werden entfernt
+
+ODBC-Komponenten werden entfernt
+
+Werte werden aus der Systemregistrierung entfernt
+
+Verknüpfungen werden entfernt
+
+Kompatible Produkte werden gesucht
+
+Aktion wird rückgängig gemacht:
+
+Sicherungsdateien werden entfernt
+
+Module werden registriert
+
+Module werden aus der Registrierung entfernt
+
+ODBC-Ordner werden initialisiert
+
+Dienste werden gestartet
+
+Dienst werden angehalten
+
+Verschobene Dateien werden entfernt
+
+Veröffentlichung qualifizierter Komponenten wird rückgängig gemacht
+
+Veröffentlichung von Produktfunktionen wird rückgängig gemacht
+
+Veröffentlichung von Produktinformation wird rückgängig gemacht
+
+Klassenserver werden aus der Registrierung entfernt
+
+COM+-Anwendungen und Komponenten werden aus der Registrierung entfernt
+
+Erweiterungsserver werden aus der Registrierung entfernt
+
+Schriftarten werden aus der Registrierung entfernt
+
+MIME-Informationen werden aus der Registrierung entfernt
+
+Programmidentifikatoren werden aus der Registrierung entfernt
+
+Typbibliotheken werden aus der Registrierung entfernt
+
+Umgebungsstrings werden aktualisiert
+
+INI-Dateiwerte werden geschrieben
+
+Werte werden in die Systemregistrierung geschrieben
+
+
diff --git a/src/WINNT/install/wix/lang/de_DE/Error.wxi b/src/WINNT/install/wix/lang/de_DE/Error.wxi
new file mode 100644
index 0000000000..e076f2d173
--- /dev/null
+++ b/src/WINNT/install/wix/lang/de_DE/Error.wxi
@@ -0,0 +1,319 @@
+
+
+{{Schwerwiegender Fehler: }}
+
+{{Fehler [1]. }}
+
+Warnung [1].
+
+
+
+Information [1].
+
+Bei der Installation dieses Pakets ist ein unerwarteter Fehler aufgetreten. Es liegt eventuell ein das Paket betreffendes Problem vor. Der Fehlercode ist [1]. {{Argumente: [2], [3], [4]}}
+
+
+
+{{Festplatte voll: }}
+
+Aktion [Time]: [1]. [2]
+
+[ProductName]
+
+{[2]}{, [3]}{, [4]}
+
+Art der Nachricht: [1], Argument: [2]
+
+=== Protokollierung gestartet: [Date] [Time] ===
+
+=== Protokollierung beendet: [Date] [Time] ===
+
+Aktion gestartet um [Time]: [1].
+
+Aktion beendet um [Time]: [1]. Rückgabewert [2].
+
+Verbleibende Zeit: {[1] Minute(n) }{[2] Sekunde(n)}
+
+Nicht genügend Arbeitsspeicher. Beenden Sie andere Anwendungen und wiederholen Sie den Vorgang.
+
+Installer antwortet nicht mehr.
+
+Installer wurde vorzeitig angehalten.
+
+Warten Sie, während Windows [ProductName] konfiguriert.
+
+Erforderliche Daten werden ermittelt...
+
+Ältere Versionen dieser Anwendung werden entfernt...
+
+Entfernen älterer Versionen dieser Anwendung wird vorbereitet...
+
+{[ProductName]-}Setup erfolgreich abgeschlossen.
+
+{[ProductName]-}Setup fehlgeschlagen.
+
+Fehler beim Lesen von Datei: [2]. {{ Systemfehler [3].}} Überprüfen Sie, ob die Datei existiert und ob Sie darauf zugreifen können.
+
+Datei "[2]" kann nicht erstellt werden. Es existiert bereits ein Ordner mit dem gleichen Namen. Brechen Sie die Installation ab und versuchen Sie, in einen anderen Ordner zu installieren.
+
+Legen Sie den Datenträger ein: [2]
+
+Die Rechte von Installer reichen nicht aus, um auf diesen Ordner zuzugreifen: [2]. Die Installation kann nicht fortgesetzt werden. Melden Sie sich als Administrator an oder wenden Sie sich an den Systemadministrator.
+
+Fehler beim Schreiben in Datei: [2]. Überprüfen Sie, ob Sie auf den Ordner zugreifen können.
+
+Fehler beim Lesen von Datei: [2] {{ Systemfehler [3].}} Überprüfen Sie, ob die Datei existiert und ob Sie darauf zugreifen können.
+
+Eine andere Anwendung hat exklusiven Zugriff auf die Datei "[2]". Beenden Sie alle anderen Anwendungen. Klicken Sie danach auf "Wiederholen".
+
+Auf der Festplatte ist nicht genügend freier Speicherplatz vorhanden, um diese Datei zu installieren: [2]. Sorgen Sie für zusätzlichen freien Speicher und klicken Sie auf "Wiederholen", oder klicken Sie auf "Abbrechen", um Installer zu beenden.
+
+Die Quelldatei wurde nicht gefunden: [2]. Überprüfen Sie, ob die Datei existiert und ob Sie darauf zugreifen können.
+
+Fehler beim Lesen von Datei: [3]. {{ Systemfehler [2].}} Überprüfen Sie, ob die Datei existiert und ob Sie darauf zugreifen können.
+
+Fehler beim Schreiben in Datei: [3]. {{ Systemfehler [2].}} Überprüfen Sie, ob Sie auf den Ordner zugreifen können.
+
+Die Quelldatei{{ (CAB-Datei)}} wurde nicht gefunden: [2]. Überprüfen Sie, ob die Datei existiert und ob Sie darauf zugreifen können.
+
+Ordner "[2]" kann nicht erstellt werden. Eine Datei mit diesem Namen existiert bereits. Benennen Sie die Datei um oder entfernen Sie die Datei, und klicken Sie dann auf "Wiederholen". Oder klicken Sie auf "Abbrechen", um das Programm zu beenden.
+
+Das Volume [2] steht im Augenblick nicht zur Verfügung. Wählen Sie ein anderes Volume aus.
+
+Der angegebene Pfad "[2]" ist nicht verfügbar.
+
+Schreibzugriff auf den angegebenen Ordner "[2]" ist nicht möglich.
+
+Beim Versuch, die Datei [2] zu lesen, ist ein Netzwerkfehler aufgetreten.
+
+Beim Versuch, den Ordner [2] zu erstellen, ist ein Fehler aufgetreten.
+
+Beim Versuch, den Ordner [2] zu erstellen, ist ein Netzwerkfehler aufgetreten.
+
+Beim Versuch, die Quelldatei (CAB-Datei) [2] zu öffnen, ist ein Netzwerkfehler aufgetreten.
+
+Der angegebene Pfad ist zu lang: [2]
+
+Installer besitzt keine ausreichenden Berechtigungen, um diese Datei zu verändern: [2].
+
+Ein Teil des Ordnerpfads "[2]" ist ungültig. Er ist entweder leer, oder er überschreitet die vom System zugelassene Länge.
+
+Der Ordnerpfad "[2]" enthält Wörter, die in Ordnerpfaden ungültig sind.
+
+Der Ordnerpfad "[2]" enthält ein ungültiges Zeichen.
+
+"[2]" ist kein gültiger kurzer Dateiname.
+
+Fehler beim Abrufen der Dateisicherheit: [3] GetLastError: [2]
+
+Ungültiges Laufwerk: [2]
+
+Fehler bei der Anwendung des Patch auf Datei [2]. Die Datei wurde wahrscheinlich bereits auf andere Weise aktualisiert und kann von diesem Patch nicht mehr verändert werden. Wenden Sie sich mit Fragen an den Patchhersteller. {{Systemfehler: [3]}}
+
+Eine erforderliche Datei kann nicht installiert werden, da die Kabinettdatei [2] nicht digital signiert wurde. Dies kann darauf hindeuten, dass die Kabinettdatei beschädigt ist.
+
+Eine erforderliche Datei kann nicht installiert werden, da die Kabinettdatei [2] eine ungültige digitale Signatur hat. Dies kann darauf hindeuten, dass die Kabinettdatei beschädigt ist.{{ Der Fehler [3] wurde von WinVerifyTrust zurückgeliefert.}}
+
+Die Datei [2] konnte nicht kopiert werden: CRC-Fehler.
+
+Die Datei [2] konnte nicht verschoben werden: CRC-Fehler.
+
+Die Datei [2] konnte nicht gepatcht werden: CRC-Fehler.
+
+Die Datei "[2]" kann nicht installiert werden, da die Datei in der Kabinettdatei "[3]" nicht gefunden wurde. Dies deutet auf einen Netzwerkfehler, einen CD-ROM-Lesefehler oder auf ein das Paket betreffendes Problem hin.
+
+Die für die Installation erforderliche Datei "[2]" ist beschädigt und kann nicht verwendet werden. Dies deutet auf einen Netzwerkfehler, einen CD-ROM-Lesefehler oder auf ein das Paket betreffendes Problem hin.
+
+Beim Erstellen der für die Installation erforderlichen temporären Datei ist ein Fehler aufgetreten.{{ Ordner: [3]. Systemfehlercode: [2]}}
+
+Schlüssel konnte nicht erstellt werden: [2]. {{ Systemfehler [3].}} Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Schlüssel konnte nicht geöffnet werden: [2]. {{ Systemfehler [3].}} Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Wert [2] konnte nicht aus Schlüssel [3] gelöscht werden. {{ Systemfehler [4].}} Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Schlüssel konnte nicht gelöscht werden: [2]. {{ Systemfehler [3].}} Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Wert [2] konnte nicht aus Schlüssel [3] gelesen werden. {{ Systemfehler [4].}} Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Wert [2] konnte nicht unter den Schlüssel [3] geschrieben werden. {{ Systemfehler [4].}} Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Die Schlüsselnamen für den Schlüssel [2] konnten nicht gelesen werden. {{ Systemfehler [3].}} Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Die Namen der untergeordneten Schlüssel des Schlüssels [2] konnten nicht bestimmt werden. {{ Systemfehler [3].}} Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Die Sicherheitsinformation für den Schlüssel [2] konnte nicht gelesen werden. {{ Systemfehler [3].}} Überprüfen Sie, ob Sie über ausreichende Zugriffsrechte auf diesen Schlüssel verfügen, oder setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Der verfügbare Registrierungsspeicher konnte nicht vergrößert werden. [2] KB freier Registrierungsspeicher sind zum Installieren dieser Anwendung erforderlich.
+
+Im Augenblick wird eine weitere Installation ausgeführt. Sie müssen erst die zweite Installation abschließen, bevor Sie diese Installation fortsetzen können.
+
+Fehler beim Zugriff auf gesicherte Daten. Stellen Sie sicher, dass Windows Installer korrekt konfiguriert ist und wiederholen Sie die Installation.
+
+Benutzer "[2]" hat die Installation des Produkts "[3]" bereits initialisiert. Dieser Benutzer muss die Installation wiederholen, bevor dieses Produkt verwendet werden kann. Die aktuelle Installation wird jetzt fortgesetzt.
+
+Benutzer "[2]" hat die Installation des Produkts "[3]" bereits initialisiert. Dieser Benutzer muss die Installation wiederholen, bevor dieses Produkt verwendet werden kann.
+
+Nicht genügend freier Speicherplatz -- Volume: "[2]"; erforderlicher Speicher: [3] KB; verfügbarer Speicher: [4] KB. Geben Sie einigen Festplattenspeicher frei und wiederholen Sie den Vorgang.
+
+Sind Sie sicher, dass Sie abbrechen möchten?
+
+Die Datei [2][3] wird im Augenblick verwendet{ vom folgenden Prozess: Name: [4], Kennung: [5], Fenstertitel: "[6]"}. Schließen Sie diese Anwendung und wiederholen Sie den Vorgang.
+
+Das Produkt "[2]" ist bereits installiert und verhindert die Installation dieses Produkts. Die beiden Produkte sind inkompatibel.
+
+Auf Volume "[2]" steht nicht genügend Speicherplatz für die Installation bei aktivierter Wiederherstellungsoption zur Verfügung. [3] KB sind erforderlich, aber nur [4] KB sind verfügbar. Klicken Sie auf "Ignorieren", um die Installation ohne Speicherung von Wiederherstellungsinformationen fortzusetzen, klicken Sie auf "Wiederholen", um den verfügbaren Speicher erneut zu überprüfen oder auf "Abbrechen", um die Installation abzubrechen.
+
+Zugriff auf die Netzwerkadresse [2] war nicht möglich.
+
+Die folgenden Anwendungen sollten geschlossen werden, bevor Sie die Installationen fortsetzen:
+
+Es wurde keine Installation eines der zur Installation dieses Produkts erforderlichen passenden Produkte auf diesem Computer gefunden.
+
+Beim Übernehmen der Sicherheitseinstellungen ist ein Fehler aufgetreten. [2] ist kein gültiger Benutzer bzw. keine gültige Gruppe. Dies kann ein das Paket betreffendes Problem oder ein bei Herstellung der Netzwerkverbindung mit dem Domänencontroller aufgetretenes Problem sein. Überprüfen Sie die Netzwerkverbindung und klicken Sie auf "Wiederholen" oder "Abbrechen", um die Installation abzubrechen. {{Die SID des Benutzers wurde nicht gefunden, Systemfehler [3]}}
+
+Der Schlüssel [2] ist ungültig. Überprüfen Sie, ob Sie den korrekten Schlüssel eingegeben haben.
+
+Installer muss den Computer neu starten, bevor die Konfiguration von [2] fortgesetzt werden kann. Klicken Sie auf "Ja", um den Computer jetzt neu zu starten, oder auf "Nein", um den Computer später manuell neu zu starten.
+
+Sie müssen den Computer neu starten, damit die geänderte Konfiguration von [2] wirksam wird. Klicken Sie auf "Ja", um den Computer jetzt neu zu starten, oder auf "Nein", um den Computer später manuell neu zu starten.
+
+Eine Installation von [2] ist im Augenblick unterbrochen. Sie müssen die von dieser Installation vorgenommenen Änderungen rückgängig machen, bevor Sie den Vorgang fortsetzen können. Möchten Sie diese Änderungen rückgängig machen?
+
+Im Augenblick wird eine weitere Installation dieses Produkts durchgeführt. Sie müssen die von dieser Installation vorgenommenen Änderungen rückgängig machen, bevor Sie den Vorgang fortsetzen können. Möchten Sie diese Änderungen rückgängig machen?
+
+Für das Produkt [2] wurde kein Installationspaket gefunden. Wiederholen Sie die Installation und verwenden Sie dabei eine gültige Kopie des Installationspakets "[3]".
+
+Die Installation wurde erfolgreich abgeschlossen.
+
+Die Installation ist fehlgeschlagen.
+
+Produkt: [2] -- [3]
+
+Sie können entweder den ursprünglichen Zustand des Computers wiederherstellen oder die Installation später fortsetzen. Möchten Sie wiederherstellen?
+
+Beim Versuch, Installationsinformationen auf die Festplatte zu schreiben, ist ein Fehler aufgetreten. Überprüfen Sie, ob genügend Plattenspeicher verfügbar ist, und klicken Sie auf "Wiederholen". Oder klicken Sie auf "Abbrechen", um die Installation zu abzubrechen.
+
+Eine oder mehrere Datei(en), die zum Wiederherstellen des ursprünglichen Zustands des Computers erforderlich sind, wurden nicht gefunden. Wiederherstellen nicht möglich.
+
+[2] kann eines seiner erforderlichen Produkte nicht installieren. Setzen Sie sich mit dem technischen Supportpersonal in Verbindung. {{Systemfehler: [3].}}
+
+Die ältere Version von [2] kann nicht entfernt werden. Setzen Sie sich mit dem technischen Supportpersonal in Verbindung. {{Systemfehler: [3].}}
+
+[2] wird installiert
+
+[2] wird konfiguriert
+
+[2] wird entfernt
+
+Die Datei [2] wurde von Richtlinie für die digitale Signatur zurückgewiesen.
+
+Auf den Windows Installer-Dienst konnte nicht zugegriffen werden. Dies kann auftreten, wenn Windows im abgesicherten Modus ausgeführt wird oder wenn der Windows Installer nicht korrekt installiert wurde. Setzen Sie sich mit dem Supportpersonal in Verbindung, um weitere Unterstützung zu erhalten.
+
+Es liegt ein dieses Windows Installer-Paket betreffendes Problem vor. Ein für den Abschluss der Installation erforderliches Skript konnte nicht ausgeführt werden. Wenden Sie sich an das Supportpersonal oder den Hersteller des Pakets. {{Benutzerdefinierte Aktion: [2] Skriptfehler [3], [4]: [5] Zeile[6], Spalte [7], [8] }}
+
+Es liegt ein dieses Windows Installer-Paket betreffendes Problem vor. Ein für den Abschluss der Installation erforderliches Programm konnte nicht ausgeführt werden. Wenden Sie sich an das Supportpersonal oder den Hersteller des Pakets. {{Aktion: [2], Pfad: [3], Befehl: [4] }}
+
+Es liegt ein dieses Windows Installer-Paket betreffendes Problem vor. Ein Programm, das im Rahmen der Installation ausgeführt wurde, wurde nicht erfolgreich abgeschlossen. Wenden Sie sich an das Supportpersonal oder den Hersteller des Pakets. {{Aktion: [2], Pfad: [3], Befehl: [4] }}
+
+Es liegt ein dieses Windows Installer-Paket betreffendes Problem vor. Eine für den Abschluss der Installation erforderliche DLL konnte nicht ausgeführt werden. Wenden Sie sich an das Supportpersonal oder den Hersteller des Pakets. {{Aktion: [2], Eintrag: [3], Bibliothek: [4] }}
+
+Das Entfernen wurde erfolgreich abgeschlossen.
+
+Das Entfernen ist fehlgeschlagen.
+
+Die Ankündigung wurde erfolgreich abgeschlossen.
+
+Die Ankündigung ist fehlgeschlagen.
+
+Die Konfiguration wurde erfolgreich abgeschlossen.
+
+Die Konfiguration ist fehlgeschlagen.
+
+Sie müssen über Administratorrechte verfügen, um diese Anwendung entfernen zu können. Melden Sie sich als Administrator an oder wenden Sie sich an den technischen Support, um Unterstützung zu erhalten.
+
+Der Pfad [2] ist ungültig. Geben Sie einen gültigen Pfad an.
+
+Nicht genügend Arbeitsspeicher. Beenden Sie andere Anwendungen und wiederholen Sie den Vorgang.
+
+In Laufwerk [2] ist kein Datenträger eingelegt. Legen Sie einen Datenträger ein und klicken Sie auf "Wiederholen". Oder klicken Sie auf "Abbrechen", um zu dem zuvor ausgewählten Volume zurückzukehren.
+
+In Laufwerk [2] ist kein Datenträger eingelegt. Legen Sie einen Datenträger ein und klicken Sie auf "Wiederholen". Oder klicken Sie auf "Abbrechen", um zum Dialog "Durchsuchen" zurückzukehren und ein anderes Volume auszuwählen.
+
+Der Ordner [2] existiert nicht. Geben Sie den Pfad für einen existierenden Ordner ein.
+
+Die Zugriffsrechte reichen nicht aus, um diesen Ordner zu lesen.
+
+Es konnte kein gültiger Zielordner für die Installation bestimmt werden.
+
+Fehler beim Versuch, von der Quellinstallationsdatenbank zu lesen: [2].
+
+Planung des Computerneustarts: Die Datei [2] wird in [3] umbenannt. Der Computer muss neu gestartet werden, um den Vorgang abzuschließen.
+
+Planung des Computerneustarts: Die Datei [2] wird gelöscht. Der Computer muss neu gestartet werden, um den Vorgang abzuschließen.
+
+Fehler beim Registrieren von Modul [2]. HRESULT [3]. Wenden Sie sich an den Support.
+
+Fehler beim Entfernen von Modul [2] aus der Registrierung. HRESULT [3]. Wenden Sie sich an den Support.
+
+Fehler beim Zwischenspeichern von Paket [2]. Fehler: [3]. Wenden Sie sich an den Support.
+
+Schriftart [2] konnte nicht registriert werden. Überprüfen Sie, ob Sie ausreichende Zugriffsrechte zum Installieren von Schriftarten besitzen und ob das System diese Schriftart unterstützt.
+
+Schriftart [2] konnte nicht aus der Registrierung entfernt werden. Überprüfen Sie, ob Sie ausreichende Berechtigungen zum Entfernen von Schriftarten besitzen.
+
+Verknüpfung [2] konnte nicht erstellt werden. Überprüfen Sie, ob der Zielordner vorhanden ist und ob Sie Zugriff darauf haben.
+
+Verknüpfung [2] konnte nicht entfernt werden. Überprüfen Sie, ob die Verknüpfungsdatei vorhanden ist und ob Sie darauf Zugriff haben.
+
+Typbibliothek für Datei [2] konnte nicht registriert werden. Setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Typbibliothek für Datei [2] konnte nicht aus der Registrierung entfernt werden. Setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Aktualisieren der INI-Datei war nicht möglich: [2][3]. Überprüfen Sie, ob die Datei vorhanden ist und ob Sie darauf Zugriff haben.
+
+Es war nicht möglich festzulegen, dass Datei [3] beim Neustart des Computers durch Datei [2] ersetzt wird. Überprüfen Sie, ob Sie Schreibzugriff auf Datei [3] haben.
+
+Fehler beim Entfernen des ODBC-Treibermanagers, ODBC-Fehler [2]: [3]. Setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Fehler bei der Installation des ODBC-Treibermanagers. ODBC-Fehler [2]: [3]. Setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Fehler beim Entfernen des ODBC-Treibers: [4], ODBC-Fehler [2]: [3]. Überprüfen Sie, ob Sie ausreichende Berechtigungen zum Entfernen von ODBC-Treibern besitzen.
+
+Fehler beim Installieren des ODBC-Treibers: [4], ODBC-Fehler [2]: [3]. Überprüfen Sie, ob die Datei [4] vorhanden ist und ob Sie darauf Zugriff haben.
+
+Fehler beim Konfigurieren der ODBC-Datenquelle: [4], ODBC-Fehler [2]: [3]. Überprüfen Sie, ob die Datei [4] vorhanden ist und ob Sie darauf Zugriff haben.
+
+Dienst "[2]" ([3]) konnte nicht gestartet werden. Überprüfen Sie, ob Sie ausreichende Berechtigungen zum Starten von Systemdiensten besitzen.
+
+Dienst "[2]" ([3]) konnte nicht angehalten werden. Überprüfen Sie, ob Sie ausreichende Berechtigungen zum Anhalten von Systemdiensten besitzen.
+
+Dienst "[2]" ([3]) konnte nicht gelöscht werden. Überprüfen Sie, ob Sie ausreichende Berechtigungen zum Entfernen von Systemdiensten besitzen.
+
+Dienst "[2]" ([3]) konnte nicht installiert werden. Überprüfen Sie, ob Sie ausreichende Berechtigungen zum Installieren von Systemdiensten besitzen.
+
+Umgebungsvariable "[2]" konnte nicht aktualisiert werden. Überprüfen Sie, ob Sie ausreichende Berechtigungen zum Ändern von Umgebungsvariablen besitzen.
+
+Sie besitzen keine ausreichenden Berechtigungen, um diese Installation für alle Benutzer dieses Computers auszuführen. Melden Sie sich als Administrator an, und wiederholen Sie diese Installation.
+
+Dateisicherheit für Datei "[3]" konnte nicht eingestellt werden. Fehler: [2]. Überprüfen Sie, ob Sie ausreichende Berechtigungen zum Ändern der Sicherheitsrechte für diese Datei besitzen.
+
+Komponentendienste (COM+ 1.0) sind auf diesem Computer nicht installiert. Um diese Installation erfolgreich abzuschließen, müssen Komponentendienste installiert sein. Komponentendienste stehen unter Windows 2000 zur Verfügung.
+
+Fehler beim Registrieren einer COM+-Anwendung. Setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Fehler beim Entfernen einer COM+-Anwendung aus der Registrierung. Setzen Sie sich mit dem Supportpersonal in Verbindung.
+
+Die Beschreibung für Dienst "[2]" ([3]) konnte nicht geändert werden.
+
+Der Windows Installer-Dienst kann die Systemdatei [2] nicht aktualisieren, weil die Datei von Windows geschützt wird. Sie müssen möglicherweise das Betriebssystem aktualisieren, damit dieses Programm korrekt funktionieren kann. {{Paketversion: [3], vom System geschützte Version: [4]}}
+
+Der Windows Installer-Dienst kann die geschützte Windows-Datei [2] nicht aktualisieren. {{Paketversion: [3], vom System geschützte Version: [4], SFP-Fehler: [5]}}
+
+Einige geschützte Windows-Dateien konnten nicht aktualisiert werden. {{SFP-Fehler: [2]. Liste der geschützten Dateien:\r\n[3]}}
+
+Benutzerinstallationen sind über die Computerrichtlinie deaktiviert.
+
+Während der Installation der Assemblierungskomponente [2] ist ein Fehler aufgetreten. HRESULT: [3]. {{Assemblierungsschnittstelle: [4], Funktion: [5], Assemblierungsname: [6]}}
+
+
diff --git a/src/WINNT/install/wix/lang/en_US/ActionText.wxi b/src/WINNT/install/wix/lang/en_US/ActionText.wxi
new file mode 100644
index 0000000000..e16f004cea
--- /dev/null
+++ b/src/WINNT/install/wix/lang/en_US/ActionText.wxi
@@ -0,0 +1,137 @@
+
+
+Advertising application
+
+Searching for installed applications
+
+Allocating registry space
+
+Binding executables
+
+Searching for qualifying products
+
+Computing space requirements
+
+Computing space requirements
+
+Creating folders
+
+Creating shortcuts
+
+Deleting services
+
+Creating duplicate files
+
+Computing space requirements
+
+Searching for related applications
+
+Generating script operations for action:
+
+Copying network install files
+
+Copying new files
+
+Installing ODBC components
+
+Installing new services
+
+Validating install
+
+Evaluating launch conditions
+
+Migrating feature states from related applications
+
+Moving files
+
+Patching files
+
+Updating component registration
+
+Publishing Qualified Components
+
+Publishing Product Features
+
+Publishing product information
+
+Registering Class servers
+
+Registering COM+ Applications and Components
+
+Registering extension servers
+
+Registering fonts
+
+Registering MIME info
+
+Registering product
+
+Unregistering program identifiers
+
+Registering type libraries
+
+Registering user
+
+Removing duplicated files
+
+Updating environment strings
+
+Removing applications
+
+Removing files
+
+Removing folders
+
+Removing INI files entries
+
+Removing ODBC components
+
+Removing system registry values
+
+Removing shortcuts
+
+Searching for qualifying products
+
+Rolling back action:
+
+Removing backup files
+
+Registering modules
+
+Unregistering modules
+
+Initializing ODBC directories
+
+Starting services
+
+Stopping services
+
+Removing moved files
+
+Unpublishing Qualified Components
+
+Unpublishing Product Features
+
+Unpublishing product information
+
+Unregister Class servers
+
+Unregistering COM+ Applications and Components
+
+Unregistering extension servers
+
+Unregistering fonts
+
+Unregistering MIME info
+
+Unregistering program identifiers
+
+Unregistering type libraries
+
+Updating environment strings
+
+Writing INI files values
+
+Writing system registry values
+
+
diff --git a/src/WINNT/install/wix/lang/en_US/Error.wxi b/src/WINNT/install/wix/lang/en_US/Error.wxi
new file mode 100644
index 0000000000..004c98a9d7
--- /dev/null
+++ b/src/WINNT/install/wix/lang/en_US/Error.wxi
@@ -0,0 +1,263 @@
+
+
+{{Fatal error: }}
+
+{{Error [1]. }}
+
+Warning [1].
+
+
+
+Info [1].
+
+Internal Error [1]. [2]{, [3]}{, [4]}
+
+
+
+{{Disk full: }}
+
+Action [Time]: [1]. [2]
+
+[ProductName]
+
+{[2]}{, [3]}{, [4]}
+
+Message type: [1], Argument: [2]
+
+=== Logging started: [Date] [Time] ===
+
+=== Logging stopped: [Date] [Time] ===
+
+Action start [Time]: [1].
+
+Action ended [Time]: [1]. Return value [2].
+
+Time remaining: {[1] minutes }{[2] seconds}
+
+Out of memory. Shut down other applications before retrying.
+
+Installer is no longer responding.
+
+Installer stopped prematurely.
+
+Please wait while Windows configures [ProductName]
+
+Gathering required information...
+
+Removing older versions of this application...
+
+Preparing to remove older versions of this application...
+
+{[ProductName] }Setup completed successfully.
+
+{[ProductName] }Setup failed.
+
+Error reading from file: [2]. {{ System error [3].}} Verify that the file exists and that you can access it.
+
+Cannot create the file '[3]'. A directory with this name already exists. Cancel the install and try installing to a different location.
+
+Please insert the disk: [2]
+
+The installer has insufficient privileges to access this directory: [2]. The installation cannot continue. Log on as administrator or contact your system administrator.
+
+Error writing to file: [2]. Verify that you have access to that directory.
+
+Error reading from file [2]. {{ System error [3].}} Verify that the file exists and that you can access it.
+
+Another application has exclusive access to the file '[2]'. Please shut down all other applications, then click Retry.
+
+There is not enough disk space to install this file: [2]. Free some disk space and click Retry, or click Cancel to exit.
+
+Source file not found: [2]. Verify that the file exists and that you can access it.
+
+Error reading from file: [3]. {{ System error [2].}} Verify that the file exists and that you can access it.
+
+Error writing to file: [3]. {{ System error [2].}} Verify that you have access to that directory.
+
+Source file not found{{(cabinet)}}: [2]. Verify that the file exists and that you can access it.
+
+Cannot create the directory '[2]'. A file with this name already exists. Please rename or remove the file and click retry, or click Cancel to exit.
+
+The volume [2] is currently unavailable. Please select another.
+
+The specified path '[2]' is unavailable.
+
+Unable to write to the specified folder: [2].
+
+A network error occurred while attempting to read from the file: [2]
+
+An error occurred while attempting to create the directory: [2]
+
+A network error occurred while attempting to create the directory: [2]
+
+A network error occurred while attempting to open the source file cabinet: [2]
+
+The specified path is too long: [2]
+
+The Installer has insufficient privileges to modify this file: [2].
+
+A portion of the folder path '[2]' is invalid. It is either empty or exceeds the length allowed by the system.
+
+The folder path '[2]' contains words that are not valid in folder paths.
+
+The folder path '[2]' contains an invalid character.
+
+'[2]' is not a valid short file name.
+
+Error getting file security: [3] GetLastError: [2]
+
+Invalid Drive: [2]
+
+Error applying patch to file [2]. It has probably been updated by other means, and can no longer be modified by this patch. For more information contact your patch vendor. {{System Error: [3]}}
+
+Could not create key: [2]. {{ System error [3].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not open key: [2]. {{ System error [3].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not delete value [2] from key [3]. {{ System error [4].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not delete key [2]. {{ System error [3].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not read value [2] from key [3]. {{ System error [4].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not write value [2] to key [3]. {{ System error [4].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not get value names for key [2]. {{ System error [3].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not get sub key names for key [2]. {{ System error [3].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not read security information for key [2]. {{ System error [3].}} Verify that you have sufficient access to that key, or contact your support personnel.
+
+Could not increase the available registry space. [2] KB of free registry space is required for the installation of this application.
+
+Another installation is in progress. You must complete that installation before continuing this one.
+
+Error accessing secured data. Please make sure the Windows Installer is configured properly and try the install again.
+
+User '[2]' has previously initiated an install for product '[3]'. That user will need to run that install again before they can use that product. Your current install will now continue.
+
+User '[2]' has previously initiated an install for product '[3]'. That user will need to run that install again before they can use that product.
+
+Out of disk space -- Volume: '[2]'; required space: [3] KB; available space: [4] KB. Free some disk space and retry.
+
+Are you sure you want to cancel?
+
+The file [2][3] is being held in use{ by the following process: Name: [4], Id: [5], Window Title: '[6]'}. Close that application and retry.
+
+The product '[2]' is already installed, preventing the installation of this product. The two products are incompatible.
+
+Out of disk space -- Volume: '[2]'; required space: [3] KB; available space: [4] KB. If rollback is disabled, enough space is available. Click 'Cancel' to quit, 'Retry' to check available disk space again, or 'Ignore' to continue without rollback.
+
+Could not access network location [2].
+
+The following applications should be closed before continuing the install:
+
+Could not find any previously installed compliant products on the machine for installing this product.
+
+The key [2] is not valid. Verify that you entered the correct key.
+
+The installer must restart your system before configuration of [2] can continue. Click Yes to restart now or No if you plan to manually restart later.
+
+You must restart your system for the configuration changes made to [2] to take effect. Click Yes to restart now or No if you plan to manually restart later.
+
+An installation for [2] is currently suspended. You must undo the changes made by that installation to continue. Do you want to undo those changes?
+
+A previous installation for this product is in progress. You must undo the changes made by that installation to continue. Do you want to undo those changes?
+
+An installation package for the product [2] cannot be found. Try the installation again using a valid copy of the installation package '[3]'.
+
+Installation operation completed successfully.
+
+Installation operation failed.
+
+Product: [2] -- [3]
+
+You may either restore your computer to its previous state or continue the install later. Would you like to restore?
+
+An error occurred while writing installation information to disk. Check to make sure enough disk space is available, and click Retry, or Cancel to end the install.
+
+One or more of the files required to restore your computer to its previous state could not be found. Restoration will not be possible.
+
+[2] cannot install one of its required products. Contact your technical support group. {{System Error: [3].}}
+
+The older version of [2] cannot be removed. Contact your technical support group. {{System Error [3].}}
+
+The path [2] is not valid. Please specify a valid path.
+
+Out of memory. Shut down other applications before retrying.
+
+There is no disk in drive [2]. Please insert one and click Retry, or click Cancel to go back to the previously selected volume.
+
+There is no disk in drive [2]. Please insert one and click Retry, or click Cancel to return to the browse dialog and select a different volume.
+
+The folder [2] does not exist. Please enter a path to an existing folder.
+
+You have insufficient privileges to read this folder.
+
+A valid destination folder for the install could not be determined.
+
+Error attempting to read from the source install database: [2].
+
+Scheduling reboot operation: Renaming file [2] to [3]. Must reboot to complete operation.
+
+Scheduling reboot operation: Deleting file [2]. Must reboot to complete operation.
+
+Module [2] failed to register. HRESULT [3]. Contact your support personnel.
+
+Module [2] failed to unregister. HRESULT [3]. Contact your support personnel.
+
+Failed to cache package [2]. Error: [3]. Contact your support personnel.
+
+Could not register font [2]. Verify that you have sufficient permissions to install fonts, and that the system supports this font.
+
+Could not unregister font [2]. Verify that you that you have sufficient permissions to remove fonts.
+
+Could not create Shortcut [2]. Verify that the destination folder exists and that you can access it.
+
+Could not remove Shortcut [2]. Verify that the shortcut file exists and that you can access it.
+
+Could not register type library for file [2]. Contact your support personnel.
+
+Could not unregister type library for file [2]. Contact your support personnel.
+
+Could not update the ini file [2][3]. Verify that the file exists and that you can access it.
+
+Could not schedule file [2] to replace file [3] on reboot. Verify that you have write permissions to file [3].
+
+Error removing ODBC driver manager, ODBC error [2]: [3]. Contact your support personnel.
+
+Error installing ODBC driver manager, ODBC error [2]: [3]. Contact your support personnel.
+
+Error removing ODBC driver: [4], ODBC error [2]: [3]. Verify that you have sufficient privileges to remove ODBC drivers.
+
+Error installing ODBC driver: [4], ODBC error [2]: [3]. Verify that the file [4] exists and that you can access it.
+
+Error configuring ODBC data source: [4], ODBC error [2]: [3]. Verify that the file [4] exists and that you can access it.
+
+Service '[2]' ([3]) failed to start. Verify that you have sufficient privileges to start system services.
+
+Service '[2]' ([3]) could not be stopped. Verify that you have sufficient privileges to stop system services.
+
+Service '[2]' ([3]) could not be deleted. Verify that you have sufficient privileges to remove system services.
+
+Service '[2]' ([3]) could not be installed. Verify that you have sufficient privileges to install system services.
+
+Could not update environment variable '[2]'. Verify that you have sufficient privileges to modify environment variables.
+
+You do not have sufficient privileges to complete this installation for all users of the machine. Log on as administrator and then retry this installation.
+
+Could not set file security for file '[3]'. Error: [2]. Verify that you have sufficient privileges to modify the security permissions for this file.
+
+Component Services (COM+ 1.0) are not installed on this computer. This installation requires Component Services in order to complete successfully. Component Services are available on Windows 2000.
+
+Error registering COM+ Application. Contact your support personnel for more information.
+
+Error unregistering COM+ Application. Contact your support personnel for more information.
+
+The description for service '[2]' ([3]) could not be changed."
+
+The Windows Installer service cannot update the system file [1] because the file is protected by Windows. You may need to update your operating system for this program to work correctly. {{Package version: [2], OS Protected version: [3]}}"
+
+The Windows Installer service cannot update the protected Windows file [1]. {{Package version: [2], OS Protected version: [3], SFP Error: [4]}}"
+
+
diff --git a/src/WINNT/install/wix/lang/en_US/strings.wxl b/src/WINNT/install/wix/lang/en_US/strings.wxl
new file mode 100644
index 0000000000..1c342f2afe
--- /dev/null
+++ b/src/WINNT/install/wix/lang/en_US/strings.wxl
@@ -0,0 +1,55 @@
+
+
+
+
+ Client and server components for AFS
+ AFS Client
+ Debug symbols
+ Provides client functionality for connecting to AFS servers with Kerberos authentication.
+ Debugging symbols for AFS client components.
+ AFS Server
+ Debug symbols
+ Provides AFS file server functionality.
+ Debugging symbols for AFS server components.
+ AFS Control Center
+ Debug symbols
+ Applications for managing and monitoring AFS servers.
+ Debugging symbols for AFS Control Center components.
+ AFS Software Development Kit
+ Debug symbols
+ Headers and libraries for developing applications for AFS
+ Debugging symbols for the AFS Software Development Kit.
+ AFS System Administration Documentation
+ Information on using and administering AFS.
+ Optional components
+ Optional components
+ Loopback adapter
+ Loopback adapter for AFS. It is recommended that you install the loopback adapter if you are installing the client components.
+
+ AFS Context Menu Shell Extension
+ Authentication for AFS
+ AFS Client Help
+ Server Manager
+ Account Manager
+ AFS Documentation
+ Server Configuration Wizard
+
+ OpenAFS for Windows is currently only packaged for Windows 2000,XP and 2003
+
+ Installation of Network Provider failed. System error [2]
+ Configuration of client service failed. System error [2]
+ Configuration of server service failed. System error [2]
+ Installation aborted : [2]
+ Uninstallation of the NSIS installation of OpenAFS failed with code [2]
+
+ Installing loopback adapter
+ Removing existing loopback adapter
+ Installing the network provider
+ Removing the network provider
+ Configuring the AFS client service
+ Configuring the AFS server service
+ Removing existing installation of OpenAFS
+
+ Installation of OpenAFS for Windows was prematurely terminated because OpenAFS [NSISVERSION] was already installed.
+
+
diff --git a/src/WINNT/install/wix/lang/en_US/ui.wxi b/src/WINNT/install/wix/lang/en_US/ui.wxi
new file mode 100644
index 0000000000..c73a1b36bc
--- /dev/null
+++ b/src/WINNT/install/wix/lang/en_US/ui.wxi
@@ -0,0 +1,993 @@
+
+
+
+ DlgFont8
+ ErrorDlg
+ bannrbmp
+ no
+ removico
+ < &Back
+ Br&owse
+ Cancel
+ &Exit
+ &Finish
+ &Ignore
+ &Install
+ &Next >
+ &no
+ OK
+ &Remove
+ &Repair
+ &Reset
+ &Resume
+ &Retry
+ &Return
+ &yes
+ completi
+ custicon
+ dlgbmp
+ {&DlgFontBold8}
+ exclamic
+ info
+ insticon
+ Installing
+ installs
+ P
+ repairic
+ Setup
+ 0
+ Setup Wizard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 2
+ 3
+
+
+
+
+
+
+
+
+
+
+ yes
+ no
+
+
+
+
+
+ bytes
+ GB
+ KB
+ MB
+
+
+
+
+
+
+
+
+ Gathering required information...
+ This feature will remain uninstalled
+ This feature will be set to be installed when required
+ This feature will be installed to run from CD
+ This feature will be installed on the local hard drive
+ This feature will be installed to run from the network
+ This feature will become unavailable
+ Will be installed when required
+ This feature will be available to run from CD
+ This feature will be installed on your local hard drive
+ This feature will be available to run from the network
+ This feature will be uninstalled completely, you won't be able to run it from CD
+ This feature will change from run from CD state to set to be installed when required
+ This feature will remain to be run from CD
+ This feature will change from run from CD state to be installed on the local hard drive
+ This feature frees up [1] on your hard drive.
+ This feature requires [1] on your hard drive.
+ Compiling cost for this feature...
+ This feature will be completely removed
+ This feature will be removed from your local hard drive, but will be set to be installed when required
+ This feature will be removed from your local hard drive, but will be still available to run from CD
+ This feature will remain on you local hard drive
+ This feature will be removed from your local hard drive, but will be still available to run from the network
+ This feature will be uninstalled completely, you won't be able to run it from the network
+ This feature will change from run from network state to set to be installed when required
+ This feature will change from run from network state to be installed on the local hard drive
+ This feature will remain to be run from the network
+ This feature frees up [1] on your hard drive. It has [2] of [3] subfeatures selected. The subfeatures free up [4] on your hard drive.
+ This feature frees up [1] on your hard drive. It has [2] of [3] subfeatures selected. The subfeatures require [4] on your hard drive.
+ This feature requires [1] on your hard drive. It has [2] of [3] subfeatures selected. The subfeatures free up [4] on your hard drive.
+ This feature requires [1] on your hard drive. It has [2] of [3] subfeatures selected. The subfeatures require [4] on your hard drive.
+ Time remaining: {[1] minutes }{[2] seconds}
+ Available
+ Difference
+ Required
+ Disk Size
+ Volume
+
+
+
+
+
+
+ $(loc.ErrNPIFailed)
+ $(loc.ErrSCCFailed)
+ $(loc.ErrSCSFailed)
+ $(loc.ErrAbort)
+ $(loc.ErrNsisFailed)
+ $(loc.ActRemoveLoopback)
+ $(loc.ActInstallLoopback)
+ $(loc.ActRemoveNetProvider)
+ $(loc.ActInstallNetProvider)
+ $(loc.ActConfigureClient)
+ $(loc.ActConfigureServer)
+ $(loc.ActRemoveNsisInstallation)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (NOT Installed) AND (NOT AFTERREBOOT)
+ Installed AND (RESUME OR Preselected)
+ Installed AND NOT RESUME AND NOT Preselected
+ (NOT Installed) AND AFTERREBOOT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WINNT/install/wix/lang/es_ES/ActionText.wxi b/src/WINNT/install/wix/lang/es_ES/ActionText.wxi
new file mode 100644
index 0000000000..1082c5fc7b
--- /dev/null
+++ b/src/WINNT/install/wix/lang/es_ES/ActionText.wxi
@@ -0,0 +1,143 @@
+
+
+Mostrar aplicación
+
+Asignando espacio del registro
+
+Buscando aplicaciones instaladas
+
+Enlazando archivos ejecutables
+
+Buscando productos necesarios
+
+Calculando el espacio necesario
+
+Calculando el espacio necesario
+
+Creando carpetas
+
+Creando accesos directos
+
+Eliminando servicios
+
+Creando archivos duplicados
+
+Calculando el espacio necesario
+
+Buscando aplicaciones relacionadas
+
+Generando operaciones de secuencias de comandos para la acción:
+
+Copiando archivos de instalación de la red
+
+Copiando archivos nuevos
+
+Instalando componentes ODBC
+
+Instalando servicios nuevos
+
+Instalar catálogo de sistema
+
+Validando la instalación
+
+Evaluando condiciones de inicio
+
+Transfiriendo los estados de las características desde las aplicaciones relacionadas
+
+Moviendo archivos
+
+Publicar información de la asamblea
+
+No publicar información de la asamblea
+
+Revisando archivos
+
+Actualizando el registro de componentes
+
+Publicar componentes aceptables
+
+Publicar funciones del producto
+
+Publicar información del producto
+
+Registrando servidores de clases
+
+Registrando aplicaciones y componentes COM+
+
+Registrando servidores de extensiones
+
+Registrando fuentes
+
+Registrando información MIME
+
+Registrando el producto
+
+Registrando identificadores de programa
+
+Registrando bibliotecas de tipos
+
+Registrando usuario
+
+Quitando archivos duplicados
+
+Actualizando cadenas de entorno
+
+Quitando aplicaciones
+
+Quitando archivos
+
+Quitando carpetas
+
+Quitando entradas de archivos INI
+
+Quitando componentes ODBC
+
+Quitando valores del registro del sistema
+
+Quitando accesos directos
+
+Buscando productos necesarios
+
+Acción de restauración:
+
+Quitando copias de seguridad
+
+Registrando módulos
+
+Eliminando módulos del registro
+
+Inicializando directorios ODBC
+
+Iniciando servicios
+
+Deteniendo servicios
+
+Quitando archivos movidos
+
+Anular publicación de componentes aceptables
+
+Anular publicación de funciones del producto
+
+Anular publicación de información del producto
+
+Eliminar del registro los servidores de clases
+
+Quitando aplicaciones y componentes COM+ del registro
+
+Eliminando del registro los servidores de extensiones
+
+Eliminando del registro las fuentes
+
+Eliminando del registro información MIME
+
+Eliminando identificadores de programa del registro
+
+Eliminando del registro bibliotecas de tipos
+
+Actualizando cadenas de entorno
+
+Escribiendo valores de los archivos INI
+
+Escribiendo valores del registro del sistema
+
+
diff --git a/src/WINNT/install/wix/lang/es_ES/Error.wxi b/src/WINNT/install/wix/lang/es_ES/Error.wxi
new file mode 100644
index 0000000000..41d0edef03
--- /dev/null
+++ b/src/WINNT/install/wix/lang/es_ES/Error.wxi
@@ -0,0 +1,319 @@
+
+
+{{Error fatal: }}
+
+{{Error [1]. }}
+
+Advertencia [1].
+
+
+
+Información [1].
+
+El instalador encontró un error inesperado al instalar este paquete. Esto puede indicar un problema con este paquete. El código de error es [1]. {{Los argumentos son: [2], [3], [4]}}
+
+
+
+{{Disco lleno: }}
+
+Acción [Time]: [1]. [2]
+
+[ProductName]
+
+{[2]}{, [3]}{, [4]}
+
+Tipo de mensaje: [1], argumento: [2]
+
+=== Registro iniciado: [Date] [Time] ===
+
+=== Registro detenido: [Date] [Time] ===
+
+La acción se inició a las [Time]: [1].
+
+La acción terminó a las [Time]: [1]. Valor devuelto: [2].
+
+Tiempo restante: {[1] minutos }{[2] segundos}
+
+Memoria insuficiente. Cierre otras aplicaciones antes de intentarlo de nuevo.
+
+El instalador no responde.
+
+El instalador se detuvo antes de tiempo.
+
+Espere mientras Windows configura [ProductName]
+
+Recopilando la información necesaria...
+
+Quitando las versiones anteriores de esta aplicación...
+
+Preparando la eliminación de las versiones anteriores de esta aplicación...
+
+La instalación de {[ProductName] } finalizó correctamente.
+
+Fallo en la instalación de {[ProductName]}.
+
+Error al leer el archivo [2]. {{ Error del sistema [3].}} Compruebe que el archivo existe y que puede obtener acceso a él.
+
+No se puede crear el archivo '[2]'. Ya existe un directorio con ese nombre. Cancele la instalación e intente instalar en una ubicación distinta.
+
+Inserte el disco [2].
+
+El instalador no dispone de privilegios suficientes para obtener acceso al directorio [2] y no se puede continuar con la instalación. Inicie la sesión como administrador o póngase en contacto con el administrador del sistema.
+
+Error al escribir en el archivo [2]. Compruebe que dispone de acceso a ese directorio.
+
+Error al leer el archivo [2]. {{ Error del sistema [3].}} Compruebe que el archivo existe y que puede obtener acceso a él.
+
+Otra aplicación tiene acceso exclusivo al archivo '[2]'. Cierre todas las demás aplicaciones y haga clic en Reintentar.
+
+No hay espacio en disco suficiente para instalar el archivo [2]. Libere espacio en disco y haga clic en Reintentar, o bien, haga clic en Cancelar para salir.
+
+No se encuentra el archivo de origen [2]. Compruebe que el archivo existe y que puede obtener acceso a él.
+
+Error al leer el archivo [3]. {{ Error del sistema [2].}} Compruebe que el archivo existe y que puede obtener acceso a él.
+
+Error al escribir en el archivo [3]. {{ Error del sistema [2].}} Compruebe que dispone de acceso a ese directorio.
+
+No se ha encontrado el archivo de origen {{(.CAB)}} [2]. Compruebe que el archivo existe y que puede obtener acceso a él.
+
+No se puede crear el directorio '[2]'. Ya existe un archivo con este nombre. Cambie el nombre al archivo o quítelo y haga clic en Reintentar, o bien haga clic en Cancelar para salir.
+
+El volumen [2] no está disponible en este momento. Seleccione otro volumen.
+
+La ruta de acceso especificada, '[2]', no está disponible.
+
+No se puede escribir en la carpeta especificada, [2].
+
+Se produjo un error de red al intentar leer el archivo [2].
+
+Se produjo un error al intentar crear el directorio [2].
+
+Se produjo un error de red al intentar crear el directorio [2].
+
+Se produjo un error de red al intentar abrir el archivo .CAB de origen [2].
+
+La ruta de acceso especificada es demasiado larga: [2]
+
+El instalador no tiene suficientes privilegios para modificar el archivo [2].
+
+Una parte de la ruta de acceso a la carpeta '[2]'no es válida porque está vacía o supera la longitud permitida por el sistema.
+
+La ruta de acceso a la carpeta '[2]' contiene palabras no válidas para rutas de acceso a carpetas.
+
+La ruta de acceso a la carpeta '[2]' contiene un carácter no válido.
+
+'[2]' no es un nombre corto de archivo válido.
+
+Error al obtener la seguridad del archivo: [3]. GetLastError: [2].
+
+Unidad no válida: [2]
+
+Error al aplicar la revisión al archivo [2]. Probablemente el archivo ya se ha actualizado por otros medios y esta revisión no puede modificarlo. Para obtener más información, consulte al proveedor de la revisión. {{Error del sistema: [3]}}
+
+No se puede instalar un archivo que se se necesita porque el archivo .CAB [2] no está digitalmente firmado. Esto puede indicar que el archivo .CAB esté dañado.
+
+No se puede instalar un archivo que se necesita porque el archivo .CAB [2] tiene una firma digital no válida. Esto puede indicar que el archivo .CAB está dañado.{{ Error [3] devuelto por WinVerifyTrust.}}
+
+No se puede copiar el archivo [2] correctamente: error CRC.
+
+No se puede mover el archivo [2] correctamente: error CRC.
+
+No se puede revisar el archivo [2] correctamente: error CRC.
+
+No se puede instalar el archivo "[2]" porque este archivo no se puede encontrar en el .CAB "[3]". Esto puede indicar un error de red, un error al leer desde el CD-ROM, o un problema con este paquete.
+
+El archivo .CAB "[2]" que se necesita para esta instalación está dañado o no se puede usar. Esto puede indicar un error de red, un error al leer desde el CD-ROM, o un problema con este paquete.
+
+Error al crear un archivo temporal que se necesita para completar esta instalación.{{ Carpeta: [3]. Código de error del sistema: [2]}}
+
+No se puede crear la clave [2]. {{ Error del sistema [3].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se puede abrir la clave [2]. {{ Error del sistema [3].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se puede eliminar el valor [2] de la clave [3]. {{Error del sistema [4].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se puede eliminar la clave [2]. {{Error del sistema [3].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se puede leer el valor [2] de la clave [3]. {{Error del sistema [4].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se puede escribir el valor [2] en la clave [3]. {{Error del sistema [4].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se pueden obtener los nombres de los valores para la clave [2]. {{Error del sistema [3].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se pueden obtener los nombres de las subclaves de la clave [2]. {{Error del sistema [3].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se puede leer la información de seguridad de la clave [2]. {{Error del sistema [3].}} Compruebe que dispone de suficientes derechos de acceso a esa clave o póngase en contacto con el personal de soporte técnico.
+
+No se puede aumentar el espacio disponible en el registro de configuraciones. Para instalar esta aplicación se requieren [2] KB de espacio en el registro.
+
+Ya hay otra instalación en curso. Termine esa instalación antes de continuar con ésta.
+
+Error al obtener acceso a los datos protegidos. Asegúrese de que Windows Installer está configurado correctamente y vuelva a intentar realizar la instalación.
+
+El usuario '[2]' ya inició previamente una instalación del producto '[3]', pero deberá ejecutar la instalación de nuevo para poder utilizar el producto. La instalación actual de este producto continuará.
+
+El usuario '[2]' ya inició previamente una instalación del producto '[3]', pero deberá ejecutar la instalación de nuevo para poder utilizarlo.
+
+Espacio en disco insuficiente -- Volumen: '[2]'; espacio requerido: [3] KB; espacio disponible: [4] KB. Libere espacio en disco e inténtelo de nuevo.
+
+¿Está seguro de que desea cancelar la operación?
+
+El archivo [2][3] está en uso{ por el proceso siguiente: Nombre: [4], Id.: [5], Título de ventana: '[6]'}. Cierre esa aplicación e inténtelo de nuevo.
+
+El producto '[2]' ya está instalado, lo que impide que se instale este producto porque ambos productos son incompatibles entre sí.
+
+No hay suficiente espacio libre disponible en el volumen "[2]" para continuar la instalación con la recuperación habilitada. Se requieren [3] KB, pero sólo están disponibles [4] KB. Haga clic en Ignorar para continuar la instalación sin guardar la información de recuperación, haga clic en Reintentar para comprobar de nuevo si hay espacio disponible, o haga clic en Cancelar para salir de la instalación.
+
+No se puede obtener acceso a la ubicación de red [2].
+
+Deben cerrarse las aplicaciones siguientes antes de continuar con la instalación:
+
+No se encuentra ningún producto compatible instalado en el equipo para instalar este producto.
+
+Error cuando se aplicaba la configuración de seguridad. [2] no es un usuario o grupo válidos. Esto podría ser un problema con el paquete, o un problema al conectar con el controlador de dominio en la red. Compruebe su conexión de red y haga clic en Reintentar o Cancelar para finalizar la instalación. {{No se puede encontrar el SID de usuario, error del sistema [3]}}
+
+La clave [2] no es válida. Compruebe que escribió la clave correcta.
+
+El instalador debe reiniciar el sistema para que pueda continuar la configuración de [2]. Haga clic en Sí para reiniciar el sistema ahora o elija No si tiene previsto reiniciarlo manualmente más tarde.
+
+Debe reiniciar el sistema para que los cambios de configuración efectuados en [2] surtan efecto. Haga clic en Sí para reiniciar el sistema ahora o elija No si tiene previsto reiniciarlo manualmente más tarde.
+
+Actualmente hay una instalación de [2] en suspenso. Debe deshacer los cambios realizados por dicha instalación para poder continuar. ¿Desea deshacer esos cambios?
+
+Ya hay en curso una instalación anterior de este producto. Debe deshacer los cambios realizados por dicha instalación para poder continuar. ¿Desea deshacer esos cambios?
+
+No se encuentra ningún paquete de instalación para el producto [2]. Vuelva a intentar la instalación utilizando una copia válida del paquete de instalación '[3]'.
+
+La instalación finalizó satisfactoriamente.
+
+Error en la instalación.
+
+Producto: [2] -- [3]
+
+Puede restaurar el equipo a su estado anterior o continuar con la instalación más tarde. ¿Desea restaurar el equipo?
+
+Se produjo un error mientras se escribía la información de instalación en el disco. Compruebe que hay suficiente espacio en disco disponible y haga clic en Reintentar, o bien haga clic en Cancelar para terminar la instalación.
+
+No se encuentran uno o varios archivos necesarios para restaurar el equipo a su estado anterior. La restauración no podrá realizarse.
+
+[2] no puede instalar los productos requeridos. Póngase en contacto con su grupo de soporte técnico. {{Error del sistema: [3].}}
+
+No se puede quitar la versión anterior de [2]. Póngase en contacto con su grupo de soporte técnico. {{Error del sistema: [3].}}
+
+Instalado [2]
+
+Configurado [2]
+
+Quitado [2]
+
+La directiva de firma digital ha rechazado el archivo [2].
+
+No se puede tener acceso al servicio Windows Installer. Esto puede ocurrir si está ejecutando Windows en Modo a prueba de errores, o si Windows Installer no está correctamente instalado. Póngase en contacto con el personal de soporte técnico para obtener asistencia.
+
+Hay un problema con este paquete de Windows Installer. Hay una secuencia de comandos que se necesita para que esta instalación se complete y que no se puede ejecutar. Póngase en contacto con el personal de soporte técnico o el proveedor del paquete. {{Acción personalizada [2] error de secuencia de comandos [3], [4]: [5] Línea [6], Columna [7], [8] }}
+
+Hay un problema con este paquete de Windows Installer. Hay un programa que se necesita para que esta instalación se complete y que no se puede ejecutar. Póngase en contacto con el personal de soporte técnico o el proveedor del paquete. {{Acción [2], ubicación: [3], comando: [4] }}
+
+Hay un problema con este paquete de Windows Installer. Hay un programa que se ejecuta como parte de de la instalación que no ha finalizado como se esperaba. Póngase en contacto con el personal de soporte técnico o el proveedor del paquete. {{Acción [2], ubicación: [3], comando: [4] }}
+
+Hay un problema con este paquete de Windows Installer. Hay una DLL que se requiere para completar esta instalación que no se puede ejecutar. Póngase en contacto con el personal de soporte técnico o el proveedor del paquete. {{Acción [2], entrada: [3], biblioteca: [4] }}
+
+La eliminación se ha completado satisfactoriamente.
+
+Error en la eliminación.
+
+El anuncio se ha completado satisfactoriamente.
+
+Error en el anuncio.
+
+La configuración se ha completado satisfactoriamente.
+
+Error en la configuración.
+
+Debe ser un Administrador para quitar esta aplicación. Para quitarla, puede iniciar la sesión como un Administrador, o póngase en contacto con el grupo de soporte técnico para obtener asistencia.
+
+La ruta de acceso [2] no es válida. Especifique una ruta de acceso válida.
+
+Memoria insuficiente. Cierre otras aplicaciones antes de intentarlo de nuevo.
+
+No hay ningún disco en la unidad [2]. Inserte uno y haga clic en Reintentar, o bien haga clic en Cancelar para volver al volumen previamente seleccionado.
+
+No hay ningún disco en la unidad [2]. Inserte uno y haga clic en Reintentar, o bien haga clic en Cancelar para volver al cuadro de diálogo de examinar y seleccionar un volumen distinto.
+
+La carpeta [2] no existe. Escriba una ruta de acceso a una carpeta existente.
+
+No dispone de privilegios para leer esta carpeta.
+
+No se puede determinar una carpeta de destino válida para la instalación.
+
+Error al intentar leer la base de datos de instalación de origen: [2].
+
+Programando la operación de reinicio: cambiando el nombre del archivo [2] a [3]. Para completar la operación se debe reiniciar el equipo.
+
+Programando la operación de reinicio: eliminando el archivo [2]. Para completar la operación se debe reiniciar el equipo.
+
+Error al registrar el módulo [2]. HRESULT [3]. Póngase en contacto con el personal de soporte técnico.
+
+Error al eliminar el módulo [2] del registro. HRESULT [3]. Póngase en contacto con el personal de soporte técnico.
+
+Fallo al almacenar el paquete [2] en la memoria caché. Error: [3]. Póngase en contacto con el personal de soporte técnico.
+
+No se puede registrar la fuente [2]. Compruebe que dispone de suficientes permisos para instalar fuentes y que el sistema admite esta fuente.
+
+No se puede eliminar del registro la fuente [2]. Compruebe que dispone de suficientes permisos para quitar fuentes.
+
+No se puede crear el acceso directo [2]. Compruebe que la carpeta de destino existe y que puede obtener acceso a ella.
+
+No se puede crear el acceso directo [2]. Compruebe que el archivo de acceso directo existe y que puede obtener acceso a él.
+
+No se puede registrar la biblioteca de tipos para el archivo [2]. Póngase en contacto con el personal de soporte técnico.
+
+No se puede quitar del registro la biblioteca de tipos del archivo [2]. Póngase en contacto con el personal de soporte técnico.
+
+No se puede actualizar el archivo .ini [2][3]. Compruebe que el archivo existe y que puede obtener acceso a él.
+
+No se puede programar el archivo [2] para que reemplace a [3] cuando se reinicie el sistema. Compruebe que dispone de permisos de escritura para el archivo [3].
+
+Error al quitar el administrador de controladores ODBC; error de ODBC [2]: [3]. Póngase en contacto con el personal de soporte técnico.
+
+Error al instalar el administrador de controladores ODBC; error de ODBC [2]: [3]. Póngase en contacto con el personal de soporte técnico.
+
+Error al quitar el controlador ODBC [4]; error de ODBC [2]: [3]. Compruebe que dispone de suficientes privilegios para quitar controladores ODBC.
+
+Error al instalar el controlador ODBC [4]; error de ODBC [2]: [3]. Compruebe que el archivo [4] existe y que puede obtener acceso a él.
+
+Error al configurar el origen de datos de ODBC [4]; error de ODBC [2]: [3]. Compruebe que el archivo [4] y que puede obtener acceso a él.
+
+Fallo al iniciar el servicio '[2]' ([3]). Compruebe que dispone de suficientes privilegios para iniciar servicios del sistema.
+
+No se puede detener el servicio '[2]' ([3]). Compruebe que dispone de suficientes privilegios para detener servicios del sistema.
+
+No se puede eliminar el servicio '[2]' ([3]). Compruebe que dispone de suficientes privilegios para quitar servicios del sistema.
+
+No se puede instalar el servicio '[2]' ([3]). Compruebe que dispone de suficientes privilegios para instalar servicios del sistema.
+
+No se puede actualizar la variable de entorno '[2]'. Compruebe que dispone de suficientes privilegios para modificar variables de entorno.
+
+No tiene suficientes privilegios para completar esta instalación para todos los usuarios del equipo. Inicie la sesión como administrador y vuelva a realizar la instalación.
+
+No se puede establecer la seguridad para el archivo '[3]'. Error: [2]. Compruebe que dispone de suficientes privilegios para modificar los permisos de seguridad para este archivo.
+
+Los Servicios de componente (COM+ 1.0) no están instalados en este sistema. Para realizar esta instalación, es necesario que los Servicios de componente estén instalados. Encontrará los Servicios de componente en Windows 2000.
+
+Error al registrar la aplicación COM+. Póngase en contacto con el personal de soporte para obtener más información.
+
+Error al quitar la aplicación COM+ del registro. Póngase en contacto con el personal de soporte para obtener más información.
+
+No se puede cambiar la descripción del servicio '[2]' ([3]).
+
+El servicio Windows Installer no pudo actualizar el archivo del sistema [2] porque está protegido por Windows. Es posible que tenga que actualizar el sistema operativo para que este programa funcione correctamente. {{Versión del paquete: [3], Versión protegida del SO: [4]}}
+
+El servicio Windows Installer no pudo actualizar el archivo protegido de Windows [2]. {{Versión del paquete: [3], Versión protegida del SO: [4], Error SFP: [5]}}
+
+El servicio de Windows Installer no puede actualizar uno o más archivos protegidos de Windows. {{SFP Error: [2]. Lista de archivos protegidos:\r\n[3]}}
+
+Las instalaciones del usuario están deshabilitadas a través de la directiva en el equipo.
+
+Error durante la instalación del componente de asamblea [2]. HRESULT: [3]. {{interfaz de asamblea: [4], función: [5], nombre de asamblea: [6]}}
+
+
diff --git a/src/WINNT/install/wix/lang/ja_JP/ActionText.wxi b/src/WINNT/install/wix/lang/ja_JP/ActionText.wxi
new file mode 100644
index 0000000000..893302e4ad
--- /dev/null
+++ b/src/WINNT/install/wix/lang/ja_JP/ActionText.wxi
@@ -0,0 +1,143 @@
+
+
+Œã‚ÅŽg—p‚·‚邽‚߂ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðݒ肵‚Ä‚¢‚Ü‚·
+
+ƒŒƒWƒXƒgƒŠ—̈æ‚ðŠ„‚è“–‚Ä‚Ä‚¢‚Ü‚·
+
+ƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·
+
+ŽÀsƒtƒ@ƒCƒ‹‚ðƒoƒCƒ“ƒh‚µ‚Ä‚¢‚Ü‚·
+
+ðŒ‚ɇ‚¤»•i‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·
+
+•K—v‚ȗ̈æ‚ðŒvŽZ‚µ‚Ä‚¢‚Ü‚·
+
+•K—v‚ȗ̈æ‚ðŒvŽZ‚µ‚Ä‚¢‚Ü‚·
+
+ƒtƒHƒ‹ƒ_‚ð쬂µ‚Ä‚¢‚Ü‚·
+
+ƒVƒ‡[ƒgƒJƒbƒg‚ð쬂µ‚Ä‚¢‚Ü‚·
+
+ƒT[ƒrƒX‚ð휂µ‚Ä‚¢‚Ü‚·
+
+d•¡‚µ‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ð쬂µ‚Ä‚¢‚Ü‚·
+
+•K—v‚ȗ̈æ‚ðŒvŽZ‚µ‚Ä‚¢‚Ü‚·
+
+ŠÖ˜A‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·
+
+‘€ì‚Ì‚½‚߂̃XƒNƒŠƒvƒg‘€ì‚ð쬂µ‚Ä‚¢‚Ü‚·:
+
+ƒlƒbƒgƒ[ƒN ƒCƒ“ƒXƒg[ƒ‹ ƒtƒ@ƒCƒ‹‚ðƒRƒs[‚µ‚Ä‚¢‚Ü‚·
+
+V‚µ‚¢ƒtƒ@ƒCƒ‹‚ðƒRƒs[‚µ‚Ä‚¢‚Ü‚·
+
+ODBC ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·
+
+V‚µ‚¢ƒT[ƒrƒX‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·
+
+ƒVƒXƒeƒ€ ƒJƒ^ƒƒO‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·
+
+ƒCƒ“ƒXƒg[ƒ‹‚ðŒŸØ‚µ‚Ä‚¢‚Ü‚·
+
+‹N“®ó‘Ô‚ðŒŸØ‚µ‚Ä‚¢‚Ü‚·
+
+ŠÖ˜A‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚ç‹@”\‚Ìó‘Ô‚ðˆÚs‚µ‚Ä‚¢‚Ü‚·
+
+ƒtƒ@ƒCƒ‹‚ðˆÚ“®‚µ‚Ä‚¢‚Ü‚·
+
+ƒAƒZƒ“ƒuƒŠî•ñ‚ðŒöŠJ‚µ‚Ä‚¢‚Ü‚·
+
+ƒAƒZƒ“ƒuƒŠî•ñ‚ð”ñŒöŠJ‚É‚µ‚Ä‚¢‚Ü‚·
+
+ƒtƒ@ƒCƒ‹‚ðC³‚µ‚Ä‚¢‚Ü‚·
+
+ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì“o˜^‚ðXV‚µ‚Ä‚¢‚Ü‚·
+
+ðŒ‚ɇ‚¤ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŒöŠJ‚µ‚Ä‚¢‚Ü‚·
+
+»•i‹@”\‚ðŒöŠJ‚µ‚Ä‚¢‚Ü‚·
+
+»•iî•ñ‚ðŒöŠJ‚µ‚Ä‚¢‚Ü‚·
+
+ƒNƒ‰ƒX ƒT[ƒo[‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+COM+ ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ƃRƒ“ƒ|[ƒlƒ“ƒg‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+ƒGƒNƒXƒeƒ“ƒVƒ‡ƒ“ ƒT[ƒo[‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+ƒtƒHƒ“ƒg‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+MIME î•ñ‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+»•i‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+ƒvƒƒOƒ‰ƒ€Ž¯•ÊŽq‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+Ží—ނ̃‰ƒCƒuƒ‰ƒŠ‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+ƒ†[ƒU[‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+d•¡‚µ‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ŠÂ‹«ƒXƒgƒŠƒ“ƒO‚ðXV‚µ‚Ä‚¢‚Ü‚·
+
+ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ƒtƒ@ƒCƒ‹‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ƒtƒHƒ‹ƒ_‚ð휂µ‚Ä‚¢‚Ü‚·
+
+INI ƒtƒ@ƒCƒ‹‚̃Gƒ“ƒgƒŠ‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ODBC ƒRƒ“ƒ|[ƒlƒ“ƒg‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ƒVƒXƒeƒ€ ƒŒƒWƒXƒgƒŠ‚Ì’l‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ƒVƒ‡[ƒgƒJƒbƒg‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ðŒ‚ɇ‚¤»•i‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·
+
+‘€ì‚ðŒ³‚É–ß‚µ‚Ä‚¢‚Ü‚·:
+
+ƒoƒbƒNƒAƒbƒv ƒtƒ@ƒCƒ‹‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ƒ‚ƒWƒ…[ƒ‹‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·
+
+ƒ‚ƒWƒ…[ƒ‹‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·
+
+ODBC ƒfƒBƒŒƒNƒgƒŠ‚ð‰Šú‰»‚µ‚Ä‚¢‚Ü‚·
+
+ƒT[ƒrƒX‚ðŠJŽn‚µ‚Ä‚¢‚Ü‚·
+
+ƒT[ƒrƒX‚ð’âŽ~‚µ‚Ä‚¢‚Ü‚·
+
+ˆÚ“®‚µ‚½ƒtƒ@ƒCƒ‹‚ð휂µ‚Ä‚¢‚Ü‚·
+
+ðŒ‚ɇ‚¤ƒRƒ“ƒ|[ƒlƒ“ƒg‚ð”ñŒöŠJ‚É‚µ‚Ä‚¢‚Ü‚·
+
+»•i‹@”\‚ð”ñŒöŠJ‚É‚µ‚Ä‚¢‚Ü‚·
+
+»•iî•ñ‚ð”ñŒöŠJ‚É‚µ‚Ä‚¢‚Ü‚·
+
+ƒNƒ‰ƒX ƒT[ƒo[‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·
+
+COM+ ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ƃRƒ“ƒ|[ƒlƒ“ƒg‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·
+
+ƒGƒNƒXƒeƒ“ƒVƒ‡ƒ“ ƒT[ƒo[‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·
+
+ƒtƒHƒ“ƒg‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·
+
+MIME î•ñ‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·
+
+ƒvƒƒOƒ‰ƒ€Ž¯•ÊŽq‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·
+
+Ží—ނ̃‰ƒCƒuƒ‰ƒŠ‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·
+
+ŠÂ‹«ƒXƒgƒŠƒ“ƒO‚ðXV‚µ‚Ä‚¢‚Ü‚·
+
+INI ƒtƒ@ƒCƒ‹‚É’l‚ð‘‚«ž‚ñ‚Å‚¢‚Ü‚·
+
+Œã‚ÅŽg—p‚·‚邽‚߂ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðݒ肵‚Ä‚¢‚Ü‚·
+
+
diff --git a/src/WINNT/install/wix/lang/ja_JP/Error.wxi b/src/WINNT/install/wix/lang/ja_JP/Error.wxi
new file mode 100644
index 0000000000..427ea6599e
--- /dev/null
+++ b/src/WINNT/install/wix/lang/ja_JP/Error.wxi
@@ -0,0 +1,319 @@
+
+
+{{’v–½“I‚ȃGƒ‰[: }}
+
+{{ƒGƒ‰[ [1]B }}
+
+Œx [1]B
+
+
+
+î•ñ [1]B
+
+‚±‚̃pƒbƒP[ƒW‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é‚Æ‚«‚É—\Šú‚µ‚È‚¢ƒGƒ‰[‚ªŒŸo‚³‚ê‚Ü‚µ‚½B‚±‚̃pƒbƒP[ƒW‚Í–â‘肪‚ ‚é‰Â”\«‚ª‚ ‚è‚Ü‚·BƒGƒ‰[ ƒR[ƒh‚Í [1] ‚Å‚·B {{ˆø”: [2], [3], [4]}}
+
+
+
+{{ƒfƒBƒXƒN‚ª‚¢‚Á‚Ï‚¢‚Å‚·: }}
+
+‘€ì [Time]: [1]B [2]
+
+[ProductName]
+
+{[2]}{, [3]}{, [4]}
+
+ƒƒbƒZ[ƒW‚ÌŽí—Þ: [1], ˆø”: [2]
+
+=== ƒƒOŠJŽn: [Date] [Time] ===
+
+=== ƒƒOI—¹: [Date] [Time] ===
+
+‘€ìŠJŽn [Time]: [1]B
+
+‘€ìI—¹ [Time]: [1]B –ß‚è’l [2]B
+
+Žc‚莞ŠÔ: {[1] •ª }{[2] •b}
+
+ƒƒ‚ƒŠ•s‘«‚Å‚·B‚Ù‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð•Â‚¶‚Ä‚©‚çAÄŽŽs‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒCƒ“ƒXƒg[ƒ‹ ƒvƒƒOƒ‰ƒ€‚©‚牞“š‚ª‚ ‚è‚Ü‚¹‚ñB
+
+ƒCƒ“ƒXƒg[ƒ‹ ƒvƒƒOƒ‰ƒ€‚ÍŠ®—¹‘O‚É’†’f‚³‚ê‚Ü‚µ‚½B
+
+Windows ‚É [ProductName] ‚ðݒ肵‚Ä‚¢‚Ü‚·B‚µ‚΂炂¨‘Ò‚¿‚‚¾‚³‚¢B
+
+•K—v‚Èî•ñ‚ðW‚ß‚Ä‚¢‚Ü‚·...
+
+‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̌¢ƒo[ƒWƒ‡ƒ“‚ð휂µ‚Ä‚¢‚Ü‚·...
+
+‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̌¢ƒo[ƒWƒ‡ƒ“‚ð휂·‚途õ‚ð‚µ‚Ä‚¢‚Ü‚·...
+
+{[ProductName] }‚̃ZƒbƒgƒAƒbƒv‚𳂵‚Š®—¹‚µ‚Ü‚µ‚½B
+
+{[ProductName] }‚̃ZƒbƒgƒAƒbƒv‚ÉŽ¸”s‚µ‚Ü‚µ‚½B
+
+ƒtƒ@ƒCƒ‹‚ð“Ç‚ÝŽæ‚é‚Æ‚«‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [2]B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [3]B}} ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹ '[2]' ‚ð쬂ł«‚Ü‚¹‚ñB‚±‚Ì–¼‘O‚̃fƒBƒŒƒNƒgƒŠ‚ªŠù‚É‚ ‚è‚Ü‚·BƒCƒ“ƒXƒg[ƒ‹‚ðŽæ‚èÁ‚µA•Ê‚ÌꊂɃCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒfƒBƒXƒN [2] ‚ð‘}“ü‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒCƒ“ƒXƒg[ƒ‹ ƒvƒƒOƒ‰ƒ€‚ɂ̓fƒBƒŒƒNƒgƒŠ [2] ‚ɃAƒNƒZƒX‚·‚邽‚ß‚Ì“ÁŒ ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·BƒCƒ“ƒXƒg[ƒ‹‚ð‘±s‚Å‚«‚Ü‚¹‚ñBAdministrator ‚Æ‚µ‚ăƒOƒIƒ“‚·‚é‚©A‚Ü‚½‚̓VƒXƒeƒ€ŠÇ—ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹‚É‘‚«ž‚Þ‚Æ‚«‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [2]B‚±‚̃fƒBƒŒƒNƒgƒŠ‚ɃAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹ [2] ‚Ì“Ç‚Ýž‚Ý‚ÉŽ¸”s‚µ‚Ü‚µ‚½B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [3]B}} ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µƒAƒNƒZƒXŒ ‚ª‚ ‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹ '[2]' ‚͕ʂ̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÅŽg—p‚³‚ê‚Ä‚¢‚Ü‚·BŠJ‚¢‚Ä‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð‚·‚×‚ÄI—¹‚µ‚Ä‚©‚çA[\[]ÄŽŽs[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹ [2] ‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚邽‚߂̃fƒBƒXƒN—̈悪•s‘«‚µ‚Ä‚¢‚Ü‚·BƒfƒBƒXƒN—̈æ‚ð‰ð•ú‚µ‚Ä‚©‚çA[\[]ÄŽŽs[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢BI—¹‚·‚éê‡‚Í [\[]ƒLƒƒƒ“ƒZƒ‹[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ü‚·B
+
+ƒ\[ƒX ƒtƒ@ƒCƒ‹ [2] ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñBƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹‚ð“Ç‚ÝŽæ‚é‚Æ‚«‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [3]B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [2]B}} ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹‚É‘‚«ž‚Þ‚Æ‚«‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [3]B{{ ƒVƒXƒeƒ€ ƒGƒ‰[[2]B}} ‚±‚̃fƒBƒŒƒNƒgƒŠ‚ɃAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒ\[ƒX ƒtƒ@ƒCƒ‹‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB{{(cabinet)}}: [2]Bƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒfƒBƒŒƒNƒgƒŠ '[2]' ‚ð쬂ł«‚Ü‚¹‚ñB‚±‚Ì–¼‘O‚̃tƒ@ƒCƒ‹‚ªŠù‚É‚ ‚è‚Ü‚·Bƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ÏX‚·‚é‚©Aƒtƒ@ƒCƒ‹‚ð휂µ‚Ä‚©‚çA[\[]ÄŽŽs[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B‚Ü‚½‚ÍA[\[]ƒLƒƒƒ“ƒZƒ‹[\]] ‚ðƒNƒŠƒbƒN‚µ‚ÄAI—¹‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒ{ƒŠƒ…[ƒ€ [2] ‚ÍŒ»ÝŽg—p‚Å‚«‚Ü‚¹‚ñB•Ê‚̃{ƒŠƒ…[ƒ€‚ð‘I‘ð‚µ‚Ä‚‚¾‚³‚¢B
+
+Žw’肳‚ꂽƒpƒX '[2]' ‚ÍŽg—p‚Å‚«‚Ü‚¹‚ñB
+
+Žw’肳‚ꂽƒtƒHƒ‹ƒ_‚É‘‚«ž‚ß‚Ü‚¹‚ñ: [2]B
+
+ŽŸ‚̃tƒ@ƒCƒ‹‚ð“Ç‚ÝŽæ‚è’†‚ÉAƒlƒbƒgƒ[ƒN ƒGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [2]
+
+ƒfƒBƒŒƒNƒgƒŠ [2] ‚ð쬒†‚ÉAƒGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½B
+
+ƒfƒBƒŒƒNƒgƒŠ [2] ‚ð쬒†‚ÉAƒlƒbƒgƒ[ƒN ƒGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½B
+
+ƒ\[ƒX ƒtƒ@ƒCƒ‹ ƒLƒƒƒrƒlƒbƒg‚ðŠJ‚¢‚Ä‚¢‚é“r’†‚ÅAƒlƒbƒgƒ[ƒN ƒGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [2]B
+
+Žw’肳‚ꂽƒpƒX‚Í’·‚·‚¬‚Ü‚·: [2]
+
+ƒCƒ“ƒXƒg[ƒ‹ ƒvƒƒOƒ‰ƒ€‚É‚ÍAƒtƒ@ƒCƒ‹‚ðC³‚·‚é“ÁŒ ‚ª‚ ‚è‚Ü‚¹‚ñ: [2]B
+
+ƒtƒHƒ‹ƒ_ ƒpƒX '[2]' ‚̈ꕔ‚ª•s³‚Å‚·BƒpƒX‚ª‹ó‚Å‚ ‚é‚©‚Ü‚½‚Í’·‚·‚¬‚é‚Ì‚ÅA‚±‚̃VƒXƒeƒ€‚Å‚ÍŽw’è‚Å‚«‚Ü‚¹‚ñB
+
+ƒtƒHƒ‹ƒ_ ƒpƒX '[2]' ‚ÉŽg—p‚³‚ê‚Ä‚¢‚é’PŒê‚Ì’†‚ÉAƒtƒHƒ‹ƒ_ ƒpƒX‚Å‚ÍŽg—p‚Å‚«‚È‚¢‚à‚Ì‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B
+
+ƒtƒHƒ‹ƒ_ ƒpƒX '[2]' ‚ÉŽg—p‚Å‚«‚È‚¢•¶Žš‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B
+
+[2]' ‚̓Vƒ‡[ƒg ƒtƒ@ƒCƒ‹–¼‚Æ‚µ‚Ăͳ‚µ‚‚ ‚è‚Ü‚¹‚ñB
+
+ƒtƒ@ƒCƒ‹ ƒZƒLƒ…ƒŠƒeƒB‚ðŽæ“¾‚·‚é‚Æ‚«‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [3] GetLastError: [2]
+
+ƒhƒ‰ƒCƒu‚ª³‚µ‚‚ ‚è‚Ü‚¹‚ñ: [2]
+
+ƒtƒ@ƒCƒ‹ [2] ‚Ƀpƒbƒ`‚ð“K—p‚·‚鎞‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½B‚¨‚»‚ç‚•Ê‚Ì•û–@‚É‚æ‚Á‚ăAƒbƒvƒf[ƒg‚³‚ꂽ‚½‚ß‚Å‚·B‚±‚̃pƒbƒ`‚Å•ÏX‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñBÚׂÍA‚±‚̃pƒbƒ`‚̃xƒ“ƒ_[‚É‚¨–â‚¢‡‚킹‚‚¾‚³‚¢B {{ƒVƒXƒeƒ€ ƒGƒ‰[ : [3]}}
+
+ƒLƒƒƒrƒlƒbƒg ƒtƒ@ƒCƒ‹ [2] ‚ɃfƒWƒ^ƒ‹–¼‚ª•t‚¢‚Ä‚¢‚È‚¢‚½‚ßA•K—v‚ȃtƒ@ƒCƒ‹‚ðƒCƒ“ƒXƒg[ƒ‹‚Å‚«‚Ü‚¹‚ñBƒLƒƒƒrƒlƒbƒg ƒtƒ@ƒCƒ‹‚ª‰ó‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
+
+ƒLƒƒƒrƒlƒbƒg ƒtƒ@ƒCƒ‹ [2] ‚É–³Œø‚ȃfƒWƒ^ƒ‹–¼‚ª•t‚¢‚Ä‚¢‚邽‚ßA•K—v‚ȃtƒ@ƒCƒ‹‚ðƒCƒ“ƒXƒg[ƒ‹‚Å‚«‚Ü‚¹‚ñBƒLƒƒƒrƒlƒbƒg ƒtƒ@ƒCƒ‹‚ª‰ó‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B{{ ƒGƒ‰[ [3] ‚ª WinVerifyTrust ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚Ü‚µ‚½B}}
+
+[2] ƒtƒ@ƒCƒ‹‚𳂵‚ƒRƒs[‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½: CRC ƒGƒ‰[B
+
+[2] ƒtƒ@ƒCƒ‹‚𳂵‚ˆÚ“®‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½: CRC ƒGƒ‰[B
+
+C³ƒvƒƒOƒ‰ƒ€‚ðƒtƒ@ƒCƒ‹ [2] ‚ɳ‚µ‚“K—p‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½: CRC ƒGƒ‰[B
+
+ƒtƒ@ƒCƒ‹ '[2]' ‚̓Lƒƒƒrƒlƒbƒg ƒtƒ@ƒCƒ‹ '[3]' ‚ÅŒ©‚‚©‚ç‚È‚¢‚½‚ßAƒCƒ“ƒXƒg[ƒ‹‚Å‚«‚Ü‚¹‚ñBƒlƒbƒgƒ[ƒN ƒGƒ‰[‚Ü‚½‚Í CD-ROM ‚©‚ç‚Ì“Ç‚ÝŽæ‚èƒGƒ‰[‚ª”¶‚µ‚½‚©A‚±‚̃pƒbƒP[ƒW‚É–â‘肪‚ ‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
+
+‚±‚̃Cƒ“ƒXƒg[ƒ‹‚É•K—v‚ȃLƒƒƒrƒlƒbƒg ƒtƒ@ƒCƒ‹ '[2]' ‚͉ó‚ê‚Ä‚¢‚邽‚ߎg—p‚Å‚«‚Ü‚¹‚ñBƒlƒbƒgƒ[ƒN ƒGƒ‰[‚Ü‚½‚Í CD-ROM ‚©‚ç‚Ì“Ç‚ÝŽæ‚èƒGƒ‰[‚ª”¶‚µ‚½‚©A‚±‚̃pƒbƒP[ƒW‚É–â‘肪‚ ‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
+
+‚±‚̃Cƒ“ƒXƒg[ƒ‹‚ðŠ®—¹‚·‚邽‚ß‚É•K—v‚Ȉꎞƒtƒ@ƒCƒ‹‚ð쬂·‚é‚Æ‚«‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½B{{ ƒtƒHƒ‹ƒ_: [3]. ƒVƒXƒeƒ€ ƒGƒ‰[ ƒR[ƒh: [2]}}
+
+ƒL[‚ð쬂ł«‚Ü‚¹‚ñ‚Å‚µ‚½: [2]B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [3]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒL[‚ðŠJ‚‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½: [2]B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [3]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒL[ [3] ‚©‚ç’l [2] ‚ð휂ł«‚Ü‚¹‚ñ‚Å‚µ‚½B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [4]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒL[ [2] ‚ð휂ł«‚Ü‚¹‚ñ‚Å‚µ‚½B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [3]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒL[ [3] ‚©‚ç’l [2] ‚ð“Ç‚ÝŽæ‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [4]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+’l [2] ‚ðƒL[ [3] ‚É‘‚«ž‚ß‚Ü‚¹‚ñB{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [4]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒL[ [2] ‚ɑ΂·‚é’l‚Ì–¼‘O‚ðŽæ“¾‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [3]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒL[ [2] ‚ɑ΂·‚éƒTƒu ƒL[–¼‚ðŽæ“¾‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [3]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒL[ [2] ‚ɑ΂·‚éƒZƒLƒ…ƒŠƒeƒBî•ñ‚ð“Ç‚ÝŽæ‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B{{ ƒVƒXƒeƒ€ ƒGƒ‰[ [3]B}} ‚»‚̃L[‚Ö‚Ì\•ª‚ȃAƒNƒZƒX‚ª‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚©A‚Ü‚½‚̓Tƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+Žg—p‰Â”\‚ȃŒƒWƒXƒgƒŠ—̈æ‚ð‘‚â‚·‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é‚É‚ÍA[2] KB ‚̃ŒƒWƒXƒgƒŠ—̈悪•K—v‚Å‚·B
+
+•Ê‚̃Cƒ“ƒXƒg[ƒ‹‚ªŒ»Ýs‚í‚ê‚Ä‚¢‚Ü‚·BV‚½‚ɃCƒ“ƒXƒg[ƒ‹‚ðs‚¤‚É‚ÍAŠù‚ÉŽÀs’†‚̃Cƒ“ƒXƒg[ƒ‹‚ðŠ®—¹‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+
+•ÛŒì‚³‚ê‚Ä‚¢‚éƒf[ƒ^‚ւ̃AƒNƒZƒX‚ŃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½BWindows ƒCƒ“ƒXƒg[ƒ‰‚ª³‚µ‚ݒ肳‚ê‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚©‚çAÄ“xƒCƒ“ƒXƒg[ƒ‹‚ðŽÀs‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒ†[ƒU[ '[2]' ‚É‚æ‚Á‚ÄAŠù‚É»•i '[3]' ‚̃Cƒ“ƒXƒg[ƒ‹‚ªŠJŽn‚³‚ê‚Ä‚¢‚Ü‚·B‚±‚Ì»•i‚ðŽg‚¤‘O‚ÉA‚±‚̃†[ƒU[‚ÍÄ“xƒCƒ“ƒXƒg[ƒ‹‚ðŽÀs‚·‚é•K—v‚ª‚ ‚è‚Ü‚·BŒ»Ý‚̃Cƒ“ƒXƒg[ƒ‹‚Í‚±‚Ì‚Ü‚Ü‘±s‚³‚ê‚Ü‚·B
+
+ƒ†[ƒU[ '[2]' ‚É‚æ‚Á‚ÄAŠù‚É»•i '[3]' ‚̃Cƒ“ƒXƒg[ƒ‹‚ªŠJŽn‚³‚ê‚Ä‚¢‚Ü‚·B‚±‚Ì»•i‚ðŽg‚¤‘O‚ÉA‚±‚̃†[ƒU[‚ÍÄ“xƒCƒ“ƒXƒg[ƒ‹‚ðŽÀs‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
+
+ƒfƒBƒXƒN—̈悪‘«‚è‚Ü‚¹‚ñ -- ƒ{ƒŠƒ…[ƒ€: '[2]'; •K—v‚ȗ̈æ: [3] KB; —˜—p‰Â”\‚ȗ̈æ: [4] KBBƒfƒBƒXƒN—̈æ‚ð‰ð•ú‚µ‚Ä‚©‚çAÄŽŽs‚µ‚Ä‚‚¾‚³‚¢B
+
+Žæ‚èÁ‚µ‚Ü‚·‚©?
+
+ƒtƒ@ƒCƒ‹ [2][3] ‚ÍŽg—p’†‚Å‚· {ƒvƒƒZƒX–¼: [4]AID: [5]AƒEƒBƒ“ƒhƒE ƒ^ƒCƒgƒ‹: '[6]'} ‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðI—¹‚µ‚Ä‚©‚çAÄŽŽs‚µ‚Ä‚‚¾‚³‚¢B
+
+'[2]' ‚ªŠù‚ɃCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚邽‚ßA‚±‚Ì»•i‚ðƒCƒ“ƒXƒg[ƒ‹‚Å‚«‚Ü‚¹‚ñB‚±‚Ì 2 ‚‚̻•i‚ɂ͌݊·«‚ª‚ ‚è‚Ü‚¹‚ñB
+
+ƒ{ƒŠƒ…[ƒ€ '[2]' ‚̃fƒBƒXƒN—̈悪•s‘«‚µ‚Ä‚¢‚邽‚ßA‰ñ•œ‚ð—LŒø‚É‚µ‚½‚܂܃Cƒ“ƒXƒg[ƒ‹‚ð‘±s‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB[3] KB •K—v‚Å‚·‚ªA[4] KB ‚µ‚©‚ ‚è‚Ü‚¹‚ñB‰ñ•œî•ñ‚ð•Û‘¶‚¹‚¸‚ɃCƒ“ƒXƒg[ƒ‹‚ð‘±s‚·‚éê‡‚Í [\[]–³Ž‹[\]]A—˜—p‰Â”\‚ȗ̈æ‚ðÄŠm”F‚·‚éê‡‚Í [\[]ÄŽŽs[\]]AƒCƒ“ƒXƒg[ƒ‹‚ðI—¹‚·‚éê‡‚Í [\[]ƒLƒƒƒ“ƒZƒ‹[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒlƒbƒgƒ[ƒNã‚ÌêŠ [2] ‚ÖƒAƒNƒZƒX‚Å‚«‚Ü‚¹‚ñB
+
+ƒCƒ“ƒXƒg[ƒ‹‚ð‘±s‚·‚é‚É‚ÍAŽŸ‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðI—¹‚·‚é•K—v‚ª‚ ‚è‚Ü‚·:
+
+‚±‚̃Rƒ“ƒsƒ…[ƒ^‚É‚±‚Ì»•i‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é‚Ì‚ÉA‘O‚à‚Á‚ăCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢»•i‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B
+
+ƒZƒLƒ…ƒŠƒeƒB‚ÌÝ’è‚ð“K—p‚·‚é‚Æ‚«‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½B[2] ‚Í—LŒø‚ȃ†[ƒU[‚Ü‚½‚̓Oƒ‹[ƒv‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚±‚ê‚̓pƒbƒP[ƒW‚Ì–â‘è‚©A‚Ü‚½‚̓lƒbƒgƒ[ƒNã‚̃hƒƒCƒ“ ƒRƒ“ƒgƒ[ƒ‰‚ÉÚ‘±‚·‚é‚Æ‚«‚Ì–â‘è‚̉”\«‚ª‚ ‚è‚Ü‚·Bƒlƒbƒgƒ[ƒN‚ÌÚ‘±‚ðŠm”F‚µ [\[]ÄŽŽs[\]] ‚ðƒNƒŠƒbƒN‚·‚é‚©AƒCƒ“ƒXƒg[ƒ‹‚ðI—¹‚·‚é‚É‚Í [\[]ƒLƒƒƒ“ƒZƒ‹[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B {{ƒ†[ƒU[‚Ì SID ‚ðŒŸo‚Å‚«‚Ü‚¹‚ñ, ƒVƒXƒeƒ€ ƒGƒ‰[ [3]}}
+
+ƒL[ [2] ‚ͳ‚µ‚‚ ‚è‚Ü‚¹‚ñB³‚µ‚¢ƒL[‚ª“ü—Í‚³‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+[2] ‚Ì\¬‚ð‘±s‚·‚é‘O‚ÉAƒVƒXƒeƒ€‚ðÄ‹N“®‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚·‚®‚ÉÄ‹N“®‚·‚éê‡‚Í [\[]‚Í‚¢[\]] ‚ðAŒã‚ÅŽè“®‚ÅÄ‹N“®‚·‚éê‡‚Í [\[]‚¢‚¢‚¦[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B
+
+[2] ‚És‚Á‚½\¬‚Ì•ÏX‚ð—LŒø‚É‚·‚é‚É‚ÍAƒVƒXƒeƒ€‚ðÄ‹N“®‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚·‚®‚ÉÄ‹N“®‚·‚éê‡‚Í [\[]‚Í‚¢[\]] ‚ðAŒã‚ÅŽè“®‚ÅÄ‹N“®‚·‚éê‡‚Í [\[]‚¢‚¢‚¦[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B
+
+[2] ‚̃Cƒ“ƒXƒg[ƒ‹‚ÍŒ»Ý’†’f‚³‚ê‚Ä‚¢‚Ü‚·B‘±s‚·‚é‚É‚ÍAƒCƒ“ƒXƒg[ƒ‹‚É‚æ‚Á‚Äs‚í‚ꂽ•ÏX‚ðŽæ‚èÁ‚·•K—v‚ª‚ ‚è‚Ü‚·B‚±‚ê‚ç‚Ì•ÏX‚ðŽæ‚èÁ‚µ‚Ü‚·‚©?
+
+‚±‚Ì»•i‚̃Cƒ“ƒXƒg[ƒ‹‚ÍŒ»Ýis’†‚Å‚·B‘±s‚·‚é‚É‚ÍAƒCƒ“ƒXƒg[ƒ‹‚É‚æ‚Á‚Äs‚í‚ꂽ•ÏX‚ðŽæ‚èÁ‚·•K—v‚ª‚ ‚è‚Ü‚·B‚±‚ê‚ç‚Ì•ÏX‚ðŽæ‚èÁ‚µ‚Ü‚·‚©?
+
+»•i [2] ‚̃Cƒ“ƒXƒg[ƒ‹ ƒpƒbƒP[ƒW‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B—LŒø‚ȃRƒs[‚̃Cƒ“ƒXƒg[ƒ‹ ƒpƒbƒP[ƒW '[3]' ‚ðŽg‚Á‚Ä‚à‚¤ˆê“xƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒCƒ“ƒXƒg[ƒ‹‚𳂵‚Š®—¹‚µ‚Ü‚µ‚½B
+
+ƒCƒ“ƒXƒg[ƒ‹‚ÉŽ¸”s‚µ‚Ü‚µ‚½B
+
+»•i: [2] -- [3]
+
+ƒRƒ“ƒsƒ…[ƒ^‚𒼑O‚Ìó‘Ô‚É•œŒ³‚·‚é‚©AŒã‚ŃCƒ“ƒXƒg[ƒ‹‚ð‘±s‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B•œŒ³‚µ‚Ü‚·‚©?
+
+ƒCƒ“ƒXƒg[ƒ‹î•ñ‚ðƒfƒBƒXƒN‚É‘‚«ž‚Ý’†‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½B\•ª‚ȃfƒBƒXƒN—̈悪‚ ‚邱‚Æ‚ðŠm”F‚µ‚Ä‚©‚çA[\[]ÄŽŽs[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‘±s‚·‚é‚©A‚Ü‚½‚Í [\[]ƒLƒƒƒ“ƒZƒ‹[\]] ‚ðƒNƒŠƒbƒN‚µ‚ăCƒ“ƒXƒg[ƒ‹‚𒆎~‚µ‚Ä‚‚¾‚³‚¢B
+
+‚±‚̃Rƒ“ƒsƒ…[ƒ^‚𒼑O‚Ìó‘Ô‚É•œŒ³‚·‚邽‚ß‚É•K—v‚ȃtƒ@ƒCƒ‹‚̈ꕔ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B•œŒ³‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
+
+[2] ‚Í—v‹‚³‚ꂽ»•i‚Ì 1 ‚‚ðƒCƒ“ƒXƒg[ƒ‹‚Å‚«‚Ü‚¹‚ñB‹Zp“I‚ÉÚ‚µ‚¢•û‚É‚¨–â‚¢‡‚킹‚‚¾‚³‚¢B {{ƒVƒXƒeƒ€ ƒGƒ‰[ : [3]}}
+
+[2] ‚̌¢ƒo[ƒWƒ‡ƒ“‚ð휂·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB‹Zp“I‚ÉÚ‚µ‚¢•û‚É‚¨–â‚¢‡‚킹‚‚¾‚³‚¢B {{ƒVƒXƒeƒ€ ƒGƒ‰[ : [3]}}
+
+[2] ‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚µ‚½
+
+[2] ‚ð\¬‚µ‚Ü‚µ‚½
+
+[2] ‚ð휂µ‚Ü‚µ‚½
+
+ƒtƒ@ƒCƒ‹ [2] ‚̓fƒWƒ^ƒ‹–¼ƒ|ƒŠƒV[‚É‚æ‚Á‚Ä‹‘”Û‚³‚ê‚Ü‚µ‚½B
+
+Windows ƒCƒ“ƒXƒg[ƒ‰ ƒT[ƒrƒX‚ɃAƒNƒZƒX‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒZ[ƒt ƒ‚[ƒh‚Å Windows ‚ðŽÀs‚µ‚Ä‚¢‚éê‡A‚Ü‚½‚Í Windows ƒCƒ“ƒXƒg[ƒ‰‚ª³‚µ‚ƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚È‚¢ê‡‚É”¶‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·BƒTƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+‚±‚Ì Windows ƒCƒ“ƒXƒg[ƒ‰ ƒpƒbƒP[ƒW‚É‚Í–â‘肪‚ ‚è‚Ü‚·B‚±‚̃Cƒ“ƒXƒg[ƒ‹‚ðŠ®—¹‚·‚é‚Ì‚É•K—v‚ȃXƒNƒŠƒvƒg‚ðŽÀs‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒTƒ|[ƒg’S“–ŽÒ‚Ü‚½‚̓pƒbƒP[ƒW‚̃xƒ“ƒ_‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B {{ƒJƒXƒ^ƒ€‘€ì [2] ƒXƒNƒŠƒvƒg ƒGƒ‰[ [3], [4]: [5] s [6], —ñ [7], [8] }}
+
+‚±‚Ì Windows ƒCƒ“ƒXƒg[ƒ‰ ƒpƒbƒP[ƒW‚É‚Í–â‘肪‚ ‚è‚Ü‚·B‚±‚̃Cƒ“ƒXƒg[ƒ‹‚ðŠ®—¹‚·‚é‚Ì‚É•K—v‚ȃvƒƒOƒ‰ƒ€‚ðŽÀs‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒTƒ|[ƒg’S“–ŽÒ‚Ü‚½‚̓pƒbƒP[ƒW‚̃xƒ“ƒ_‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B {{‘€ì: [2], êŠ: [3], ƒRƒ}ƒ“ƒh: [4] }}
+
+‚±‚Ì Windows ƒCƒ“ƒXƒg[ƒ‰ ƒpƒbƒP[ƒW‚É‚Í–â‘肪‚ ‚è‚Ü‚·BƒZƒbƒgƒAƒbƒv‚̈ꕔ‚Æ‚µ‚ÄŽÀs‚³‚ê‚éƒvƒƒOƒ‰ƒ€‚ͳ‚µ‚Š®—¹‚µ‚Ü‚¹‚ñ‚Å‚µ‚½BƒTƒ|[ƒg’S“–ŽÒ‚Ü‚½‚̓pƒbƒP[ƒW‚̃xƒ“ƒ_‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B {{‘€ì [2], êŠ: [3], ƒRƒ}ƒ“ƒh: [4] }}
+
+‚±‚Ì Windows ƒCƒ“ƒXƒg[ƒ‰ ƒpƒbƒP[ƒW‚É‚Í–â‘肪‚ ‚è‚Ü‚·B‚±‚̃Cƒ“ƒXƒg[ƒ‹‚ðŠ®—¹‚·‚é‚Ì‚É•K—v‚È DLL ‚ðŽÀs‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒTƒ|[ƒg’S“–ŽÒ‚Ü‚½‚̓pƒbƒP[ƒW‚̃xƒ“ƒ_‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B {{‘€ì [2], ƒGƒ“ƒgƒŠ: [3], ƒ‰ƒCƒuƒ‰ƒŠ: [4] }}
+
+휂𳂵‚Š®—¹‚µ‚Ü‚µ‚½B
+
+휂Ɏ¸”s‚µ‚Ü‚µ‚½B
+
+ƒAƒhƒoƒ^ƒCƒY‚𳂵‚Š®—¹‚µ‚Ü‚µ‚½B
+
+ƒAƒhƒoƒ^ƒCƒY‚ÉŽ¸”s‚µ‚Ü‚µ‚½B
+
+\¬‚𳂵‚Š®—¹‚µ‚Ü‚µ‚½B
+
+\¬‚ÉŽ¸”s‚µ‚Ü‚µ‚½B
+
+‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð휂·‚é‚É‚Í Administrator ‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð휂·‚é‚É‚ÍAAdministrator ‚Æ‚µ‚ăƒOƒIƒ“‚·‚é‚©A‚Ü‚½‚̓eƒNƒjƒJƒ‹ ƒTƒ|[ƒg ƒOƒ‹[ƒv‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒpƒX [2] ‚ª³‚µ‚‚ ‚è‚Ü‚¹‚ñB³‚µ‚¢ƒpƒX‚ðŽw’肵‚Ä‚‚¾‚³‚¢B
+
+ƒƒ‚ƒŠ•s‘«‚Å‚·B‚Ù‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð•Â‚¶‚Ä‚©‚çAÄŽŽs‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒhƒ‰ƒCƒu [2] ‚ɂ̓fƒBƒXƒN‚ª‚ ‚è‚Ü‚¹‚ñBƒfƒBƒXƒN‚ð‘}“ü‚µ‚Ä‚©‚ç [\[]ÄŽŽs[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢BŠù‚É‘I‘ð‚³‚ê‚½ƒ{ƒŠƒ…[ƒ€‚É–ß‚éꇂÍA[\[]ƒLƒƒƒ“ƒZƒ‹[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒhƒ‰ƒCƒu [2] ‚ɂ̓fƒBƒXƒN‚ª‚ ‚è‚Ü‚¹‚ñBƒfƒBƒXƒN‚ð‘}“ü‚µ‚Ä‚©‚ç [\[]ÄŽŽs[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B[\[]ŒŸõ[\]] ƒ_ƒCƒAƒƒO ƒ{ƒbƒNƒX‚É–ß‚Á‚ÄA•Ê‚̃{ƒŠƒ…[ƒ€‚ð‘I‘ð‚·‚éꇂÍA[\[]ƒLƒƒƒ“ƒZƒ‹[\]] ‚ðƒNƒŠƒbƒN‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒHƒ‹ƒ_ [2] ‚Í‘¶Ý‚µ‚Ü‚¹‚ñBŠù‘¶‚̃tƒHƒ‹ƒ_‚ւ̃pƒX‚ð“ü—Í‚µ‚Ä‚‚¾‚³‚¢B
+
+‚±‚̃tƒHƒ‹ƒ_‚ð“Ç‚ÝŽæ‚邽‚ß‚Ì\•ª‚È“ÁŒ ‚ª‚ ‚è‚Ü‚¹‚ñB
+
+ƒCƒ“ƒXƒg[ƒ‹‚Ì‚½‚߂̳‚µ‚¢ƒRƒs[æ‚ðŠm’è‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B
+
+ƒ\[ƒX ƒCƒ“ƒXƒg[ƒ‹ ƒf[ƒ^ƒx[ƒX‚©‚ç“Ç‚ÝŽæ‚é‚Æ‚«‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [2]B
+
+Ä‹N“®‘€ì‚ðƒXƒPƒWƒ…[ƒ‹‚µ‚Ä‚¢‚Ü‚·: ƒtƒ@ƒCƒ‹ [2] ‚Ì–¼‘O‚ð [3] ‚É•ÏX‚µ‚Ä‚¢‚Ü‚·B‘€ì‚ðŠ®—¹‚·‚é‚É‚ÍAÄ‹N“®‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+
+Ä‹N“®‘€ì‚ðƒXƒPƒWƒ…[ƒ‹‚µ‚Ä‚¢‚Ü‚·: ƒtƒ@ƒCƒ‹ [2] ‚ÌíœB‘€ì‚ðŠ®—¹‚·‚é‚É‚ÍAÄ‹N“®‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+
+ƒ‚ƒWƒ…[ƒ‹ [2] ‚Å“o˜^‚ÉŽ¸”s‚µ‚Ü‚µ‚½BHRESULT [3]BƒTƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒ‚ƒWƒ…[ƒ‹ [2] ‚Å“o˜^‚̉ðœ‚ÉŽ¸”s‚µ‚Ü‚µ‚½BHRESULT [3]BƒTƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒpƒbƒP[ƒW [2] ‚̃LƒƒƒbƒVƒ…‚ÉŽ¸”s‚µ‚Ü‚µ‚½BƒGƒ‰[: [3]BƒTƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒtƒHƒ“ƒg [2] ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB‚±‚̃tƒHƒ“ƒg‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚éŒ —˜‚ª‚ ‚é‚©‚Ç‚¤‚©A‚Ü‚½ƒVƒXƒeƒ€‚ª‚±‚̃tƒHƒ“ƒg‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒHƒ“ƒg [2] ‚Ì“o˜^‚ð‰ðœ‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒtƒHƒ“ƒg‚ð휂·‚é‚Ì‚É\•ª‚ȃAƒNƒZƒX‹–‰Â‚ª‚ ‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒVƒ‡[ƒgƒJƒbƒg [2] ‚ð쬂ł«‚Ü‚¹‚ñB–Ú“I‚̃tƒHƒ‹ƒ_‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒVƒ‡[ƒgƒJƒbƒg [2] ‚ð휂ł«‚Ü‚¹‚ñBƒVƒ‡[ƒgƒJƒbƒg ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹ [2] ‚Ì‚½‚ß‚ÌŽí—ނ̃‰ƒCƒuƒ‰ƒŠ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒTƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹ [2] ‚Ì‚½‚ß‚ÌŽí—ނ̃‰ƒCƒuƒ‰ƒŠ‚Ì“o˜^‚ð‰ðœ‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒTƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+INI ƒtƒ@ƒCƒ‹ [2][3] ‚ðXV‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½Bƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+Ä‹N“®‚·‚é‚Æ‚«‚ÉAƒtƒ@ƒCƒ‹ [3] ‚ð [2] ‚Å’u‚«Š·‚¦‚é‚悤‚ɃXƒPƒWƒ…[ƒ‹‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñBƒtƒ@ƒCƒ‹ [3] ‚Ö‚Ì‘‚«ž‚݂̃AƒNƒZƒX‹–‰Â‚ðŽ‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ODBC ƒhƒ‰ƒCƒo ƒ}ƒl[ƒWƒƒ‚Ì휂ŃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½BODBC ƒGƒ‰[ [2]: [3]BƒTƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ODBC ƒhƒ‰ƒCƒo ƒ}ƒl[ƒWƒƒ‚̃Cƒ“ƒXƒg[ƒ‹‚ŃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½BODBC ƒGƒ‰[ [2]: [3]BƒTƒ|[ƒg’S“–ŽÒ‚É–â‚¢‡‚킹‚Ä‚‚¾‚³‚¢B
+
+ODBC ƒhƒ‰ƒCƒo [4] ‚Ì휂ŃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½BODBC ƒGƒ‰[ [2]: [3]BODBC ƒhƒ‰ƒCƒo‚ð휂·‚é“ÁŒ ‚ðŽ‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ODBC ƒhƒ‰ƒCƒo [4] ‚̃Cƒ“ƒXƒg[ƒ‹‚ŃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½BODBC ƒGƒ‰[ [2]: [3]Bƒtƒ@ƒCƒ‹ [4] ‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ODBC ƒf[ƒ^ ƒ\[ƒX‚Ì\¬‚ŃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½: [4]BODBC ƒGƒ‰[ [2]: [3]Bƒtƒ@ƒCƒ‹ [4] ‚ª‘¶Ý‚µAƒAƒNƒZƒX‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒT[ƒrƒX '[2]' ([3]) ‚ðŠJŽn‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒVƒXƒeƒ€ ƒT[ƒrƒX‚ðŠJŽn‚·‚é“ÁŒ ‚ðŽ‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒT[ƒrƒX '[2]' ([3]) ‚ð’âŽ~‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒVƒXƒeƒ€ ƒT[ƒrƒX‚ð’âŽ~‚·‚é“ÁŒ ‚ðŽ‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒT[ƒrƒX '[2]' ([3]) ‚ð휂ł«‚Ü‚¹‚ñ‚Å‚µ‚½BƒVƒXƒeƒ€ ƒT[ƒrƒX‚ð휂·‚é“ÁŒ ‚ðŽ‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒT[ƒrƒX '[2]' ([3]) ‚ðƒCƒ“ƒXƒg[ƒ‹‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒVƒXƒeƒ€ ƒT[ƒrƒX‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é“ÁŒ ‚ðŽ‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ŠÂ‹«•Ï” '[2]' ‚ðXV‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BŠÂ‹«•Ï”‚ðC³‚·‚é“ÁŒ ‚ðŽ‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+“ÁŒ ‚ª•s\•ª‚È‚½‚ßA‚±‚̃Rƒ“ƒsƒ…[ƒ^‚Ì‚·‚ׂẴ†[ƒU[‚ªŽg—p‚Å‚«‚é‚悤‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñBAdministrator ‚Æ‚µ‚ăƒOƒIƒ“‚µAÄ“xƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒtƒ@ƒCƒ‹ '[3]' ‚ɑ΂·‚éƒZƒLƒ…ƒŠƒeƒB‚ðÝ’è‚Å‚«‚Ü‚¹‚ñBƒGƒ‰[ : [2]B ‚±‚̃tƒ@ƒCƒ‹‚ɑ΂µ‚ăZƒLƒ…ƒŠƒeƒB‚ð•ÏX‚·‚éŒ ŒÀ‚ðŽ‚Á‚Ä‚¢‚é‚©‚Ç‚¤‚©Šm”F‚µ‚Ä‚‚¾‚³‚¢B
+
+ƒRƒ“ƒ|[ƒlƒ“ƒg ƒT[ƒrƒX (COM+ 1.0) ‚ÍA‚±‚̃Rƒ“ƒsƒ…[ƒ^‚ɳ‚µ‚ƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚Ü‚¹‚ñBƒCƒ“ƒXƒg[ƒ‹‚ðŠ®—¹‚·‚é‚É‚Í ƒRƒ“ƒ|[ƒlƒ“ƒg ƒT[ƒrƒX‚ª•K—v‚Å‚·BƒRƒ“ƒ|[ƒlƒ“ƒg ƒT[ƒrƒX‚ÍAWindows 2000 ‚Å—˜—p‚Å‚«‚Ü‚·B
+
+COM+ ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì“o˜^ƒGƒ‰[‚Å‚·BÚ‚µ‚‚̓Tƒ|[ƒg’S“–ŽÒ‚Ö‚¨–â‚¢‡‚킹‚‚¾‚³‚¢B
+
+COM+ ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì“o˜^‰ðœ‚̃Gƒ‰[‚Å‚·BÚ‚µ‚‚̓Tƒ|[ƒg’S“–ŽÒ‚Ö‚¨–â‚¢‡‚킹‚‚¾‚³‚¢B
+
+ƒT[ƒrƒX '[2]' ([3]) ‚Ì‹Lq‚Í•ÏX‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B
+
+Windows ƒCƒ“ƒXƒg[ƒ‰ ƒT[ƒrƒX‚ÍAƒVƒXƒeƒ€ ƒtƒ@ƒCƒ‹ [2] ‚ðƒAƒbƒvƒf[ƒg‚Å‚«‚Ü‚¹‚ñB‚±‚̃tƒ@ƒCƒ‹‚Í Windows ‚É‚æ‚Á‚ĕی삳‚ê‚Ä‚¢‚Ü‚·B‚±‚̃vƒƒOƒ‰ƒ€‚𳂵‚“®ì‚³‚¹‚é‚É‚ÍAƒIƒyƒŒ[ƒeƒBƒ“ƒO ƒVƒXƒeƒ€‚ðƒAƒbƒvƒf[ƒg‚·‚é•K—v‚ª‚ ‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B {{ƒpƒbƒP[ƒW ƒo[ƒWƒ‡ƒ“ : [3], OS ƒvƒƒeƒNƒeƒbƒh ƒo[ƒWƒ‡ƒ“ : [4]}}
+
+Windows ƒCƒ“ƒXƒg[ƒ‰ ƒT[ƒrƒX‚Å‚ÍA•ÛŒì‚³‚ꂽ Windows ƒtƒ@ƒCƒ‹ [2] ‚ðƒAƒbƒvƒf[ƒg‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB {{ƒpƒbƒP[ƒW ƒo[ƒWƒ‡ƒ“ : [3], OS ƒvƒƒeƒNƒeƒbƒh ƒo[ƒWƒ‡ƒ“ 1 : [4], SFP ƒGƒ‰[ : [5]}}"
+
+•ÛŒì‚³‚ꂽ Windows ƒtƒ@ƒCƒ‹‚ðXV‚Å‚«‚Ü‚¹‚ñB {{SFP ƒGƒ‰[: [2]. •ÛŒì‚³‚ꂽƒtƒ@ƒCƒ‹‚̈ꗗ:\r\n[3]}}
+
+‚±‚̃Rƒ“ƒsƒ…[ƒ^‚Å‚ÍAƒ†[ƒU[‚É‚æ‚éƒCƒ“ƒXƒg[ƒ‹‚̓|ƒŠƒV[‚Å–³Œø‚É‚È‚Á‚Ä‚¢‚Ü‚·B
+
+ƒAƒZƒ“ƒuƒŠ ƒRƒ“ƒ|[ƒlƒ“ƒg [2] ‚̃Cƒ“ƒXƒg[ƒ‹’†‚ɃGƒ‰[‚ª”¶‚µ‚Ü‚µ‚½B HRESULT: [3]. {{ƒAƒZƒ“ƒuƒŠ ƒCƒ“ƒ^[ƒtƒFƒCƒX: [4], ŠÖ”: [5], ƒAƒZƒ“ƒuƒŠ–¼: [6]}}
+
+
diff --git a/src/WINNT/install/wix/lang/ko_KR/ActionText.wxi b/src/WINNT/install/wix/lang/ko_KR/ActionText.wxi
new file mode 100644
index 0000000000..ac6ff0e416
--- /dev/null
+++ b/src/WINNT/install/wix/lang/ko_KR/ActionText.wxi
@@ -0,0 +1,143 @@
+
+
+óÀ½ »ç¿ë ½Ã ¼³Ä¡ÇÒ ÀÀ¿ë ÇÁ·Î±×·¥
+
+·¹Áö½ºÆ®¸® °ø°£ ÇÒ´ç Áß
+
+¼³Ä¡ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ È®ÀÎ Áß
+
+½ÇÇà ÆÄÀÏÀ» ¹ÙÀεùÇÏ´Â Áß
+
+Á¦Ç°À» È®ÀÎÇÏ´Â Áß
+
+ÇÊ¿äÇÑ °ø°£À» È®ÀÎÇÏ´Â Áß
+
+ÇÊ¿äÇÑ °ø°£À» È®ÀÎÇÏ´Â Áß
+
+Æú´õ ¸¸µå´Â Áß
+
+¹Ù·Î °¡±â ¸¸µå´Â Áß
+
+¼ºñ½º »èÁ¦ Áß
+
+Áߺ¹ ÆÄÀÏÀ» ¸¸µå´Â Áß
+
+ÇÊ¿äÇÑ °ø°£À» È®ÀÎÇÏ´Â Áß
+
+°ü·Ã ÀÀ¿ë ÇÁ·Î±×·¥À» °Ë»öÇÏ´Â Áß
+
+¼öÇàÇÒ ½ºÅ©¸³Æ® ÀÛ¾÷À» »ý¼ºÇÏ´Â Áß:
+
+³×Æ®¿öÅ© ¼³Ä¡ ÆÄÀÏÀ» º¹»çÇÏ´Â Áß
+
+»õ ÆÄÀÏÀ» º¹»çÇÏ´Â Áß
+
+ODBC ±¸¼º ¿ä¼Ò ¼³Ä¡ Áß
+
+»õ ¼ºñ½º ¼³Ä¡ Áß
+
+½Ã½ºÅÛ Ä«Å»·Î±× ¼³Ä¡ Áß
+
+¼³Ä¡¸¦ À¯È¿ÈÇÏ´Â Áß
+
+½ÇÇà Á¶°Ç È®ÀÎ Áß
+
+°ü·Ã ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ ±â´ÉÀ» À̵¿ÇÏ´Â Áß
+
+ÆÄÀÏÀ» ¿Å±â´Â Áß
+
+¾î¼Àºí¸® Á¤º¸¸¦ °Ô½ÃÇÏ´Â Áß
+
+¾î¼Àºí¸® Á¤º¸¸¦ °Ô½Ã Ãë¼ÒÇÏ´Â Áß
+
+ÆÄÀÏ ÆÐÄ¡ Áß
+
+±¸¼º ¿ä¼Ò µî·ÏÀ» ¾÷µ¥ÀÌÆ®ÇÏ´Â Áß
+
+ÇØ´ç ±¸¼º ¿ä¼Ò¸¦ °Ô½ÃÇÏ´Â Áß
+
+Á¦Ç° ±â´ÉÀ» °Ô½ÃÇÏ´Â Áß
+
+Á¦Ç° Á¤º¸¸¦ °Ô½ÃÇÏ´Â Áß
+
+Class ¼¹ö¸¦ µî·ÏÇÏ´Â Áß
+
+COM+ ÀÀ¿ë ÇÁ·Î±×·¥°ú ±¸¼º ¿ä¼Ò¸¦ µî·ÏÇÏ´Â Áß
+
+ÀͽºÅÙ¼Ç ¼¹ö¸¦ µî·ÏÇÏ´Â Áß
+
+±Û²ÃÀ» µî·ÏÇÏ´Â Áß
+
+MIME Á¤º¸¸¦ µî·ÏÇÏ´Â Áß
+
+Á¦Ç°À» µî·ÏÇÏ´Â Áß
+
+ÇÁ·Î±×·¥ È®ÀÎÀÚ¸¦ µî·ÏÇÏ´Â Áß
+
+Çü½Ä ¶óÀ̺귯¸®¸¦ µî·ÏÇÏ´Â Áß
+
+»ç¿ëÀÚ¸¦ µî·ÏÇÏ´Â Áß
+
+Áߺ¹ ÆÄÀÏÀ» Á¦°ÅÇÏ´Â Áß
+
+ȯ°æ ¹®ÀÚ¿À» ¾÷µ¥ÀÌÆ®ÇÏ´Â Áß
+
+ÀÀ¿ë ÇÁ·Î±×·¥À» Á¦°ÅÇÏ´Â Áß
+
+ÆÄÀÏÀ» Á¦°ÅÇÏ´Â Áß
+
+Æú´õ¸¦ Á¦°ÅÇÏ´Â Áß
+
+INI ÆÄÀÏ Ç׸ñÀ» Á¦°ÅÇÏ´Â Áß
+
+ODBC ±¸¼º ¿ä¼Ò Á¦°ÅÇÏ´Â Áß
+
+½Ã½ºÅÛ ·¹Áö½ºÆ®¸® °ªÀ» Á¦°ÅÇÏ´Â Áß
+
+¹Ù·Î °¡±â¸¦ Á¦°ÅÇÏ´Â Áß
+
+Á¦Ç°À» È®ÀÎÇÏ´Â Áß
+
+·Ñ¹éÀ» ¼öÇàÇÏ´Â Áß:
+
+¹é¾÷ ÆÄÀÏÀ» Á¦°ÅÇÏ´Â Áß
+
+¸ðµâÀ» µî·ÏÇÏ´Â Áß
+
+¸ðµâ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+ODBC µð·ºÅ͸®¸¦ ÃʱâÈÇÏ´Â Áß
+
+¼ºñ½º¸¦ ½ÃÀÛÇÏ´Â Áß
+
+¼ºñ½º¸¦ ÁßÁöÇÏ´Â Áß
+
+À̵¿ÇÑ ÆÄÀÏÀ» Á¦°ÅÇÏ´Â Áß
+
+ÇØ´ç ±¸¼º ¿ä¼ÒÀÇ °Ô½Ã¸¦ ÇØÁ¦ÇÏ´Â Áß
+
+Á¦Ç° ±â´ÉÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+Á¦Ç° Á¤º¸ÀÇ °Ô½Ã¸¦ ÇØÁ¦ÇÏ´Â Áß
+
+Class ¼¹öÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+COM+ ÀÀ¿ë ÇÁ·Î±×·¥°ú ±¸¼º ¿ä¼ÒÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+extension ¼¹öÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+±Û²Ã µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+MIME Á¤º¸ÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+ÇÁ·Î±×·¥ È®ÀÎÀÚÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+Çü½Ä ¶óÀ̺귯¸®ÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß
+
+ȯ°æ ¹®ÀÚ¿À» ¾÷µ¥ÀÌÆ®ÇÏ´Â Áß
+
+INI ÆÄÀÏ °ªÀ» ¾²´Â Áß
+
+½Ã½ºÅÛ ·¹Áö½ºÆ®¸® °ªÀ» ¾²´Â Áß
+
+
diff --git a/src/WINNT/install/wix/lang/ko_KR/Error.wxi b/src/WINNT/install/wix/lang/ko_KR/Error.wxi
new file mode 100644
index 0000000000..f30e6925e5
--- /dev/null
+++ b/src/WINNT/install/wix/lang/ko_KR/Error.wxi
@@ -0,0 +1,319 @@
+
+
+{{½É°¢ÇÑ ¿À·ù: }}
+
+{{¿À·ù [1]. }}
+
+°æ°í [1].
+
+
+
+Info [1].
+
+ÀÌ ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÏ´Â µ¿¾È ¿¹»óÄ¡ ¾ÊÀº ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. ÀÌ°ÍÀº ÀÌ ÆÐÅ°Áö¿¡ ¹®Á¦°¡ ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù. ¿À·ù ÄÚµå : [1]. {{Àμö : [2], [3], [4]}}
+
+
+
+{{µð½ºÅ© ²Ë Âü: }}
+
+¼öÇà [Time]: [1]. [2]
+
+[ProductName]
+
+{[2]}{, [3]}{, [4]}
+
+¸Þ½ÃÁö À¯Çü: [1], Àμö: [2]
+
+=== ±â·Ï ½ÃÀÛ: [Date] [Time] ===
+
+=== ±â·Ï ½ÃÀÛ: [Date] [Time] ===
+
+¼öÇà ½ÃÀÛ [Time]: [1].
+
+¼öÇà ³¡ [Time]: [1]. ¸®ÅÏ °ª [2].
+
+³²Àº ½Ã°£: {[1] ºÐ }{[2] ÃÊ}
+
+¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù. ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥À» Á¾·áÇÑ ÈÄ ´Ù½Ã ½ÃµµÇϽʽÿÀ.
+
+Windows Installer°¡ ´õ ÀÌ»ó ÀÀ´äÇÏÁö ¾Ê½À´Ï´Ù.
+
+Windows Installer°¡ ¿ÏÀüÈ÷ ÁßÁöµÇ¾ú½À´Ï´Ù.
+
+[ProductName]À»(¸¦) ±¸¼ºÇÏ°í ÀÖ½À´Ï´Ù. ±â´Ù¸®½Ê½Ã¿À.
+
+ÇÊ¿äÇÑ Á¤º¸¸¦ ¸ðÀ¸´Â Áß...
+
+ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÀÌÀü ¹öÀüÀ» Á¦°ÅÇÏ´Â Áß...
+
+ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÀÌÀü ¹öÀüÀ» Á¦°ÅÇϱâ À§ÇØ ÁغñÇÏ´Â Áß...
+
+{[ProductName] }¼³Ä¡°¡ ¼º°øÀûÀ¸·Î ¿Ï·áµÇ¾ú½À´Ï´Ù.
+
+{[ProductName] }¼³Ä¡¸¦ ½ÇÆÐÇß½À´Ï´Ù.
+
+ÆÄÀÏ Àб⠿À·ù: [2]. {{ ½Ã½ºÅÛ ¿À·ù [3].}} ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× ÆÄÀÏ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+'[2]' ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù. ÀÌ À̸§À» °¡Áø µð·ºÅ͸®°¡ ÀÌ¹Ì ÀÖ½À´Ï´Ù. ¼³Ä¡¸¦ Ãë¼ÒÇÏ°í ´Ù¸¥ À§Ä¡¿¡ ´Ù½Ã ¼³Ä¡ÇØ º¸½Ê½Ã¿À.
+
+´ÙÀ½ µð½ºÅ©¸¦ ³ÖÀ¸½Ê½Ã¿À: [2]
+
+ÀÌ µð·ºÅ͸®¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù:[2]. ¼³Ä¡¸¦ °è¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù. °ü¸®ÀÚ ±ÇÇÑÀ¸·Î ·Î±×¿ÂÇϰųª ½Ã½ºÅÛ °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+ÆÄÀÏ ¾²±â ¿À·ù: [2]. ±× µð·ºÅ͸®¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+[2] ÆÄÀÏÀ» Àдٰ¡ ¿À·ù°¡ »ý°å½À´Ï´Ù. {{ ½Ã½ºÅÛ ¿À·ù [3].}} ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× ÆÄÀÏ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+'[2]' ÆÄÀÏÀ» ´Üµ¶À¸·Î ¾×¼¼½ºÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ °®°í ÀÖ½À´Ï´Ù. ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥À» ¸ðµÎ ´ÝÀº ÈÄ "´Ù½Ã ½Ãµµ"¸¦ ´·¯ ´Ù½Ã ½ÃµµÇϽʽÿÀ.
+
+´ÙÀ½ ÆÄÀÏÀ» ¼³Ä¡ÇÒ ¼ö ÀÖ´Â µð½ºÅ© °ø°£ÀÌ ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù: [2]. µð½ºÅ© °ø°£À» ´Ã¸° ÈÄ "´Ù½Ã ½Ãµµ"¸¦ ´©¸£°Å³ª "Ãë¼Ò"¸¦ ´·¯¼ ³¡³»½Ê½Ã¿À.
+
+¿øº» ÆÄÀÏÀÌ ¾ø½À´Ï´Ù: [2]. ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× ÆÄÀÏ¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+ÆÄÀÏ Àб⠿À·ù: [3]. {{ ½Ã½ºÅÛ ¿À·ù [2].}} ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× ÆÄÀÏ¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+ÆÄÀÏ ¾²±â ¿À·ù: [3]. {{ ½Ã½ºÅÛ ¿À·ù [2].}} ±× µð·ºÅ͸®¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+¿øº» ÆÄÀÏÀÌ ¾ø½À´Ï´Ù{{(cabinet)}}: [2]. ±× ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× ÆÄÀÏ¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+'[2]' µð·ºÅ͸®¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù. ÀÌ À̸§À» °¡Áø ÆÄÀÏÀÌ ÀÌ¹Ì ÀÖ½À´Ï´Ù. ±× ÆÄÀÏ À̸§À» ´Ù¸¥ °ÍÀ¸·Î ¹Ù²Ù°Å³ª Á¦°ÅÇÑ ÈÄ "´Ù½Ã ½Ãµµ"¸¦ ´©¸£°Å³ª "Ãë¼Ò"¸¦ ´·¯ ³¡³»½Ê½Ã¿À.
+
+º¼·ý [2]À»(¸¦) ÇöÀç »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ´Ù¸¥ º¼·ýÀ» ¼±ÅÃÇϽʽÿÀ.
+
+ÁöÁ¤ÇÑ °æ·Î '[2]'À»(¸¦) »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
+
+ÁöÁ¤ÇÑ Æú´õ¿¡ ¾µ ¼ö ¾ø½À´Ï´Ù: [2].
+
+ÆÄÀÏÀ» ÀÐÀ» ¶§ ³×Æ®¿öÅ© ¿À·ù°¡ »ý°å½À´Ï´Ù: [2]
+
+µð·ºÅ͸®¸¦ ¸¸µé ¶§ ¿À·ù°¡ »ý°å½À´Ï´Ù: [2]
+
+µð·ºÅ͸®¸¦ ¸¸µé ¶§ ³×Æ®¿öÅ© ¿À·ù°¡ »ý°å½À´Ï´Ù: [2]
+
+¿øº» ÆÄÀÏ Ä³ºñ³ÝÀ» ¿ ¶§ ³×Æ®¿öÅ© ¿À·ù°¡ »ý°å½À´Ï´Ù: [2]
+
+ÁöÁ¤ÇÑ °æ·Î°¡ ³Ê¹« ±é´Ï´Ù: [2]
+
+ÀÌ ÆÄÀÏÀ» ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù: [2].
+
+Æú´õ °æ·Î '[2]'ÀÌ(°¡) À߸ø µÇ¾ú½À´Ï´Ù. °æ·Î·Î ÁöÁ¤ÇÑ ¹®ÀÚ°¡ ¾ø°Å³ª °æ·Î°¡ ³Ê¹« ±é´Ï´Ù.
+
+Æú´õ °æ·Î '[2]'¿¡ Æú´õ °æ·Î·Î »ç¿ëÇÒ ¼ö ¾ø´Â ±ÛÀÚ°¡ µé¾î ÀÖ½À´Ï´Ù.
+
+Æú´õ °æ·Î '[2]'¿¡ »ç¿ëÇÒ ¼ö ¾ø´Â ±ÛÀÚ°¡ µé¾î ÀÖ½À´Ï´Ù.
+
+'[2]'Àº(´Â) ÆÄÀÏ À̸§À¸·Î À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.
+
+ÆÄÀÏ º¸¾È ¿À·ù: [3] GetLastError: [2]
+
+»ç¿ëÇÒ ¼ö ¾ø´Â µå¶óÀ̺ê: [2]
+
+ÆÄÀÏ [2]¿¡ ÆÐÄ¡¸¦ Àû¿ëÇÏ´Â Áß¿¡ ¿À·ù°¡ »ý°å½À´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î ¾÷µ¥ÀÌÆ®µÇ¾ú±â ¶§¹®¿¡ ÀÌ ÆÐÄ¡¸¦ »ç¿ëÇؼ ¼öÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº ÆÐÄ¡¸¦ ±¸ÀÔÇÑ ´ë¸®Á¡¿¡ ¹®ÀÇÇϽʽÿÀ. {{½Ã½ºÅÛ ¿À·ù: [3]}}
+
+ijºñ³Ý ÆÄÀÏ [2]ÀÌ(°¡) µðÁöÅÐ ¼¸íµÇÁö ¾Ê¾Ò±â ¶§¹®¿¡, ÇÊ¿äÇÑ ÆÄÀÏÀ» ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ°ÍÀº ijºñ³Ý ÆÄÀÏÀÌ ¼Õ»óµÇ¾úÀ½À» ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.
+
+ijºñ³Ý ÆÄÀÏ [2]ÀÌ(°¡) ¿Ã¹Ù¸£Áö ¾ÊÀº µðÁöÅÐ ¼¸íÀ» °¡Áö°í Àֱ⠶§¹®¿¡, ÇÊ¿äÇÑ ÆÄÀÏÀ» ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ°ÍÀº ijºñ³Ý ÆÄÀÏÀÌ ¼Õ»óµÇ¾úÀ½À» ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.{{ WinVerifyTrust¿¡¼ ¿À·ù [3]À»(¸¦) ¹ÝȯÇß½À´Ï´Ù.}}
+
+[2] ÆÄÀÏÀ» ¿Ã¹Ù¸£°Ô º¹»çÇÏÁö ¸øÇß½À´Ï´Ù: CRC ¿À·ùÀÔ´Ï´Ù.
+
+[2] ÆÄÀÏÀ» ¿Ã¹Ù¸£°Ô À̵¿ÇÏÁö ¸øÇß½À´Ï´Ù: CRC ¿À·ùÀÔ´Ï´Ù.
+
+[2] ÆÄÀÏÀ» ¿Ã¹Ù¸£°Ô ÆÐÄ¡ÇÏÁö ¸øÇß½À´Ï´Ù: CRC ¿À·ùÀÔ´Ï´Ù.
+
+ÆÄÀÏÀ» ijºñ³Ý ÆÄÀÏ '[3]'¿¡¼ ãÀ» ¼ö ¾ø±â ¶§¹®¿¡, '[2]' ÆÄÀÏÀ» ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ°ÍÀº ³×Æ®¿öÅ© ¿À·ù, CD-ROMÀ¸·ÎºÎÅÍÀÇ Àб⠿À·ù, ¶Ç´Â ÀÌ ÆÐÅ°Áö¿¡ ¹®Á¦°¡ ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù.
+
+¼³Ä¡¿¡ ÇÊ¿äÇÑ Ä³ºñ³Ý ÆÄÀÏ '[2]'ÀÌ(°¡) ¼Õ»óµÇ¾î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ°ÍÀº ³×Æ®¿öÅ© ¿À·ù, CD-ROMÀ¸·ÎºÎÅÍÀÇ Àб⠿À·ù, ¶Ç´Â ÀÌ ÆÐÅ°Áö¿¡ ¹®Á¦°¡ ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù.
+
+¼³Ä¡¸¦ ¿Ï·áÇϴµ¥ ÇÊ¿äÇÑ Àӽà ÆÄÀÏÀ» ¸¸µå´Âµ¥ ¿À·ù°¡ ÀÖ¾ú½À´Ï´Ù.{{ Æú´õ: [3]. ½Ã½ºÅÛ ¿À·ù ÄÚµå: [2]}}
+
+Å°¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù: [2]. {{ ½Ã½ºÅÛ ¿À·ù [3].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+Å°¸¦ ¿ ¼ö ¾ø½À´Ï´Ù: [2]. {{ ½Ã½ºÅÛ ¿À·ù [3].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+Å° [3]¿¡¼ °ª [2]À»(¸¦) »èÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù. {{ ½Ã½ºÅÛ ¿À·ù [4].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+Å° [2]À»(¸¦) »èÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù. {{ ½Ã½ºÅÛ ¿À·ù [3].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+Å° [3]¿¡¼ °ª [2]À»(¸¦) ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. {{ ½Ã½ºÅÛ ¿À·ù [4].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+Å° [3]¿¡ °ª [2]À»(¸¦) ¾µ ¼ö ¾ø½À´Ï´Ù. {{ ½Ã½ºÅÛ ¿À·ù [4].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÃæºÐÇÑÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+Å° [2]ÀÇ °ª À̸§À» ±¸ÇÒ ¼ö ¾ø½À´Ï´Ù. {{ ½Ã½ºÅÛ ¿À·ù [3].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+Å° [2]ÀÇ ÇÏÀ§ Å° À̸§À» ±¸ÇÒ ¼ö ¾ø½À´Ï´Ù. {{ ½Ã½ºÅÛ ¿À·ù [3].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+Å° [2]ÀÇ º¸¾È Á¤º¸¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. {{ ½Ã½ºÅÛ ¿À·ù [3].}} ±× Å°¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϰųª, ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+»ç¿ë °¡´ÉÇÑ ·¹Áö½ºÆ®¸® °ø°£À» ´Ã¸± ¼ö ¾ø½À´Ï´Ù. ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥À» ¼³Ä¡Çϴµ¥ [2]KBÀÇ ·¹Áö½ºÆ®¸® °ø°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+
+´Ù¸¥ ¼³Ä¡ ÇÁ·Î±×·¥ÀÌ ½ÇÇà ÁßÀÔ´Ï´Ù. ±× ÇÁ·Î±×·¥ÀÇ ¼³Ä¡¸¦ ³¡³½ ÈÄ, ÀÌ ÀÛ¾÷À» °è¼ÓÇϽʽÿÀ.
+
+º¸¾È µ¥ÀÌÅÍ¿¡ ¾×¼¼½ºÇÏ´Â Áß¿¡ ¿À·ù°¡ »ý°å½À´Ï´Ù. Windows Installer¸¦ ¿Ã¹Ù¸£°Ô ±¸¼ºÇß´ÂÁö È®ÀÎÇÑ ÈÄ ´Ù½Ã ¼³Ä¡ÇϽʽÿÀ.
+
+»ç¿ëÀÚ '[2]'ÀÌ(°¡) Á¦Ç° '[3]'ÀÇ ¼³Ä¡¸¦ ÀÌÀü¿¡ ÃʱâÈÇÑ ÀûÀÌ ÀÖ½À´Ï´Ù. ±× »ç¿ëÀÚ°¡ ¼³Ä¡ ÇÁ·Î±×·¥À» ´Ù½Ã ½ÇÇàÇØ¾ß ±× Á¦Ç°À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Áö±Ý ½ÇÇàÇÏ´Â ¼³Ä¡ ÀÛ¾÷Àº °è¼ÓµË´Ï´Ù.
+
+»ç¿ëÀÚ '[2]'ÀÌ(°¡) Á¦Ç° '[3]'ÀÇ ¼³Ä¡¸¦ ÀÌÀü¿¡ ÃʱâÈÇÑ ÀûÀÌ ÀÖ½À´Ï´Ù. ±× »ç¿ëÀÚ°¡ ¼³Ä¡ ÇÁ·Î±×·¥À» ´Ù½Ã ½ÇÇàÇØ¾ß ±× Á¦Ç°À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
+
+µð½ºÅ© °ø°£ ºÎÁ· - º¼·ý: '[2]'; ÇÊ¿äÇÑ °ø°£: [3]KB; »ç¿ëÇÒ ¼ö ÀÖ´Â °ø°£: [4]KB. µð½ºÅ© °ø°£À» ´Ã¸° ÈÄ ´Ù½Ã ½ÃµµÇϽʽÿÀ.
+
+Ãë¼ÒÇϽðڽÀ´Ï±î?
+
+ÆÄÀÏ [2][3]À»(¸¦) ´ÙÀ½ ÇÁ·Î¼¼½º¿¡¼ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù{ À̸§: [4], Id: [5], â Á¦¸ñ: '[6]'}. ±× ÀÀ¿ë ÇÁ·Î±×·¥À» ´ÝÀº ÈÄ ´Ù½Ã ½ÃµµÇϽʽÿÀ.
+
+Á¦Ç° '[2]'ÀÌ(°¡) ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ¾î¼ ÀÌ Á¦Ç°À» ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ µÎ Á¦Ç°Àº ȣȯµÇÁö ¾Ê½À´Ï´Ù.
+
+º¹±¸¸¦ »ç¿ëÇÏ¿© ¼³Ä¡¸¦ °è¼ÓÇϱâ À§ÇÑ µð½ºÅ© °ø°£ÀÌ º¼·ý '[2]'¿¡ ºÎÁ·ÇÕ´Ï´Ù. [3]KB°¡ ÇÊ¿äÇϳª, [4]KB¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù. º¹±¸ Á¤º¸¸¦ ÀúÀåÇÏÁö ¾Ê°í °è¼ÓÇÏ·Á¸é "¹«½Ã"¸¦ ´©¸£°í, »ç¿ë °¡´É °ø°£À» È®ÀÎÇÏ·Á¸é "´Ù½Ã ½Ãµµ"¸¦ ´©¸£°í, ¼³Ä¡¸¦ Ãë¼ÒÇÏ·Á¸é "Ãë¼Ò"¸¦ ´©¸£½Ê½Ã¿À.
+
+³×Æ®¿öÅ© À§Ä¡ [2]¿¡ ¾×¼¼½ºÇÒ ¼ö ¾ø½À´Ï´Ù.
+
+´ÙÀ½ ÀÀ¿ë ÇÁ·Î±×·¥À» ´Ý¾Æ¾ß ¼³Ä¡¸¦ °è¼ÓÇÒ ¼ö ÀÖ½À´Ï´Ù:
+
+ÀÌ Á¦Ç°À» ¼³Ä¡ÇÏ·Á´Â ½Ã½ºÅÛ¿¡ ÇØ´ç Á¦Ç°À» ÀÌÀü¿¡ ¼³Ä¡ÇÑ ÀûÀÌ ¾ø½À´Ï´Ù.
+
+º¸¾È ¼³Á¤À» Àû¿ëÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. [2]Àº(´Â) ¿Ã¹Ù¸¥ »ç¿ëÀÚ³ª ±×·ìÀÌ ¾Æ´Õ´Ï´Ù. ÀÌ°ÍÀº ÆÐÅ°ÁöÀÇ ¹®Á¦À̰ųª, ³×Æ®¿öÅ©ÀÇ µµ¸ÞÀÎ ÄÁÆ®·Ñ·¯¿¡ ¿¬°áÇÏ´Â ¹®Á¦ÀÏ ¼ö ÀÖ½À´Ï´Ù. ³×Æ®¿öÅ© ¿¬°áÀ» È®ÀÎÇÏ°í "´Ù½Ã ½Ãµµ"¸¦ ´©¸£°Å³ª, ¼³Ä¡¸¦ ¸¶Ä¡·Á¸é "Ãë¼Ò"¸¦ ´©¸£½Ê½Ã¿À. {{»ç¿ëÀÚÀÇ SID¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù. ½Ã½ºÅÛ ¿À·ù [3]}}
+
+Å° [2]ÀÌ(°¡) À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. Á¤È®ÇÑ Å°¸¦ ÀÔ·ÂÇß´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+½Ã½ºÅÛÀ» ´Ù½Ã ½ÃÀÛÇÑ ÈÄ¿¡ [2]ÀÇ ±¸¼ºÀ» ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. Áö±Ý ´Ù½Ã ½ÃÀÛÇÏ·Á¸é "¿¹"¸¦ ´©¸£°í, ³ªÁß¿¡ ¼öµ¿À¸·Î ´Ù½Ã ½ÃÀÛÇÏ·Á¸é "¾Æ´Ï¿À"¸¦ ´©¸£½Ê½Ã¿À.
+
+º¯°æµÈ ±¸¼º ¼³Á¤À» [2]¿¡ Àû¿ëÇÏ·Á¸é ½Ã½ºÅÛÀ» ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù. Áö±Ý ´Ù½Ã ½ÃÀÛÇÏ·Á¸é "¿¹"¸¦ ´©¸£°í, ³ªÁß¿¡ ¼öµ¿À¸·Î ´Ù½Ã ½ÃÀÛÇÏ·Á¸é "¾Æ´Ï¿À"¸¦ ´©¸£½Ê½Ã¿À.
+
+[2]ÀÇ ¼³Ä¡°¡ ÇöÀç ÁßÁöµÈ »óÅÂÀÔ´Ï´Ù. °è¼ÓÇÏ·Á¸é ¼³Ä¡ÇÏ¸é¼ º¯°æµÈ »çÇ×À» Ãë¼ÒÇØ¾ß ÇÕ´Ï´Ù. º¯°æµÈ »çÇ×µéÀ» Ãë¼ÒÇϽðڽÀ´Ï±î?
+
+ÀÌ Á¦Ç°ÀÇ ¼³Ä¡ ÀÛ¾÷ÀÌ ½ÇÇà ÁßÀÔ´Ï´Ù. °è¼ÓÇÏ·Á¸é Àü¿¡ ¼³Ä¡ÇÏ¸é¼ º¯°æµÈ »çÇ×À» ´Ù½Ã µÇµ¹·Á¾ß ÇÕ´Ï´Ù. º¯°æµÈ »çÇ×À» Ãë¼ÒÇϽðڽÀ´Ï±î?
+
+Á¦Ç° [2]ÀÇ ¼³Ä¡ ÆÐÅ°Áö¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù. ¼³Ä¡ ÆÐÅ°Áö '[3]'ÀÇ »çº»À» »ç¿ëÇؼ ¼³Ä¡¸¦ ´Ù½Ã ½ÃµµÇϽʽÿÀ.
+
+¼³Ä¡¸¦ ¼º°øÀûÀ¸·Î ¿Ï·áÇß½À´Ï´Ù.
+
+¼³Ä¡¸¦ ½ÇÆÐÇß½À´Ï´Ù.
+
+Á¦Ç°: [2] - [3]
+
+ÄÄÇ»Å͸¦ ÀÌÀü »óÅ·ΠµÇµ¹¸®°Å³ª, ³ªÁß¿¡ ´Ù½Ã ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù. ÀÌÀü »óÅ·ΠµÇµ¹¸®½Ã°Ú½À´Ï±î?
+
+µð½ºÅ©¿¡ ¼³Ä¡ Á¤º¸¸¦ ¾²´Âµ¥ ¿À·ù°¡ »ý°å½À´Ï´Ù. µð½ºÅ© °ø°£ÀÌ ÃæºÐÇÑÁö È®ÀÎÇÏ°í "´Ù½Ã ½Ãµµ"¸¦ ´©¸£°Å³ª, ¼³Ä¡¸¦ ³¡³»·Á¸é "Ãë¼Ò"¸¦ ´©¸£½Ê½Ã¿À.
+
+»ç¿ëÀÚÀÇ ÄÄÇ»Å͸¦ ÀÌÀü »óÅ·ΠµÇµ¹¸®´Âµ¥ ÇÊ¿äÇÑ ÆÄÀÏ Áß ÀϺθ¦ ãÀ» ¼ö ¾ø½À´Ï´Ù. º¹±¸ÇÒ ¼ö ¾ø½À´Ï´Ù.
+
+[2](ÀÌ)°¡ ÇÊ¿äÇÑ Á¦Ç° Áß Çϳª¸¦ ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ. {{½Ã½ºÅÛ ¿À·ù: [3].}}
+
+ÀÌÀü ¹öÀüÀÇ [2]À»(¸¦) Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ. {{½Ã½ºÅÛ ¿À·ù [3].}}
+
+¼³Ä¡µÊ [2]
+
+±¸¼ºµÊ [2]
+
+Á¦°ÅµÊ [2]
+
+µðÁöÅÐ ¼¸í Á¤Ã¥ÀÌ [2] ÆÄÀÏÀ» °ÅºÎÇß½À´Ï´Ù.
+
+Windows Installer ¼ºñ½º¸¦ ¾×¼¼½ºÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ°ÍÀº Windows¸¦ ¾ÈÀü ¸ðµå¿¡¼ ½ÇÇà ÁßÀ̰ųª, Windows Installer°¡ ¿Ã¹Ù¸£°Ô ¼³Ä¡µÇÁö ¾Ê¾ÒÀ½À» ³ªÅ¸³À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô Áö¿øÀ» ¿äûÇϽʽÿÀ.
+
+ÀÌ Windows Installer ÆÐÅ°Áö¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. ÀÌ ¼³Ä¡¸¦ ¿Ï·áÇϱâ À§ÇØ ÇÊ¿äÇÑ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ³ª ÆÐÅ°Áö °ø±Þ¾÷ü¿¡ ¹®ÀÇÇϽʽÿÀ. {{»ç¿ëÀÚ ÁöÁ¤ ÀÛ¾÷ [2] ½ºÅ©¸³Æ® ¿À·ù [3], [4]: [5] ÁÙ:[6], ¿:[7], [8] }}
+
+ÀÌ Windows Installer ÆÐÅ°Áö¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. ÀÌ ¼³Ä¡¸¦ ¿Ï·áÇϱâ À§ÇØ ÇÊ¿äÇÑ ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ³ª ÆÐÅ°Áö °ø±Þ¾÷ü¿¡ ¹®ÀÇÇϽʽÿÀ. {{ÀÛ¾÷: [2], À§Ä¡: [3], ¸í·É: [4] }}
+
+ÀÌ Windows Installer ÆÐÅ°Áö¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. ¼³Ä¡ ÇÁ·Î±×·¥ÀÇ ÀϺηΠ½ÇÇàµÇ´Â ÇÁ·Î±×·¥ÀÌ ¿¹»ó´ë·Î ¿Ï·áµÇÁö ¾Ê¾Ò½À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ³ª ÆÐÅ°Áö °ø±Þ¾÷ü¿¡ ¹®ÀÇÇϽʽÿÀ. {{ÀÛ¾÷ [2], À§Ä¡: [3], ¸í·É: [4] }}
+
+ÀÌ Windows Installer ÆÐÅ°Áö¿¡ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. ÀÌ ¼³Ä¡¸¦ ¿Ï·áÇϱâ À§ÇØ ÇÊ¿äÇÑ DLLÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ³ª ÆÐÅ°Áö °ø±Þ¾÷ü¿¡ ¹®ÀÇÇϽʽÿÀ. {{ÀÛ¾÷ [2], Ç׸ñ: [3], ¶óÀ̺귯¸®: [4] }}
+
+Á¦°Å¸¦ ¼º°øÀûÀ¸·Î ¿Ï·áÇß½À´Ï´Ù.
+
+Á¦°ÅÇÏÁö ¸øÇß½À´Ï´Ù.
+
+º¸±ÞÀ» ¼º°øÀûÀ¸·Î ¿Ï·áÇß½À´Ï´Ù.
+
+º¸±ÞÇÏÁö ¸øÇß½À´Ï´Ù.
+
+±¸¼ºÀ» ¼º°øÀûÀ¸·Î ¿Ï·áÇß½À´Ï´Ù.
+
+±¸¼ºÇÏÁö ¸øÇß½À´Ï´Ù.
+
+Administrator¸¸ÀÌ ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥À» Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥À» Á¦°ÅÇÏ·Á¸é, Administrator·Î ·Î±×¿ÂÇϰųª, ±â¼ú Áö¿ø ±×·ì¿¡ µµ¿òÀ» ¿äûÇϽʽÿÀ.
+
+°æ·Î [2]ÀÌ(°¡) À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. Á¤È®ÇÑ °æ·Î¸¦ ÁöÁ¤ÇϽʽÿÀ.
+
+¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù. ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥À» Á¾·áÇÑ ÈÄ ´Ù½Ã ½ÃµµÇϽʽÿÀ.
+
+µå¶óÀ̺ê [2]¿¡ µð½ºÅ©°¡ ¾ø½À´Ï´Ù. µð½ºÅ©¸¦ ³ÖÀº ÈÄ "´Ù½Ã ½Ãµµ"¸¦ ´©¸£°Å³ª, "Ãë¼Ò"¸¦ ´·¯¼ ÀÌÀü¿¡ ¼±ÅÃÇÑ º¼·ýÀ¸·Î ´Ù½Ã µ¹¾Æ°¡½Ê½Ã¿À.
+
+µå¶óÀ̺ê [2]¿¡ µð½ºÅ©°¡ ¾ø½À´Ï´Ù. µð½ºÅ©¸¦ ³ÖÀº ÈÄ "´Ù½Ã ½Ãµµ"¸¦ ´©¸£°Å³ª, "Ãë¼Ò"¸¦ ´·¯¼ "ã¾Æº¸±â" ´ëÈ »óÀÚ·Î À̵¿ÇÑ ÈÄ ´Ù¸¥ º¼·ýÀ» ¼±ÅÃÇϽʽÿÀ.
+
+Æú´õ [2]ÀÌ(°¡) Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ±âÁ¸¿¡ ÀÖ´ø Æú´õÀÇ °æ·Î¸¦ ÀÔ·ÂÇϽʽÿÀ.
+
+ÀÌ Æú´õ¿¡ ´ëÇÑ Àб⠱ÇÇÑÀÌ ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù.
+
+¼³Ä¡ÇÒ ´ë»ó Æú´õ¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
+
+´ÙÀ½ ¿øº» ¼³Ä¡ µ¥ÀÌÅͺ£À̽º¸¦ Àд Áß¿¡ ¿À·ù°¡ »ý°å½À´Ï´Ù: [2].
+
+´Ù½Ã ºÎÆà ÀÛ¾÷À» ¼³Á¤ÇÏ°í ÀÖ½À´Ï´Ù: ÆÄÀÏ [2]ÀÇ À̸§À» [3](À¸)·Î ¹Ù²Ù°í ÀÖ½À´Ï´Ù. ÀÛ¾÷À» ¿Ï·áÇÏ·Á¸é ´Ù½Ã ºÎÆÃÇØ¾ß ÇÕ´Ï´Ù.
+
+´Ù½Ã ºÎÆà ÀÛ¾÷À» ¼³Á¤ÇÏ°í ÀÖ½À´Ï´Ù: ÆÄÀÏ [2]À»(¸¦) »èÁ¦ÇÏ°í ÀÖ½À´Ï´Ù. ÀÛ¾÷À» ¿Ï·áÇÏ·Á¸é ´Ù½Ã ºÎÆÃÇØ¾ß ÇÕ´Ï´Ù.
+
+¸ðµâ [2]À»(¸¦) µî·ÏÇϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. HRESULT [3]. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+¸ðµâ [2]ÀÇ µî·ÏÀ» ÇØÁ¦Çϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. HRESULT [3]. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+ÆÐÅ°Áö [2]À»(¸¦) ij½ÃÇϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. ¿À·ù: [3]. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+[2] ±Û²ÃÀ» µî·ÏÇÏÁö ¸øÇß½À´Ï´Ù. ±Û²ÃÀ» ¼³Ä¡ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÃæºÐÇÑÁö, ±×¸®°í ÀÌ ±Û²ÃÀ» ½Ã½ºÅÛ¿¡¼ Áö¿øÇÏ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+[2] ±Û²ÃÀÇ µî·ÏÀ» ÇØÁ¦ÇÏÁö ¸øÇß½À´Ï´Ù. ±Û²ÃÀ» Á¦°ÅÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÃæºÐÈ÷ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+¹Ù·Î °¡±â [2]À»(¸¦) ¸¸µéÁö ¸øÇß½À´Ï´Ù. ´ë»ó Æú´õ°¡ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× Æú´õ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+¹Ù·Î °¡±â [2]À»(¸¦) Á¦°ÅÇÏÁö ¸øÇß½À´Ï´Ù. ¹Ù·Î °¡±â ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× ÆÄÀÏÀ» ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+ÆÄÀÏ [2]ÀÇ Çü½Ä ¶óÀ̺귯¸®¸¦ µî·ÏÇÏÁö ¸øÇß½À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+ÆÄÀÏ [2]ÀÇ Çü½Ä ¶óÀ̺귯¸®¸¦ µî·ÏÇÏÁö ¸øÇß½À´Ï´Ù. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+ini ÆÄÀÏ [2][3]À»(¸¦) ¾÷µ¥ÀÌÆ®ÇÏÁö ¸øÇß½À´Ï´Ù. ±× ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ÆÄÀÏ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+´Ù½Ã ºÎÆÃÇÒ ¶§ ÆÄÀÏ [2]À»(¸¦) [3](À¸)·Î ¹Ù²Ùµµ·Ï ¼³Á¤ÇÏÁö ¸øÇß½À´Ï´Ù. ÆÄÀÏ [3]¿¡ ¾²±â ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+ODBC µå¶óÀ̹ö °ü¸®ÀÚ¸¦ Á¦°ÅÇϴµ¥ ¿À·ù°¡ »ý°å½À´Ï´Ù. ODBC ¿À·ù [2]: [3]. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+ODBC µå¶óÀ̹ö °ü¸®ÀÚ¸¦ ¼³Ä¡ÇÏ´Â Áß¿¡ ¿À·ù°¡ »ý°å½À´Ï´Ù. ODBC ¿À·ù [2]: [3]. ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÜ.
+
+ODBC µå¶óÀ̹ö Á¦°ÅÇϴµ¥ ¿À·ù°¡ »ý°å½À´Ï´Ù:[4]. ODBC ¿À·ù [2]: [3]. ODBC µå¶óÀ̹ö¸¦ Á¦°ÅÇÒ ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+ODBC µå¶óÀ̹ö¸¦ ¼³Ä¡ÇÏ´Â Áß¿¡ ¿À·ù°¡ »ý°å½À´Ï´Ù: [4]. ODBC ¿À·ù [2]: [3]. [4] ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× ÆÄÀÏÀ» ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+ODBC µ¥ÀÌÅÍ ¿øº»À» ±¸¼ºÇÏ´Â Áß¿¡ ¿À·ù°¡ »ý°å½À´Ï´Ù: [4]. ODBC ¿À·ù [2]: [3]. [4] ÆÄÀÏÀÌ ½ÇÁ¦·Î ÀÖ´ÂÁö, ±×¸®°í ±× ÆÄÀÏ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+¼ºñ½º '[2]'([3])À»(¸¦) ½ÃÀÛÇϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. ½Ã½ºÅÛ ¼ºñ½º¸¦ ½ÃÀÛÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+¼ºñ½º '[2]'([3])À»(¸¦) ÁßÁöÇÏÁö ¸øÇß½À´Ï´Ù. ½Ã½ºÅÛ ¼ºñ½º¸¦ Áß´ÜÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+¼ºñ½º '[2]'([3])À»(¸¦) »èÁ¦ÇÏÁö ¸øÇß½À´Ï´Ù. ½Ã½ºÅÛ ¼ºñ½º¸¦ »èÁ¦ÇÒ ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+¼ºñ½º '[2]'([3])À»(¸¦) ¼³Ä¡ÇÏÁö ¸øÇß½À´Ï´Ù. ½Ã½ºÅÛ ¼ºñ½º¸¦ ¼³Ä¡ÇÒ ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+ȯ°æ º¯¼ö '[2]'À»(¸¦) ¾÷µ¥ÀÌÆ®ÇÏÁö ¸øÇß½À´Ï´Ù. ȯ°æ º¯¼ö¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+¸ðµç »ç¿ëÀÚ°¡ ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛ¿¡ ¼³Ä¡ ÀÛ¾÷À» ½ÇÇàÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ¾ø½À´Ï´Ù. °ü¸®ÀÚ ±ÇÇÑÀ¸·Î ·Î±×¿ÂÇؼ ¼³Ä¡¸¦ ´Ù½Ã ½ÇÇàÇϽʽÿÀ.
+
+'[3]' ÆÄÀÏ¿¡ ´ëÇÑ ÆÄÀÏ º¸¾ÈÀ» ¼³Á¤ÇÏÁö ¸øÇß½À´Ï´Ù. ¿À·ù: [2]. ÀÌ ÆÄÀÏ¿¡ ´ëÇÑ º¸¾ÈÀ» ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
+
+±¸¼º ¿ä¼Ò ¼ºñ½º(COM+ 1.0)°¡ ÀÌ ÄÄÇ»ÅÍ¿¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. Component Service°¡ ÀÖ¾î¾ß ¼³Ä¡¸¦ ³¡³¾ ¼ö ÀÖ½À´Ï´Ù. Component Service´Â Windows 2000¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
+
+COM+ ÀÀ¿ë ÇÁ·Î±×·¥À» µî·ÏÇÏ´Â Áß¿¡ ¿À·ù°¡ »ý°å½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+COM+ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß¿¡ ¿À·ù°¡ »ý°å½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â ±â¼ú Áö¿ø ´ã´çÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.
+
+¼ºñ½º '[2]'([3])ÀÇ ¼³¸íÀ» ¹Ù²ÙÁö ¸øÇß½À´Ï´Ù.
+
+½Ã½ºÅÛ ÆÄÀÏ [2]À»(¸¦) Windows¿¡¼ º¸È£ÇÏ°í ÀÖ¾î¼ ¾÷µ¥ÀÌÆ®ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ÆÄÀÏÀ» Á¦´ë·Î ½ÇÇàÇÏ·Á¸é ÀÌ ÇÁ·Î±×·¥ÀÇ ¿î¿µ üÁ¦¸¦ ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÕ´Ï´Ù. {{ÆÐÅ°Áö ¹öÀü: [3], OS º¸È£ ¹öÀü: [4]}}
+
+Windows Installer ¼ºñ½º°¡ º¸È£µÈ Windows ÆÄÀÏ [2]À»(¸¦) ¾÷µ¥ÀÌÆ®ÇÏÁö ¸øÇß½À´Ï´Ù. {{ÆÐÅ°Áö ¹öÀü: [3], OS º¸È£ ¹öÀü: [4], SFP ¿À·ù: [5]}}
+
+Windows Installer ¼ºñ½º°¡ Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ º¸È£µÈ Windows ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®ÇÒ ¼ö ¾ø½À´Ï´Ù. {{SFP ¿À·ù: [2]. º¸È£µÈ ÆÄÀÏ ¸ñ·Ï:\r\n[3]}}
+
+ÀÌ ÄÄÇ»ÅÍÀÇ Á¤Ã¥ÀÌ »ç¿ëÀÚ ¼³Ä¡¸¦ ÇÒ ¼ö ¾ø°Ô µÇ¾î ÀÖ½À´Ï´Ù.
+
+¾î¼Àºí¸® ±¸¼º ¿ä¼Ò [2]À»(¸¦) ¼³Ä¡ÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. HRESULT: [3]. {{¾î¼Àºí¸® ÀÎÅÍÆäÀ̽º: [4], ÇÔ¼ö: [5], ¾î¼Àºí¸® À̸§: [6]}}
+
+
diff --git a/src/WINNT/install/wix/lang/pt_BR/ActionText.wxi b/src/WINNT/install/wix/lang/pt_BR/ActionText.wxi
new file mode 100644
index 0000000000..9463da515c
--- /dev/null
+++ b/src/WINNT/install/wix/lang/pt_BR/ActionText.wxi
@@ -0,0 +1,143 @@
+
+
+Aplicativo de anúncio
+
+Alocando espaço no Registro
+
+Procurando aplicativos instalados
+
+Vinculando executáveis
+
+Procurando produtos qualificados
+
+Calculando requisitos de espaço
+
+Calculando requisitos de espaço
+
+Criando pastas
+
+Criando atalhos
+
+Excluindo serviços
+
+Criando arquivos duplicados
+
+Calculando requisitos de espaço
+
+Procurando por aplicativos relacionados
+
+Gerando operações de script para ação:
+
+Copiando arquivos de instalação em rede
+
+Copiando novos arquivos
+
+Instalando componentes de ODBC
+
+Instalando novos serviços
+
+Instalando catálogo do sistema
+
+Validando instalação
+
+Avaliando condições de inicialização
+
+Migrando estados do recurso de aplicativos relacionados
+
+Movendo arquivos
+
+Publicando informações de montagem
+
+Cancelando publicação de informações de montagem
+
+Corrigindo arquivos
+
+Atualizando registro do componente
+
+Publicando componentes qualificados
+
+Publicando recursos do produto
+
+Publicando informações sobre o produto
+
+Registrando servidores de classes
+
+Registrando componentes e aplicativos do COM+
+
+Registrando servidores de extensão
+
+Registrando fontes
+
+Registrando informações sobre MIME
+
+Registrando produto
+
+Registrando identificadores de programas
+
+Registrando bibliotecas de tipos
+
+Registrando usuário
+
+Removendo arquivos duplicados
+
+Atualizando seqüências de ambiente
+
+Removendo aplicativos
+
+Removendo arquivos
+
+Removendo pastas
+
+Removendo entradas dos arquivos INI
+
+Removendo componentes de ODBC
+
+Removendo valores do Registro do sistema
+
+Removendo atalhos
+
+Procurando produtos qualificados
+
+Repetindo a ação:
+
+Removendo arquivos de backup
+
+Registrando módulos
+
+Removendo registro de módulos
+
+Inicializando diretórios de ODBC
+
+Iniciando serviços
+
+Interrompendo serviços
+
+Removendo arquivos movidos
+
+Cancelando publicação de componentes qualificados
+
+Cancelando publicação de recursos do produto
+
+Cancelando publicação de informações sobre o produto
+
+Remover o registro de servidores de classes
+
+Removendo registro de componentes e aplicativos do COM+
+
+Removendo o registro de servidores de extensão
+
+Removendo o registro de fontes
+
+Removendo registro de informações sobre MIME
+
+Removendo registro de identificadores de programas
+
+Removendo registro de bibliotecas de tipos
+
+Atualizando seqüências de ambiente
+
+Gravando valores de arquivos INI
+
+Gravando valores de Registro do sistema
+
+
diff --git a/src/WINNT/install/wix/lang/pt_BR/Error.wxi b/src/WINNT/install/wix/lang/pt_BR/Error.wxi
new file mode 100644
index 0000000000..1fd868e8c4
--- /dev/null
+++ b/src/WINNT/install/wix/lang/pt_BR/Error.wxi
@@ -0,0 +1,319 @@
+
+
+{{Erro fatal: }}
+
+{{Erro [1]. }}
+
+Aviso [1].
+
+
+
+Informações [1].
+
+O Installer encontrou um erro inesperado ao instalar este pacote. Pode haver um problema com o pacote. O código de erro é [1]. {{Os argumentos são: [2], [3], [4]}}
+
+
+
+{{Disco cheio: }}
+
+Ação [Time]: [1]. [2]
+
+[ProductName]
+
+{[2]}{, [3]}{, [4]}
+
+Tipo de mensagem: [1], Argumento: [2]
+
+=== Log iniciado: [Date] [Time] ===
+
+=== Log parado: [Date] [Time] ===
+
+Ação iniciada [Time]: [1].
+
+Ação concluída [Time]: [1]. Valor de retorno [2].
+
+Tempo restante: {[1] minutos }{[2] segundos}
+
+Sem memória. Encerre outros aplicativos antes de tentar novamente.
+
+O Installer não está respondendo.
+
+Installer interrompido prematuramente.
+
+Aguarde enquanto o Windows configura o [ProductName]
+
+Reunindo as informações necessárias...
+
+Removendo versões anteriores deste aplicativo...
+
+Preparando para remover versões anteriores deste aplicativo...
+
+A instalação do {[ProductName] }foi concluída com êxito.
+
+A instalação do {[ProductName] }falhou.
+
+Erro ao ler do arquivo: [2]. {{ Erro do sistema [3].}} Verifique se o arquivo existe e se você pode acessá-lo.
+
+Não é possível criar o arquivo '[2]'. Já existe um diretório com este nome. Cancele a instalação e tente instalar em um local diferente.
+
+Insira o disco: [2]
+
+O Installer tem privilégios insuficientes para acessar este diretório: [2]. A instalação não pode continuar. Efetue logon como administrador ou entre em contato com o administrador do sistema.
+
+Erro ao gravar no arquivo: [2]. Verifique se você tem acesso a este diretório.
+
+Erro ao ler do arquivo: [2]. {{ Erro do sistema [3].}} Verifique se o arquivo existe e se você pode acessá-lo.
+
+Outro aplicativo tem acesso exclusivo ao arquivo '[2]'. Encerre todos os outros aplicativos e clique em 'Repetir'.
+
+Não há espaço em disco suficiente para instalar este arquivo: [2]. Libere espaço em disco e clique em 'Repetir', ou clique em 'Cancelar' para sair.
+
+Arquivo de origem não encontrado: [2]. Verifique se o arquivo existe e se você pode acessá-lo.
+
+Erro ao ler do arquivo: [3]. {{ Erro do sistema [2].}} Verifique se o arquivo existe e se você pode acessá-lo.
+
+Erro ao gravar no arquivo: [3]. {{ Erro do sistema [2].}} Verifique se você tem acesso a este diretório.
+
+Arquivo de origem não encontrado{{(gabinete)}}: [2]. Verifique se o arquivo existe e se você pode acessá-lo.
+
+Não é possível criar o diretório '[2]'. Já existe um arquivo com este nome. Renomeie ou remova o arquivo e clique em 'Repetir', ou clique em 'Cancelar' para sair.
+
+O volume [2] não está disponível no momento. Selecione outro volume.
+
+O caminho especificado '[2]' não está disponível.
+
+Não é possível gravar na pasta especificada: [2].
+
+Ocorreu um erro na rede ao tentar ler do arquivo: [2]
+
+Ocorreu um erro ao tentar criar o diretório: [2]
+
+Ocorreu um erro na rede ao tentar criar o diretório: [2]
+
+Ocorreu um erro na rede ao tentar abrir o gabinete do arquivo de origem: [2]
+
+O caminho especificado é muito longo: [2]
+
+O Installer tem privilégios insuficientes para modificar este arquivo: [2].
+
+Uma parte do caminho da pasta '[2]' é inválida. Talvez ela esteja vazia ou exceda o comprimento permitido pelo sistema.
+
+O caminho da pasta '[2]' contém palavras que não são válidas em caminhos de pastas.
+
+O caminho da pasta '[2]' contém um caractere inválido.
+
+'[2]' não é um nome de arquivo curto válido.
+
+Erro ao obter segurança do arquivo: [3] GetLastError: [2]
+
+Unidade inválida: [2]
+
+Erro ao aplicar patch no arquivo [2]. Provavelmente, ele foi atualizado por outros meios e não pode mais ser modificado por esse patch. Para obter mais informações, entre em contato com o fornecedor do patch. {{Erro do sistema: [3]}}
+
+Um arquivo necessário não pode ser instalado porque o arquivo de gabinete [2] não foi assinado digitalmente. Isso pode indicar que o arquivo de gabinete está corrompido.
+
+Um arquivo necessário não pode ser instalado porque o arquivo de gabinete [2] possui uma assinatura digital inválida. Isso pode indicar que o arquivo de gabinete está corrompido.{{ Erro [3] foi retornado pelo WinVerifyTrust.}}
+
+Falha ao copiar corretamente o arquivo [2]: erro de CRC.
+
+Falha ao mover corretamente o arquivo [2]: erro de CRC.
+
+Falha ao corrigir corretamente o arquivo [2]: erro de CRC.
+
+O arquivo '[2]' não pode ser instalado porque o arquivo não foi encontrado no arquivo de gabinete '[3]'. Isso pode indicar um erro de rede, um erro ao ler do CD-ROM ou um problema com este pacote.
+
+O arquivo de gabinete '[2]' necessário para esta instalação está corrompido e não pode ser usado. Isso pode indicar um erro de rede, um erro ao ler do CD-ROM ou um problema com este pacote.
+
+Erro ao criar um arquivo temporário necessário para concluir esta instalação.{{ Pasta: [3]. Código de erro do sistema: [2]}}
+
+Não foi possível criar a chave: [2]. {{ Erro do sistema [3].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível abrir a chave: [2]. {{ Erro do sistema [3].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível excluir o valor [2] da chave [3]. {{ Erro do sistema [4].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível excluir a chave [2]. {{ Erro do sistema [3].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível ler o valor [2] da chave [3]. {{ Erro do sistema [4].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível gravar o valor [2] na chave [3]. {{ Erro do sistema [4].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível obter nomes de valores para a chave [2]. {{ Erro do sistema [3].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível obter nomes de sub-chaves para a chave [2]. {{ Erro do sistema [3].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível ler informações de segurança para a chave [2]. {{ Erro do sistema [3].}} Verifique se você tem acesso suficiente a essa chave ou entre em contato com a equipe de suporte.
+
+Não foi possível aumentar o espaço disponível do Registro. São necessários [2] KB de espaço livre no Registro para a instalação deste aplicativo.
+
+Outra instalação está em andamento. Você deve concluir a instalação anterior antes de continuar a instalação atual.
+
+Erro ao acessar dados protegidos. Certifique-se de que o Windows Installer esteja configurado corretamente e tente instalar novamente.
+
+Usuário '[2]' iniciou previamente uma instalação do produto '[3]'. Esse usuário precisará executar essa instalação novamente antes do produto poder ser utilizado. Sua instalação atual continuará agora.
+
+Usuário '[2]' iniciou previamente a instalação do produto '[3]'. Esse usuário precisará executar essa instalação novamente antes do produto poder ser utilizado.
+
+Espaço insuficiente em disco -- Volume: '[2]'; espaço necessário: [3] KB; espaço disponível: [4] KB. Libere espaço em disco e tente novamente.
+
+Tem certeza de que deseja cancelar?
+
+O arquivo [2][3] está sendo mantido em uso { pelo seguinte processo: Nome: [4], Identificação: [5], Título da janela: '[6]'}. Feche esse aplicativo e tente novamente.
+
+O produto '[2]' já está instalado, impedindo a instalação deste produto. Os dois produtos são incompatíveis.
+
+Espaço insuficiente em disco no volume '[2]' para continuar a instalação com recuperação ativada. [3] KB são necessários, mas há apenas [4] KB disponíveis. Clique em 'Ignorar' para continuar a instalação sem salvar informações de recuperação, 'Repetir' para verificar o espaço disponível em disco novamente ou em 'Cancelar' para sair da instalação.
+
+Não foi possível acessar o local da rede [2].
+
+Os seguintes aplicativos devem ser fechados antes de continuar a instalação:
+
+Não foi possível localizar qualquer produto compatível instalado anteriormente na máquina para a instalação deste produto.
+
+Erro ao aplicar as configurações de segurança. [2] não é um usuário ou grupo válido. Isso pode indicar um problema com o pacote ou na conexão com um controlador de domínio na rede. Verifique sua conexão de rede e clique em 'Repetir' ou em 'Cancelar' para encerrar a instalação. {{Não é possível localizar a SID do usuário, erro de sistema [3]}}
+
+A chave [2] não é válida. Verifique se você inseriu a chave correta.
+
+O Installer deve reiniciar o sistema para que a configuração de [2] possa continuar. Clique em 'Sim' para reiniciar agora ou em 'Não' se desejar reiniciar manualmente mais tarde.
+
+Você deve reiniciar o sistema para que as alterações de configuração de [2] tenham efeito. Clique em 'Sim' para reiniciar agora ou em 'Não' se desejar reiniciar manualmente mais tarde.
+
+Uma instalação do [2] está suspensa no momento. Você deve desfazer as alterações feitas por essa instalação para continuar. Deseja desfazer essas alterações?
+
+Uma instalação anterior deste produto está em andamento. Você deve desfazer as alterações feitas por essa instalação para continuar. Deseja desfazer essas alterações?
+
+Um pacote de instalação para o produto [2] não pode ser encontrado. Tente a instalação novamente usando uma cópia válida do pacote de instalação '[3]'.
+
+Instalação concluída com êxito.
+
+Falha na instalação.
+
+Produto: [2] -- [3]
+
+Talvez você precise recuperar o estado anterior do computador ou continuar a instalação mais tarde. Deseja recuperar?
+
+Ocorreu um erro ao gravar informações de instalação em disco. Certifique-se de que haja espaço em disco suficiente disponível e clique em 'Repetir', ou clique em 'Cancelar' para finalizar a instalação.
+
+Um ou mais dos arquivos necessários para recuperar o estado anterior do computador não pôde ser encontrado. A restauração não será possível.
+
+[2] não pode instalar um de seus produtos requeridos. Entre em contato com a equipe de suporte técnico. {{Erro do sistema: [3].}}
+
+A versão anterior de [2] não pode ser removida. Entre em contato com a equipe de suporte técnico. {{Erro do sistema [3].}}
+
+Instalado [2]
+
+Configurado [2]
+
+Removido [2]
+
+O arquivo [2] foi rejeitado pela diretiva de assinatura digital.
+
+O serviço do Windows Installer não pôde ser acessado. Isso pode ocorrer se você estiver executando o Windows em modo de segurança ou se o Windows Installer não tiver sido instalado corretamente. Entre em contato com sua equipe de suporte para obter ajuda.
+
+Há um problema com este pacote do Windows Installer. Um script necessário para a conclusão desta instalação não pôde ser executado. Entre em contato com sua equipe de suporte ou com o fornecedor do pacote. {{Ação personalizada [2] erro de script [3], [4]: [5] Linha [6], Coluna [7], [8] }}
+
+Há um problema com este pacote do Windows Installer. Um programa necessário para a conclusão desta instalação não pôde ser executado. Entre em contato com sua equipe de suporte ou com o fornecedor do pacote. {{Ação: [2], localização: [3], comando: [4] }}
+
+Há um problema com este pacote do Windows Installer. Um programa executado como parte da instalação não foi concluído como esperado. Entre em contato com sua equipe de suporte ou com o fornecedor do pacote. {{Ação: [2], localização: [3], comando: [4] }}
+
+Há um problema com este pacote do Windows Installer. Uma dll necessária para a conclusão desta instalação não pôde ser executada. Entre em contato com sua equipe de suporte ou com o fornecedor do pacote {{Ação [2], entrada: [3], biblioteca: [4] }}
+
+A remoção foi concluída com êxito.
+
+Falha na remoção.
+
+O anúncio foi concluído com êxito.
+
+Falha no anúncio.
+
+A configuração foi concluída com êxito.
+
+Falha na configuração.
+
+É preciso ser um administrador para remover este aplicativo. Para remover este aplicativo, faça logon como administrador ou contacte a equipe de suporte técnico para obter ajuda.
+
+O caminho [2] não é válido. Especifique um caminho válido.
+
+Sem memória. Encerre outros aplicativos antes de tentar novamente.
+
+Não há nenhum disco na unidade [2]. Insira um disco e clique em 'Repetir', ou clique em 'Cancelar' para voltar ao volume selecionado anteriormente.
+
+Não há nenhum disco na unidade [2]. Insira um disco e clique em 'Repetir', ou clique em 'Cancelar' para retornar à caixa de procura e selecione um volume diferente.
+
+A pasta [2] não existe. Insira um caminho para uma pasta existente.
+
+Você tem privilégios insuficientes para ler esta pasta.
+
+Uma pasta de destino válida não pôde ser determinada para a instalação.
+
+Erro ao tentar ler a partir do banco de dados de instalação de origem: [2].
+
+Programando operação de reinicialização: renomeando o arquivo [2] para [3]. É preciso reinicializar o computador para concluir a operação.
+
+Programando operação de reinicialização: excluindo o arquivo [2]. É preciso reinicializar o computador para concluir a operação.
+
+Módulo [2] falhou ao registrar. HRESULT [3]. Entre em contato com a equipe de suporte.
+
+Módulo [2] falhou ao remover registro. HRESULT [3]. Entre em contato com a equipe de suporte.
+
+Falha ao armazenar o pacote em cache [2]. Erro: [3]. Entre em contato com a equipe de suporte.
+
+Não foi possível registrar a fonte [2]. Verifique se você tem permissões suficientes para instalar fontes e se o sistema oferece suporte para essa fonte.
+
+Não foi possível remover o registro da fonte [2]. Verifique se você tem permissões suficientes para remover fontes.
+
+Não foi possível criar o atalho [2]. Verifique se a pasta de destino existe e se você pode acessá-la.
+
+Não foi possível remover o atalho [2]. Verifique se o arquivo de atalho existe e se você pode acessá-lo.
+
+Não foi possível registrar a biblioteca de tipos para o arquivo [2]. Entre em contato com a equipe de suporte.
+
+Não foi possível remover o registro da biblioteca de tipos para o arquivo [2]. Entre em contato com a equipe de suporte.
+
+Não foi possível atualizar o arquivo ini [2][3]. Verifique se o arquivo existe e se você pode acessá-lo.
+
+Não foi possível agendar a substituição do arquivo [3] pelo arquivo [2] ao reinicializar. Verifique se você tem permissões de gravação para o arquivo [3].
+
+Erro ao remover o gerenciador de driver ODBC; erro de ODBC [2]: [3]. Entre em contato com a equipe de suporte.
+
+Erro ao instalar o gerenciador de driver ODBC; erro de ODBC [2]: [3]. Entre em contato com a equipe de suporte.
+
+Erro ao remover o driver ODBC: [4]; erro de ODBC [2]: [3]. Verifique se você tem privilégios suficientes para remover drivers ODBC.
+
+Erro ao instalar o driver ODBC: [4]; erro de ODBC [2]: [3]. Verifique se o arquivo [4] existe e se você pode acessá-lo.
+
+Erro ao configurar fonte de dados ODBC: [4]; erro de ODBC [2]: [3]. Verifique se o arquivo [4] existe e se você pode acessá-lo.
+
+Serviço '[2]' ([3]) falhou ao iniciar. Verifique se você tem privilégios suficientes para iniciar os serviços do sistema.
+
+Serviço '[2]' ([3]) não pôde ser interrompido. Verifique se você tem privilégios suficientes para interromper os serviços do sistema.
+
+Serviço '[2]' ([3]) não pôde ser excluído. Verifique se você tem privilégios suficientes para remover serviços do sistema.
+
+Serviço '[2]' ([3]) não pôde ser instalado. Verifique se você tem privilégios suficientes para instalar os serviços do sistema.
+
+Não foi possível atualizar a variável de ambiente '[2]'. Verifique se você tem privilégios suficientes para modificar variáveis de ambiente.
+
+Você não tem privilégios suficientes para concluir esta instalação para todos os usuários da máquina. Efetue logon como administrador e tente essa instalação novamente.
+
+Não foi possível definir a segurança de arquivo para o arquivo '[3]'. Erro: [2]. Verifique se você tem privilégios suficientes para modificar as permissões de segurança desse arquivo.
+
+Os serviços de componentes (COM+ 1.0) não estão instalados neste computador. Esta instalação requer os serviços de componentes para ser concluída com êxito. Os serviços de componentes estão disponíveis no Windows 2000.
+
+Erro ao registrar o aplicativo do COM+. Entre em contato com a equipe de suporte para obter mais informações.
+
+Erro ao remover o registro do aplicativo do COM+. Entre em contato com a equipe de suporte para obter mais informações.
+
+A descrição do serviço '[2]' ([3]) não pôde ser alterada.
+
+O serviço Windows Installer não pode atualizar o arquivo do sistema [2] porque ele está protegido pelo Windows. Talvez você precise atualizar o sistema operacional para que o programa funcione devidamente. {{Versão do pacote: [3], Versão protegida do SO: [4]}}
+
+O serviço Windows Installer não pode atualizar o arquivo protegido pelo Windows [2]. {{Versão do pacote: [3], Versão protegida do SO: [4], Erro do SFP: [5]}}
+
+O serviço do Windows Installer não pode atualizar um ou mais arquivos protegidos do Windows. {{Erro SFP: [2]. Lista de arquivos protegidos:\r\n[3]}}
+
+As instalações de usuário estão desativadas por meio da diretiva neste computador.
+
+Erro ao instalar o componente de montagem [2]. HRESULT: [3]. {{interface de montagem: [4], função: [5], nome da montagem: [6]}}
+
+
diff --git a/src/WINNT/install/wix/lang/zh_CN/ActionText.wxi b/src/WINNT/install/wix/lang/zh_CN/ActionText.wxi
new file mode 100644
index 0000000000..ba32b7dcd7
--- /dev/null
+++ b/src/WINNT/install/wix/lang/zh_CN/ActionText.wxi
@@ -0,0 +1,143 @@
+
+
+֪ͨӦÓóÌÐò
+
+ÕýÔÚ·ÖÅä×¢²á±í¿Õ¼ä
+
+ÕýÔÚËÑË÷ÒÑ°²×°µÄÓ¦ÓóÌÐò
+
+°ó¶¨¿ÉÖ´ÐÐÎļþ
+
+ÕýÔÚËÑË÷·ûºÏ×ʸñµÄ²úÆ·
+
+ÕýÔÚ¼ÆËã¿Õ¼äÐèÇó
+
+ÕýÔÚ¼ÆËã¿Õ¼äÐèÇó
+
+ÕýÔÚ´´½¨Îļþ¼Ð
+
+ÕýÔÚ´´½¨¿ì½Ý·½Ê½
+
+ÕýÔÚɾ³ý·þÎñ
+
+ÕýÔÚ´´½¨Öظ´Îļþ
+
+ÕýÔÚ¼ÆËã¿Õ¼äÐèÇó
+
+ÕýÔÚËÑË÷Ïà¹Ø²úÆ·
+
+ÕýÔÚÉú³É½Å±¾²Ù×÷£¬ÓÃÓÚ£º
+
+ÕýÔÚ¸´ÖÆÍøÂç°²×°Îļþ
+
+ÕýÔÚ¸´ÖÆÐÂÎļþ
+
+ÕýÔÚ°²×° ODBC ×é¼þ
+
+ÕýÔÚ°²×°Ð·þÎñ
+
+ÕýÔÚ°²×°ÏµÍ³Ä¿Â¼
+
+ÕýÔÚÑéÖ¤°²×°
+
+ÕýÔÚÆÀ¹ÀÆô¶¯Ìõ¼þ
+
+ÕýÔÚ´ÓÏà¹ØÓ¦ÓóÌÐòǨÒƹ¦ÄÜ
+
+ÕýÔÚÒƶ¯Îļþ
+
+·¢Ðлã±àÐÅÏ¢
+
+Í£Ö¹·¢Ðлã±àÐÅÏ¢
+
+ÕýÔÚÐÞ²¹Îļþ
+
+ÕýÔÚ¸üÐÂ×é¼þ×¢²á±í
+
+ÕýÔÚ·¢²¼ºÏ¸ñµÄ×é¼þ
+
+ÕýÔÚ·¢²¼²úÆ·¹¦ÄÜ
+
+ÕýÔÚ·¢²¼²úÆ·ÐÅÏ¢
+
+ÕýÔÚ×¢²áÀà·þÎñÆ÷
+
+ÕýÔÚ×¢²á COM+ Ó¦ÓóÌÐòºÍ×é¼þ
+
+ÕýÔÚ×¢²áÀ©Õ¹·þÎñÆ÷
+
+ÕýÔÚ×¢²á×ÖÌå
+
+ÕýÔÚ×¢²á MIME ÐÅÏ¢
+
+ÕýÔÚ×¢²á²úÆ·
+
+ÕýÔÚ×¢²á³ÌÐò±êʶ·û
+
+ÕýÔÚ×¢²áÀàÐÍ¿â
+
+ÕýÔÚ×¢²áÓû§
+
+ÕýÔÚɾ³ýÖظ´µÄÎļþ
+
+ÕýÔÚ¸üл·¾³×Ö·û´®
+
+ÕýÔÚɾ³ýÓ¦ÓóÌÐò
+
+ÕýÔÚɾ³ýÎļþ
+
+ÕýÔÚɾ³ýÎļþ¼Ð
+
+ÕýÔÚɾ³ý INI ÎļþÌõÄ¿
+
+ÕýÔÚɾ³ý ODBC ×é¼þ
+
+ÕýÔÚɾ³ýϵͳע²á±íÖµ
+
+ÕýÔÚɾ³ý¿ì½Ý·½Ê½
+
+ÕýÔÚËÑË÷·ûºÏ×ʸñµÄ²úÆ·
+
+»Ø¹ö²Ù×÷:
+
+ÕýÔÚɾ³ý±¸·ÝÎļþ
+
+ÕýÔÚ×¢²áÄ£¿é
+
+ÕýÔÚ³·ÏúÄ£¿éµÄ×¢²á
+
+ÕýÔÚ³õʼ»¯ ODBC Ŀ¼
+
+ÕýÔÚÆô¶¯·þÎñ
+
+ÕýÔÚÍ£Ö¹·þÎñ
+
+ÕýÔÚɾ³ýÒƶ¯¹ýµÄÎļþ
+
+ÕýÔÚÈ¡ÏûºÏ¸ñ×é¼þµÄ·¢²¼
+
+ÕýÔÚÈ¡Ïû²úÆ·¹¦Äܵķ¢²¼
+
+ÕýÔÚÈ¡Ïû²úÆ·ÐÅÏ¢µÄ·¢²¼
+
+ÕýÔÚ³·ÏúÀà·þÎñÆ÷µÄ×¢²á
+
+ÕýÔÚ³·Ïú COM+ Ó¦ÓóÌÐòºÍ×é¼þµÄ×¢²á
+
+ÕýÔÚ³·ÏúÀ©Õ¹·þÎñÆ÷µÄ×¢²á
+
+ÕýÔÚ³·Ïú×ÖÌåµÄ×¢²á
+
+ÕýÔÚ³·Ïú MIME ÐÅÏ¢µÄ×¢²á
+
+ÕýÔÚ³·Ïú³ÌÐò±êʶ·ûµÄ×¢²á
+
+ÕýÔÚ³·ÏúÀàÐÍ¿âµÄ×¢²á
+
+ÕýÔÚ¸üл·¾³×Ö·û´®
+
+ÕýÔÚдÈë INI ÎļþÊýÖµ
+
+ÕýÔÚдÈëϵͳע²á±íÖµ
+
+
diff --git a/src/WINNT/install/wix/lang/zh_CN/Error.wxi b/src/WINNT/install/wix/lang/zh_CN/Error.wxi
new file mode 100644
index 0000000000..00726762b4
--- /dev/null
+++ b/src/WINNT/install/wix/lang/zh_CN/Error.wxi
@@ -0,0 +1,319 @@
+
+
+{{ÖÂÃü´íÎó: }}
+
+{{´íÎó [1]¡£}}
+
+¾¯¸æ [1]¡£
+
+
+
+ÐÅÏ¢ [1]¡£
+
+°²×°³ÌÐòÔÚ°²×°´ËÈí¼þ°üʱÓöµ½Ò»¸ö´íÎó¡£Õâ¿ÉÄܱíʾ´ËÈí¼þ°üÓÐ´í¡£´íÎóÂëÊÇ [1]¡£{{²ÎÊýÊÇ: [2], [3], [4]}}
+
+
+
+{{´ÅÅÌÒÑÂú: }}
+
+²Ù×÷ [Time]: [1]. [2]
+
+[ProductName]
+
+{[2]}{, [3]}{, [4]}
+
+ÏûÏ¢ÀàÐÍ: [1]£¬ ²ÎÊý: [2]
+
+=== ¼Ç¼¿ªÊ¼: [Date] [Time] ===
+
+=== ¼Ç¼ֹͣ: [Date] [Time] ===
+
+²Ù×÷¿ªÊ¼ [Time]: [1]¡£
+
+²Ù×÷½áÊø [Time]: [1]¡£·µ»ØÖµ [2]¡£
+
+Ê£Óàʱ¼ä: {[1] ·Ö }{[2] Ãë}
+
+ÄÚ´æ²»×ã¡£ÇëÏȹرÕÆäËûÓ¦ÓóÌÐò£¬È»ºóÔÙÖØÊÔ¡£
+
+°²×°³ÌÐòÒѲ»ÔÙÏìÓ¦¡£
+
+°²×°³ÌÐò¹ýÔçÍ£Ö¹¡£
+
+Windows ÕýÔÚÅäÖà [ProductName]£¬ÇëÉÔºò¡£
+
+ÕýÔÚÊÕ¼¯ËùÐèÐÅÏ¢...
+
+ÕýÔÚɾ³ý´ËÓ¦ÓóÌÐò¾ÉµÄ°æ±¾...
+
+ÕýÔÚ×¼±¸É¾³ý´ËÓ¦ÓóÌÐò¾ÉµÄ°æ±¾...
+
+{[ProductName] }°²×°Òѳɹ¦Íê³É¡£
+
+{[ProductName] }°²×°Ê§°Ü¡£
+
+¶ÁÈ¡Îļþ [2] ʱ³ö´í¡£{{ ϵͳ´íÎó [3]¡£}} ÇëÈ·ÈϸÃÎļþµÄÈ·´æÔÚ²¢ÇÒÄú¿ÉÒÔ¶ÔÆä½øÐзÃÎÊ¡£
+
+ÎÞ·¨´´½¨Îļþ '[2]'¡£Í¬ÃûĿ¼ÒÑ´æÔÚ¡£ÇëÈ¡Ïû´Ë´Î°²×°£¬È»ºó°²×°µ½ÆäËûλÖá£
+
+Çë²åÈë´ÅÅÌ: [2]
+
+°²×°³ÌÐòûÓзÃÎÊĿ¼ [2] µÄȨÏÞ£¬°²×°ÎÞ·¨¼ÌÐø½øÐС£ÇëÒÔ¹ÜÀíÔ±Éí·ÝµÇ¼£¬»òÓëÄúµÄϵͳ¹ÜÀíÔ±ÁªÏµ¡£
+
+дÖÁÎļþ [2] ʱ³ö´í¡£ÇëÈ·ÈÏÄúÓзÃÎʸÃĿ¼µÄȨÏÞ¡£
+
+¶ÁÈ¡Îļþ [2] ʱ³ö´í¡£{{ ϵͳ´íÎó [3]¡£}}ÇëÈ·ÈÏÎļþ´æÔÚ£¬²¢ÇÒÄúÄܹ»·ÃÎʸÃÎļþ¡£
+
+ÁíÒ»Ó¦ÓóÌÐòÒѾÒÔ¶Àռģʽ·ÃÎÊÁËÎļþ [2]¡£Çë¹Ø±ÕËùÓÐÆäËûµÄÓ¦ÓóÌÐò£¬È»ºóÔÙµ¥»÷¡°ÖØÊÔ¡±°´Å¥¡£
+
+ûÓÐ×ã¹»µÄ´ÅÅÌ¿Õ¼äÀ´°²×°Îļþ [2]¡£ÇëÊÍ·ÅһЩ´ÅÅÌ¿Õ¼äºóµ¥»÷¡°ÖØÊÔ¡±£¬»òÕßµ¥»÷¡°È¡Ïû¡±Í˳ö¡£
+
+ûÓÐÕÒµ½Ô´Îļþ [2]¡£ÇëÈ·ÈÏÎļþ´æÔÚ£¬²¢ÇÒÄúÄܹ»·ÃÎʸÃÎļþ¡£
+
+¶ÁÈ¡Îļþ [3] ʱ³ö´í¡£{{ ϵͳ´íÎó [2]¡£}} ÇëÈ·ÈÏÎļþ´æÔÚ£¬²¢ÇÒÄúÄܹ»·ÃÎʸÃÎļþ¡£
+
+дÖÁÎļþ [3] ʱ³ö´í¡£{{ ϵͳ´íÎó [2]¡£}} ÇëÈ·ÈÏÄúÓÐȨ·ÃÎʸÃĿ¼¡£
+
+ûÓÐÕÒµ½Ô´Îļþ{{(°ü)}}: [2]¡£ÇëÈ·ÈÏÎļþ´æÔÚ£¬²¢ÇÒÄúÄܹ»·ÃÎʸÃÎļþ¡£
+
+ÎÞ·¨´´½¨Ä¿Â¼ [2]¡£Í¬ÃûÎļþÒѾ´æÔÚ¡£ÇëÖØÃüÃû»òɾ³ýÎļþ£¬È»ºóµ¥»÷¡°ÖØÊÔ¡±°´Å¥£¬»òÕßµ¥»÷¡°È¡Ïû¡±°´Å¥Í˳ö¡£
+
+Ä¿Ç°ÎÞ·¨Ê¹Óþí [2]£¬ÇëÁíÑ¡ÆäËû¾í¡£
+
+ÎÞ·¨Ê¹ÓÃÖ¸¶¨µÄ·¾¶ [2]¡£
+
+ÎÞ·¨Ð´ÈëÖ¸¶¨µÄÎļþ¼Ð [2]¡£
+
+ÊÔͼ¶ÁÈ¡Îļþ [2] ʱ·¢ÉúÍøÂç´íÎó¡£
+
+ÊÔͼ´´½¨Ä¿Â¼ [2] ʱ·¢Éú´íÎó¡£
+
+ÊÔͼ´´½¨Ä¿Â¼ [2] ʱ·¢ÉúÍøÂç´íÎó¡£
+
+ÊÔͼ´ò¿ªÔ´Îļþ°ü [2] ʱ·¢ÉúÍøÂç´íÎó¡£
+
+Ö¸¶¨µÄ·¾¶¹ý³¤: [2]
+
+°²×°³ÌÐòûÓÐÐÞ¸ÄÎļþ [2] µÄȨÏÞ¡£
+
+Îļþ¼Ð·¾¶ [2] µÄÒ»²¿·ÖÎÞЧ¡£»òÕßΪ¿Õ£¬»òÕß³¬³öÁËϵͳÔÊÐíµÄ³¤¶È¡£
+
+Îļþ¼Ð·¾¶ [2] Öк¬ÓÐÎÞЧµ¥´Ê¡£
+
+Îļþ¼Ð·¾¶ [2] Öк¬ÓÐÎÞЧµÄ×Ö·û¡£
+
+[2] ²»ÊÇÒ»¸öÓÐЧµÄ¶ÌÎļþÃû¡£
+
+»ñÈ¡Îļþ [3] °²È«È¨ÏÞʱ·¢Éú´íÎó GetLastError: [2]
+
+ÎÞЧÇý¶¯Æ÷: [2]
+
+¶ÔÎļþ [2] Ó¦ÓÃÐÞ²¹³ÌÐòʱ³ö´í¡£¸ÃÎļþ¿ÉÄܱ»¸üйý£¬ËùÒÔ±¾ÐÞ²¹³ÌÐò²»ÄÜÐÞ¸ÄËü¡£ÏêϸÐÅÏ¢£¬ÇëÓëÄúµÄÐÞ²¹³ÌÐò¹©Ó¦ÉÌÁªÏµ¡£ {{ϵͳ´íÎó: [3]}}
+
+ÐèÒªµÄÎļþ²»ÄÜ°²×°£¬ÒòΪ CAB Îļþ [2] ûÓÐÊý×ÖÇ©Ãû¡£Õâ¿ÉÄܱíʾ CAB ÎļþÒÑË𻵡£
+
+ÐèÒªµÄÎļþ²»ÄÜ°²×°£¬ÒòΪ CAB Îļþ [2] µÄÊý×ÖÇ©ÃûÎÞЧ¡£Õâ¿ÉÄܱíʾ CAB ÎļþÒÑË𻵡£{{WinVerifyTrust ·µ»ØÁË´íÎó [3] ¡£}}
+
+¸´ÖÆ [2] Îļþʧ°Ü: CRC ´íÎó¡£
+
+Òƶ¯ [2] Îļþʧ°Ü: CRC ´íÎó¡£
+
+ÐÞ²¹ [2] Îļþʧ°Ü: CRC ´íÎó¡£
+
+²»ÄÜ°²×°Îļþ '[2]'£¬ÒòΪÔÚ CAB Îļþ '[3]' ÖÐÕÒ²»µ½´ËÎļþ¡£Õâ¿ÉÄܱíʾÍøÂç´íÎ󡢶Á¹âÅÌ´íÎó»ò´ËÈí¼þ°ü´íÎó¡£
+
+°²×°ËùÐèµÄ CAB Îļþ '[2]' ÒÑË𻵣¬²»ÄÜʹÓá£Õâ¿ÉÄܱíʾÍøÂç´íÎ󡢶Á¹âÅÌ´íÎó»ò´ËÈí¼þ°ü´íÎó¡£
+
+´´½¨Íê³É´Ë°²×°ÐèÒªµÄÁÙʱÎļþ³ö´í¡£{{Îļþ¼Ð: [3]¡£ÏµÍ³´íÎóÂë: [2]}}
+
+ÎÞ·¨´´½¨¼ü: [2]¡£{{ ϵͳ´íÎó [3]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨´ò¿ª¼ü: [2]¡£{{ ϵͳ´íÎó [3]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨É¾³ýÖµ [2]£¨´Ó¼ü [3] ÖУ©¡£{{ ϵͳ´íÎó [4]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨É¾³ý¼ü [2]¡£{{ ϵͳ´íÎó [3]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨¶ÁÈ¡Öµ [2]£¨´Ó¼ü [3] ÖУ©¡£{{ ϵͳ´íÎó [4]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨½«ÊýÖµ [2] дÈë¼ü [3]¡£{{ ϵͳ´íÎó [4]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨»ñÈ¡¼ü [2] µÄÊýÖµÃû³Æ¡£{{ ϵͳ´íÎó [3]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨»ñÈ¡¼ü [2] µÄ×Ó¼ü¡£{{ ϵͳ´íÎó [3]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨¶ÁÈ¡¼ü [2] µÄ°²È«ÐÅÏ¢¡£{{ ϵͳ´íÎó [3]¡£}} ÇëÑéÖ¤Äú¶Ô¸Ã¼üÓµÓÐ×ã¹»µÄ·ÃÎÊȨÏÞ£¬»òÕßÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨Ôö¼Ó¿ÉÓõÄ×¢²á±í¿Õ¼ä¡£°²×°±¾Ó¦ÓóÌÐòÐèÒª [2] ǧ×ֽڵĿÕÏÐ×¢²á±í¿Õ¼ä¡£
+
+ÁíÒ»°²×°¹ý³ÌÕýÔÚ½øÐС£Äú±ØÐëÏÈÍê³ÉÄǴιý³Ì£¬È»ºó²ÅÄܼÌÐø±¾´Î¹ý³Ì¡£
+
+·ÃÎÊÊܱ£»¤µÄÊý¾Ýʱ³ö´í¡£ÇëÈ·ÈÏ Windows Installer ÅäÖÃÊÇ·ñÕýÈ·£¬È»ºóÖØа²×°¡£
+
+Óû§ [2] ÒÔÇ°Æô¶¯¹ý²úÆ· [3] µÄ°²×°³ÌÐò¡£ÈôҪʹÓøòúÆ·£¬ÐèÒªÇë´ËÓû§ÔÙ´ÎÔËÐа²×°³ÌÐò¡£ÏÖÔÚ½«¼ÌÐø½øÐÐÄúµÄ°²×°¡£
+
+Óû§ [2] ÒÔÇ°Æô¶¯¹ý²úÆ· [3] µÄ°²×°³ÌÐò¡£ÈôҪʹÓøòúÆ·£¬ÐèÒªÇë´ËÓû§ÔÙ´ÎÔËÐа²×°³ÌÐò¡£
+
+´ÅÅ̿ռ䲻×ã -- ¾í: [2]£»ËùÐè¿Õ¼ä: [3] KB£»¿ÉÓÿռä: [4] KB¡£ÇëÔÚÊÍ·Å´ÅÅÌ¿Õ¼äºóÔÙÊÔ¡£
+
+ÊÇ·ñÈ·ÈÏҪȡÏû²Ù×÷£¿
+
+Îļþ [2][3] Õý±»Ê¹Óà {ʹÓÃÕß: Ãû³Æ: [4]£¬Id: [5]£¬´°¿Ú±êÌâ: ¡°[6]¡±}¡£Çë¹Ø±ÕÄǸöÓ¦ÓóÌÐòºóÔÙÖØÊÔ¡£
+
+²úÆ· [2] ÒѾ°²×°£¬ÏÖÔÚÎÞ·¨°²×°±¾²úÆ·¡£ÕâÁ½ÖÖ²úÆ·²»¼æÈÝ¡£
+
+ÖùÃæ'[2]' ÉÏûÓÐ×ã¹»µÄ´ÅÅÌ¿Õ¼äÀ´×÷¾ßÓÐÆôÓûָ´µÄ°²×°¡£ÐèÒª [3] KB£¬µ«Ö»ÓÐ [4] KB¡£µ¥»÷¡°ºöÂÔ¡±À´¼ÌÐø°²×°£¬¶ø²»±£´æ»Ö¸´ÐÅÏ¢£»µ¥»÷¡°ÖØÊÔ¡±À´Ôٴμì²é¿ÉÓÿռ䣻µ¥»÷¡°È¡Ïû¡±À´Í˳ö°²×°¡£
+
+ÎÞ·¨·ÃÎÊÍøÂçλÖà [2]¡£
+
+ÔÚ¼ÌÐø°²×°Ö®Ç°£¬Çë¹Ø±ÕÒÔÏÂÓ¦ÓóÌÐò:
+
+ÎÞ·¨ÔÚ¼ÆËã»úÉÏÕÒµ½°²×°±¾²úÆ·ËùÐèµÄÈκÎÒÔÇ°°²×°µÄÏàÓ¦²úÆ·¡£
+
+Ó¦Óð²È«ÉèÖÃʱ³ö´í¡£[2] ²»ÊÇÓÐЧµÄÓû§»ò×é¡£Õâ¿ÉÄÜÊÇÈí¼þ°üµÄ´íÎ󣬻òÕßÊÇÁ¬½Óµ½ÍøÂçÉϵÄÓò¿ØÖÆÆ÷µÄ´íÎó¡£¼ì²éÄãµÄÍøÂçÁ¬½Ó£¬È»ºóµ¥»÷¡°ÖØÊÔ¡±£¬»òÕßµ¥»÷¡°È¡Ïû¡±À´½áÊø°²×°¡£{{²»ÄÜÕÒµ½ÓÉÓû§µÄ SID£¬ÏµÍ³´íÎó [3]}}
+
+¼ü [2] ÎÞЧ¡£ÇëÈ·ÈÏÄúÊäÈëµÄ¼üÊÇ·ñÕýÈ·¡£
+
+°²×°³ÌÐò±ØÐëÏÈÖØÐÂÆô¶¯ÄúµÄϵͳ£¬È»ºó²ÅÄܼÌÐøÅäÖà [2]¡£µ¥»÷¡°ÊÇ¡±°´Å¥¿ÉÁ¢¼´ÖØÐÂÆô¶¯£»µ¥»÷¡°·ñ¡±°´Å¥Ôò¿ÉÔÚÒÔºóÒÔÈ˹¤·½Ê½Æô¶¯¡£
+
+Äú±ØÐëÏÈÖØÐÂÆô¶¯ÏµÍ³£¬È»ºó²ÅÄÜʹ¶Ô [2] ×ö³öµÄÅäÖÃÐÞ¸ÄÉúЧ¡£µ¥»÷¡°ÊÇ¡±°´Å¥¿ÉÁ¢¼´ÖØÐÂÆô¶¯£»µ¥»÷¡°·ñ¡±°´Å¥Ôò¿ÉÔÚÒÔºóÒÔÈ˹¤·½Ê½Æô¶¯¡£
+
+[2] µÄÒ»´Î°²×°¹ý³ÌÕý´¦ÓÚÔÝͣ״̬£¬Äú±ØÐëÏȳ·Ïú¸Ã°²×°¹ý³Ì×ö³öµÄÐ޸ģ¬È»ºó²ÅÄܼÌÐø²Ù×÷¡£ÊÇ·ñ³·ÏúÄÇЩÐ޸ģ¿
+
+±¾²úÆ·µÄÇ°Ò»´Î°²×°ÕýÔÚ½øÐУ¬Äú±ØÐëÏȳ·Ïú¸Ã¹ý³Ì×ö³öµÄÐ޸ģ¬È»ºó²ÅÄܼÌÐø¡£ÊÇ·ñ³·ÏúÄÇЩÐ޸ģ¿
+
+ÎÞ·¨ÕÒµ½²úÆ· [2] µÄ°²×°³ÌÐò°ü¡£ÇëʹÓð²×°³ÌÐò°ü [3] µÄÓÐЧ¸±±¾ÖØнøÐа²×°¡£
+
+°²×°Òѳɹ¦Íê³É¡£
+
+°²×°Ê§°Ü¡£
+
+²úÆ·: [2] -- [3]
+
+Äú¿ÉÒÔ½«¼ÆËã»ú»¹ÔÖÁÆäÔʼ״̬£¬Ò²¿ÉÔÚÒÔºó¼ÌÐø°²×°¡£ÊÇ·ñÒª½øÐл¹Ô£¿
+
+ÏòÓ²ÅÌдÈë°²×°ÐÅϢʱ·¢Éú´íÎó¡£ÇëÈ·ÈÏÊÇ·ñÓÐ×ã¹»µÄÓ²ÅÌ¿Õ¼ä¿É¹©Ê¹Óã¬È»ºóµ¥»÷¡°ÖØÊÔ¡±°´Å¥£¬»òÕßµ¥»÷¡°È¡Ïû¡±°´Å¥½áÊø°²×°¡£
+
+ÎÞ·¨ÕÒµ½½«ÄúµÄ¼ÆËã»ú»Ö¸´ÖÁÔʼ״̬ËùÐèµÄÒ»¸ö»ò¶à¸öÎļþ¡£²»ÄܽøÐлָ´²Ù×÷¡£
+
+[2] ²»ÄÜ°²×°Ä³Ò»ËùÐè²úÆ·¡£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£ {{ϵͳ´íÎó: [3]¡£}}
+
+²»ÄÜɾ³ý¾É°æ±¾µÄ [2]¡£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£ {{ϵͳ´íÎó: [3]¡£}}
+
+°²×°ÁË [2]
+
+ÅäÖÃÁË [2]
+
+ɾ³ýÁË [2]
+
+Îļþ [2] ±»Êý×ÖÇ©Ãû²ßÂԾܾø¡£
+
+²»ÄÜ·ÃÎÊ Windows Installer ·þÎñ¡£¿ÉÄÜÊÇÄãÔÚ°²È«Ä£Ê½ÏÂÔËÐÐ Windows£¬»òÕß Windows Installer ûÓÐÕýÈ·µØ°²×°¡£ÇëºÍÄãµÄÖ§³ÖÈËÔ±ÁªÏµÒÔ»ñµÃ°ïÖú¡£
+
+´Ë Windows Installer Èí¼þ°üÓÐÒ»¸öÎÊÌâ¡£Íê³É´Ë°²×°ÐèÒªµÄ½Å±¾²»ÄÜÔËÐС£ÇëºÍÄãµÄÖ§³ÖÈËÔ±»ò´úÀíÉÌÁªÏµ¡£{{×Ô¶¨Òå²Ù×÷ [2] ½Å±¾´í [3], [4]: [5] ÐÐ [6], ÁÐ [7], [8] }}
+
+´Ë Windows Installer Èí¼þ°üÓÐÒ»¸öÎÊÌâ¡£Íê³É´Ë°²×°ÐèÒªµÄ³ÌÐò²»ÄÜÔËÐС£ÇëºÍÄãµÄÖ§³ÖÈËÔ±»ò´úÀíÉÌÁªÏµ¡£{{²Ù×÷: [2], λÖÃ: [3], ÃüÁî: [4] }}
+
+´Ë Windows Installer Èí¼þ°üÓÐÒ»¸öÎÊÌâ¡£×÷Ϊ°²×°µÄÒ»²¿·ÖµÄ³ÌÐò²»Õý³£½áÊø¡£ÇëºÍÄãµÄÖ§³ÖÈËÔ±»ò´úÀíÉÌÁªÏµ¡£{{²Ù×÷: [2], λÖÃ: [3], ÃüÁî: [4] }}
+
+´Ë Windows Installer Èí¼þ°üÓÐÒ»¸öÎÊÌâ¡£Íê³É´Ë°²×°ÐèÒªµÄ DLL ²»ÄÜÔËÐС£ÇëºÍÄãµÄÖ§³ÖÈËÔ±»ò´úÀíÉÌÁªÏµ¡£{{²Ù×÷: [2], Èë¿Ú: [3], ¿â: [4] }}
+
+³É¹¦µØÍê³Éɾ³ý¡£
+
+ɾ³ýʧ°Ü¡£
+
+³É¹¦µØÍê³É¹«²¼¡£
+
+¹«²¼Ê§°Ü¡£
+
+³É¹¦µØÍê³ÉÅäÖá£
+
+ÅäÖÃʧ°Ü¡£
+
+Äã±ØÐëÊÇϵͳ¹ÜÀíÔ±²ÅÄÜɾ³ý´ËÓ¦ÓóÌÐò¡£Äã¿ÉÒÔ×÷Ϊϵͳ¹ÜÀíÔ±µÇ¼£¬»òÓëÄãµÄÖ§³ÖС×éÁªÏµÒÔ»ñµÃ°ïÖú¡£
+
+·¾¶ [2] ÎÞЧ£¬ÇëÖ¸¶¨ÓÐЧ·¾¶¡£
+
+ÄÚ´æ²»×ã¡£ÇëÏȹرÕÆäËûÓ¦ÓóÌÐò£¬È»ºóÔÙÖØÊÔ¡£
+
+Çý¶¯Æ÷ [2] ÖÐûÓдÅÅÌ¡£ÇëÏȲåÈë´ÅÅÌ£¬È»ºóµ¥»÷¡°ÖØÊÔ¡±°´Å¥£»»òÕßµ¥»÷¡°È¡Ïû¡±°´Å¥£¬·µ»ØÇ°ÃæÑ¡ÔñµÄ¾í¡£
+
+Çý¶¯Æ÷ [2] ÖÐûÓдÅÅÌ¡£ÇëÏȲåÈë´ÅÅÌ£¬È»ºóµ¥»÷¡°ÖØÊÔ¡±°´Å¥£»»òÕßµ¥»÷¡°È¡Ïû¡±°´Å¥£¬·µ»Ø¡°ä¯ÀÀ¡±¶Ô»°¿ò²¢Ñ¡ÔñÆäËû¾í¡£
+
+Îļþ¼Ð [2] ²»´æÔÚ¡£ÇëÊäÈëij¸öÔÓÐÎļþ¼ÐµÄ·¾¶¡£
+
+Äú¶ÁÈ¡´ËÎļþ¼ÐµÄȨÏÞ²»¹»¡£
+
+ÎÞ·¨È·¶¨°²×°ËùÐèµÄÓÐЧ·¾¶¡£
+
+ÊÔͼ¶ÁÈ¡Ô´°²×°Êý¾Ý¿â [2] ʱ³ö´í¡£
+
+ÕýÔÚ°²ÅÅÖØÐÂÆô¶¯²Ù×÷: ½«Îļþ [2] ÖØÃüÃûΪ [3]¡£Ö»ÓÐÖØÐÂÆô¶¯ºó²Ù×÷²ÅÄÜÍê³É¡£
+
+ÕýÔÚ°²ÅÅÖØÐÂÆô¶¯²Ù×÷: ɾ³ýÎļþ [2]¡£Ö»ÓÐÖØÐÂÆô¶¯ºó²Ù×÷²ÅÄÜÍê³É¡£
+
+ÎÞ·¨×¢²áÄ£¿é [2]¡£HRESULT [3]¡£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨³·Ïú×¢²áÄ£¿é [2]¡£HRESULT [3]¡£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨»º´æ°ü [2]¡£´íÎó: [3]¡£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨×¢²á×ÖÌå [2]¡£Çë¼ì²éÄúÊÇ·ñÓÐ×ã¹»µÄȨÏÞ°²×°×ÖÌ壬ÒÔ¼°ÏµÍ³ÊÇ·ñÄܹ»Ö§³Ö¸Ã×ÖÌå¡£
+
+ÎÞ·¨³·Ïú¶Ô×ÖÌå [2] µÄ×¢²á¡£Çë¼ì²éÄúÊÇ·ñÓÐ×ã¹»µÄȨÏÞɾ³ý×ÖÌå¡£
+
+ÎÞ·¨´´½¨¿ì½Ý·½Ê½ [2]¡£Çë¼ì²éÄ¿±êÎļþ¼ÐÊÇ·ñ´æÔÚ£¬ÒÔ¼°ÄúÊÇ·ñ¿ÉÒÔ·ÃÎʸÃÎļþ¼Ð¡£
+
+ÎÞ·¨É¾³ý¿ì½Ý·½Ê½ [2]¡£ÇëÈ·Èϸÿì½Ý·½Ê½Îļþ´æÔÚ£¬²¢ÇÒÄú¿ÉÒÔ·ÃÎʸÃÎļþ¡£
+
+ÎÞ·¨½«Îļþ [2] ×¢²áµ½ÀàÐÍ¿âÖС£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨³·ÏúÎļþ [2] ÔÚÀàÐÍ¿âÖеÄ×¢²á¡£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ÎÞ·¨¸üРINI Îļþ [2][3]¡£ÇëÈ·ÈϸÃÎļþ´æÔÚ²¢ÇÒÄú¿ÉÒÔ·ÃÎÊËü¡£
+
+ÎÞ·¨°²ÅÅÔÚÖØÐÂÆô¶¯Ê±ÓÃÎļþ [2] Ìæ»»Îļþ [3]¡£ÇëÈ·ÈÏÄúÓµÓжÔÎļþ [3] µÄдȨÏÞ¡£
+
+ɾ³ý ODBC Çý¶¯³ÌÐò¹ÜÀíÆ÷ʱ·¢Éú´íÎó£¬ODBC ´íÎó [2]: [3]¡£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+°²×° ODBC Çý¶¯³ÌÐò¹ÜÀíÆ÷ʱ·¢Éú´íÎó£¬ODBC ´íÎó [2]: [3]¡£ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+ɾ³ý ODBC Çý¶¯³ÌÐò [4] ʱ·¢Éú´íÎó£¬ODBC ´íÎó [2]: [3]¡£ÇëÈ·ÈÏÄúÓÐ×ã¹»µÄȨÏÞɾ³ý ODBC Çý¶¯³ÌÐò¡£
+
+°²×° ODBC Çý¶¯³ÌÐò [4] ʱ·¢Éú´íÎó£¬ODBC ´íÎó [2]: [3]¡£ÇëÈ·ÈÏÎļþ [4] ´æÔÚ£¬²¢ÇÒÄú¿ÉÒÔ·ÃÎʸÃÎļþ¡£
+
+ÅäÖà ODBC Êý¾ÝÔ´ [4] ʱ·¢Éú´íÎó£¬ODBC ´íÎó [2]: [3]¡£ÇëÈ·ÈÏÎļþ [4] ´æÔÚ£¬²¢ÇÒÄú¿ÉÒÔ·ÃÎʸÃÎļþ¡£
+
+·þÎñ [2]£¨[3]£©µÄÆô¶¯Ê§°Ü¡£ÇëÈ·ÈÏÄúÓÐ×ã¹»µÄȨÏÞÆô¶¯ÏµÍ³·þÎñ¡£
+
+ÎÞ·¨ÖÕÖ¹·þÎñ [2]£¨[3]£©¡£ÇëÈ·ÈÏÄúÓÐ×ã¹»µÄȨÏÞÖÕֹϵͳ·þÎñ¡£
+
+ÎÞ·¨É¾³ý·þÎñ [2]£¨[3]£©¡£ÇëÈ·ÈÏÄúÓÐ×ã¹»µÄȨÏÞɾ³ýϵͳ·þÎñ¡£
+
+ÎÞ·¨°²×°·þÎñ [2]£¨[3]£©¡£ÇëÈ·ÈÏÄúÓÐ×ã¹»µÄȨÏÞ°²×°ÏµÍ³·þÎñ¡£
+
+ÎÞ·¨¸üл·¾³±äÁ¿ [2]¡£ÇëÈ·ÈÏÄúÓÐ×ã¹»µÄȨÏÞÐ޸Ļ·¾³±äÁ¿¡£
+
+ÄúûÓÐ×ã¹»µÄȨÏÞΪ¸Ã¼ÆËã»úËùÓÐÓû§Íê³É´Ë°²×°¡£ÇëÒÔ¹ÜÀíÔ±µÄÉí·ÝµÇ¼£¬È»ºóÖØг¢ÊÔ½øÐд˰²×°¡£
+
+ÎÞ·¨¶ÔÎļþ [3] µÄ°²È«È¨ÏÞ½øÐÐÉèÖᣴíÎó: [2]¡£ÇëÈ·ÈÏÄúÓÐ×ã¹»µÄȨÏÞÐ޸ĴËÎļþµÄ°²È«È¨ÏÞ¡£
+
+´Ë¼ÆËã»úÉÏδ°²×° Component Services (COM+ 1.0)¡£Òª³É¹¦Íê³É°²×°ÐèÒª Component Services¡£Component Services ÔÚ Windows 2000 ÉÏÓÐЧ¡£
+
+×¢²á COM+ Ó¦ÓóÌÐòʱ³ö´í¡£ÏêϸÐÅÏ¢£¬ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+³·Ïú×¢²á COM+ Ó¦ÓóÌÐòʱ³ö´í¡£ÏêϸÐÅÏ¢£¬ÇëÓëÄúµÄ¼¼ÊõÖ§³ÖÈËÔ±ÁªÏµ¡£
+
+²»Äܸü¸Ä·þÎñ '[2]' ([3]) µÄÃèÊö¡£
+
+Windows Installer ·þÎñ²»ÄܸüÐÂϵͳÎļþ [2]£¬ÒòΪ¸ÃÎļþ±» Windows ±£»¤¡£ÎªÊ¹¸Ã³ÌÐòÕýÈ·¹¤×÷£¬Äú¿ÉÄÜÐèÒª¸üвÙ×÷ϵͳ¡£{{³ÌÐò°ü°æ±¾: [3]£¬²Ù×÷ϵͳ±£»¤°æ±¾: [4]}}
+
+Windows Installer ·þÎñ²»Äܸüб»±£»¤µÄ Windows Îļþ [2]¡£{{³ÌÐò°ü°æ±¾: [3]£¬²Ù×÷ϵͳ±£»¤°æ±¾: [4]£¬SFP ´íÎó: [5]}}
+
+Windows Installer ·þÎñ²»ÄܸüÐÂÒ»¸ö»ò¶à¸öÊܱ£»¤µÄ Windows Îļþ¡£{{SFP ´íÎó: [2]¡£Êܱ£»¤µÄÎļþÁбí:\r\n[3]}}
+
+±¾»úÉϵIJßÂÔ½ûÖ¹Óû§°²×°¡£
+
+°²×°»ã±à×é¼þ [2] ʱ³ö´í¡£HRESULT: [3]¡£{{»ã±à½çÃæ: [4], º¯Êý: [5], »ã±àÃû: [6]}}
+
+
diff --git a/src/WINNT/install/wix/lang/zh_TW/ActionText.wxi b/src/WINNT/install/wix/lang/zh_TW/ActionText.wxi
new file mode 100644
index 0000000000..892b2d9491
--- /dev/null
+++ b/src/WINNT/install/wix/lang/zh_TW/ActionText.wxi
@@ -0,0 +1,143 @@
+
+
+¥¿¦b«Å¶ÇÀ³¥Îµ{¦¡
+
+¾ã²zµn¿ýȪŶ¡
+
+·j´M¤w¦w¸ËªºÀ³¥Îµ{¦¡
+
+¥¿¦bµ²¦X¥i°õÀÉ
+
+¥¿¦b·j´M²Å¦X±ø¥óªº²£«~
+
+pºâ©Ò»ÝªÅ¶¡
+
+pºâ©Ò»ÝªÅ¶¡
+
+¥¿¦b«Ø¥ß¸ê®Æ§¨
+
+¥¿¦b«Ø¥ß±¶®|
+
+§R°£ªA°È
+
+«Ø¥ß«½ÆÀÉ®×
+
+pºâ©Ò»ÝªÅ¶¡
+
+·j´M¬ÛÃöÀ³¥Îµ{¦¡
+
+¥¿¦b¬°°Ê§@²£¥Í script ¾Þ§@:
+
+¥¿¦b½Æ»sºô¸ô¦w¸ËÀÉ®×
+
+¥¿¦b½Æ»s·sªºÀÉ®×
+
+¦w¸Ë ODBC ¤¸¥ó
+
+¦w¸Ë
+
+¥¿¦b¦w¸Ë¨t²ÎÃþ§O¥Ø¿ý
+
+ÅçÃÒ¦w¸Ë
+
+ÀËÅç°õ¦æ±ø¥ó
+
+±q¬ÛÃöÀ³¥Îµ{¦¡Âà´«¥\¯àª¬ºA
+
+¥¿¦b²¾°ÊÀÉ®×
+
+¥¿¦b¤½§G²Õ¦X¸ê°T
+
+¥¿¦b¸Ñ°£¤½§G²Õ¦X¸ê°T
+
+׸ÉÀÉ®×
+
+§ó·s¤¸¥óµn¿ý
+
+µo§G¦X®æ¤¸¥ó
+
+µo§G²£«~¥\¯à
+
+µo§G²£«~¸ê°T
+
+µn¿ý Class ¦øªA¾¹
+
+µn¿ý COM+ À³¥Îµ{¦¡¤Î¤¸¥ó
+
+µn¿ý©µ¦ù¦øªA¾¹
+
+µn¿ý¦r«¬
+
+µn¿ý MIME ¸ê°T
+
+¥¿¦bµn¿ý²£«~
+
+µn¿ýµ{¦¡ÃѧO
+
+µn¿ý type libraries
+
+¥¿¦bµn¿ý¨Ï¥ÎªÌ
+
+²¾°£«½ÆÀÉ®×
+
+§ó·sÀô¹Ò¦r¦ê
+
+²¾°£À³¥Îµ{¦¡
+
+¥¿¦b²¾°£ÀÉ®×
+
+¥¿¦b²¾°£¸ê®Æ§¨
+
+¥¿¦b²¾°£ INI ÀÉ®×
+
+¥¿¦b²¾°£ ODBC ¤¸¥ó
+
+¥¿¦b²¾°£¨t²Îµn¿ýÈ
+
+¥¿¦b²¾°£±¶®|
+
+¥¿¦b·j´M²Å¦X±ø¥óªº²£«~
+
+´_ì°Ê§@:
+
+¥¿¦b²¾°£³Æ¥÷ÀÉ®×
+
+¥¿¦bµn¿ý¼Ò²Õ
+
+¸Ñ°£µn¿ý¼Ò²Õ
+
+±Ò°Ê ODBC ¥Ø¿ý
+
+±Ò°ÊªA°È
+
+°±¤îªA°È
+
+¥¿¦b²¾°£³Q²¾°ÊªºÀÉ®×
+
+¸Ñ°£µo§G¦X®æ¤¸¥ó
+
+¸Ñ°£µo§G²£«~¥\¯à
+
+¸Ñ°£µo§G²£«~¸ê°T
+
+¸Ñ°£µn¿ý Class ¦øªA¾¹
+
+¸Ñ°£µn¿ý COM+ À³¥Îµ{¦¡¤Î¤¸¥ó
+
+¸Ñ°£µn¿ý©µ¦ù¦øªA¾¹
+
+¸Ñ°£µn¿ý¦r«¬
+
+¸Ñ°£µn¿ý MIME ¸ê°T
+
+¸Ñ°£µn¿ýµ{¦¡ÃѧO
+
+¸Ñ°£µn¿ý type libraries
+
+§ó·sÀô¹Ò¦r¦ê
+
+¼g¤J INI ÀÉ®×
+
+¥¿¦b¼g¤J¨t²Îµn¿ý
+
+
diff --git a/src/WINNT/install/wix/lang/zh_TW/Error.wxi b/src/WINNT/install/wix/lang/zh_TW/Error.wxi
new file mode 100644
index 0000000000..45806e29fb
--- /dev/null
+++ b/src/WINNT/install/wix/lang/zh_TW/Error.wxi
@@ -0,0 +1,319 @@
+
+
+{{ÄY«¿ù»~: }}
+
+{{¿ù»~ [1]. }}
+
+ĵ§i [1].
+
+
+
+¸ê°T [1].
+
+Installer ¦b¦w¸Ë³oӫʸˮɹJ¨ì·N¥~¿ù»~¡C³o¥i¯àªí¥Ü³oӫʸ˦³°ÝÃD¡C¿ù»~½X¬O [1]¡C {{¤Þ¼Æ¬O: [2], [3], [4]}}
+
+
+
+{{ºÏºÐ¤wº¡: }}
+
+°Ê§@ [Time]: [1]. [2]
+
+[ProductName]
+
+{[2]}{, [3]}{, [4]}
+
+°T®§Ãþ«¬: [1], ¤Þ¼Æ: [2]
+
+=== ¶}±Ò°O¿ý®É¶¡: [Date] [Time] ===
+
+=== °±¤î°O¿ý®É¶¡: [Date] [Time] ===
+
+°Ê§@¶}©l [Time]: [1].
+
+°Ê§@µ²§ô [Time]: [1]. ¶Ç¦^È [2]¡C
+
+³Ñ¾l®É¶¡: {[1] ¤À }{[2] ¬í}
+
+°O¾ÐÅ餣¨¬¡A½Ð¥ýÃö³¬¨ä¥¦À³¥Îµ{¦¡«á«¸Õ¡C
+
+Installer ¨S¦³¦^À³¡C
+
+Installer ¤w§¹¥þ¤¤¤î¡C
+
+½Ðµy«Ý¡AWindows ¦b³]©w [ProductName]
+
+¥¿¦b»`¶°¥²nªº¸ê°T...
+
+¥¿¦b²¾°£Âª©À³¥Îµ{¦¡...
+
+·Ç³Æ²¾°£Âª©À³¥Îµ{¦¡...
+
+{[ProductName] }¦¨¥\¦a§¹¦¨¦w¸Ë¡C
+
+{[ProductName] }¦w¸Ë¥¢±Ñ¡C
+
+Ū¨úÀɮ׿ù»~: [2]¡C {{ ¨t²Î¿ù»~ [3]¡C}} ÀˬdÀɮ׬O§_¦s¦b¡A¥H¤Î±z¬O§_¦³Åv¥i¥H¦s¨ú¥¦¡C
+
+µLªk«Ø¥ßÀÉ®× '[2]'¡C¦P¦Wªº¥Ø¿ý¤w¸g¦s¦b¡A¨ú®ø¦w¸ËµM«á¹Á¸Õ¦w¸Ë¦Ü§Oªº¦ì¸m¡C
+
+½Ð´¡¤JºÏ¤ù: [2]
+
+Installer ªºÅv¤£¨¬¡AµLªk¦s¨ú³oӥؿý: [2]¡A¦w¸ËµLªkÄ~Äò¡A½Ð¥ÎºÞ²zûªº¨¥÷µn¤J¡A©Î¬O³sµ¸±zªº¨t²ÎºÞ²zû¡C
+
+¼g¤JÀɮ׮ɵo¥Í¿ù»~: [2]¡CÀˬd±z¬O§_¦³Åv¥i¥H¦s¨ú¨ºÓ¥Ø¿ý¡C
+
+Ū¨úÀɮ׮ɵo¥Í¿ù»~: [2]¡C {{ ¨t²Î¿ù»~ [3]¡C}} ÀˬdÀɮ׬O§_¦s¦b¡A¥H¤Î±z¬O§_¦³Åv¥i¥H¦s¨ú¥¦¡C
+
+¨ä¥¦ªºÀ³¥Îµ{¦¡¹ïÀÉ®× '[2]' ¿W¦û¦s¨ú¡C½ÐÃö³¬©Ò¦³¨ä¥¦ªºÀ³¥Îµ{¦¡¡AµM«á«ö "«¸Õ"¡C
+
+ºÏºÐªÅ¶¡¤£¨¬¡AµLªk¦w¸Ë³oÓÀÉ®×: [2]¡CÄÀ©ñ¤@¨ÇºÏºÐªÅ¶¡µM«á«¸Õ¡A©Î«ö "©ñ±ó" µ²§ô¡C
+
+§ä¤£¨ì¨Ó·½ÀÉ®×: [2]¡CÀˬdÀɮ׬O§_¦s¦b¡A¥H¤Î±z¬O§_¦³Åv¥i¥H¦s¨ú¥¦¡C
+
+Ū¨úÀɮ׿ù»~: [3]¡C {{ ¨t²Î¿ù»~ [2]¡C}} ÀˬdÀɮ׬O§_¦s¦b¡A¥H¤Î±z¬O§_¦³Åv¥i¥H¦s¨ú¥¦¡C
+
+¼g¤JÀɮ׮ɵo¥Í¿ù»~: [3]¡C {{ ¨t²Î¿ù»~ [2]¡C}}Àˬd±z¬O§_¦³Åv¥i¥H¦s¨ú¨ºÓ¥Ø¿ý¡C
+
+§ä¤£¨ì¨Ó·½ÀÉ®×{{(cabinet)}}: [2]¡CÀˬdÀɮ׬O§_¦s¦b¡A¥H¤Î±z¬O§_¦³Åv¥i¥H¦s¨ú¥¦¡C
+
+µLªk«Ø¥ß¥Ø¿ý '[2]'¡C¦P¦WªºÀɮפw¸g¦s¦b¡A½Ð§ó¦W©Î²¾°£¦¹ÀɮסAµM«á«¸Õ¡A©Î«ö "¨ú®ø" µ²§ô¡C
+
+¥Ø«eµL¨Ï¥ÎºÏºÐ¾÷ [2]¡A½Ð¿ï¨ú§OªººÏºÐ¾÷¡C
+
+«ü©wªº¸ô®| '[2]' µLªk¨Ï¥Î¡C
+
+µLªk¼g¤J«ü©wªº¸ê®Æ§¨ [2]¡C
+
+¹Á¸Õ±qÀÉ®×Ū¨ú®Éµo¥Íºô¸ô¿ù»~: [2]
+
+¹Á¸Õ«Ø¥ß¥Ø¿ý®Éµo¥Í¿ù»~: [2]
+
+¹Á¸Õ«Ø¥ß¥Ø¿ý®Éµo¥Íºô¸ô¿ù»~: [2]
+
+¹Á¸Õ¶}±Ò¨Ó·½Àɮ׮ɵo¥Íºô¸ô¿ù»~: [2]
+
+«ü©wªº¸ô®|¤Óªø: [2]
+
+Installer ªºÅv¤£¨¬¡AµLªkקï³oÓÀÉ®×: [2]¡C
+
+¸ê®Æ§¨¸ô®| '[2]' ªº³¡¥÷¶W¹L¨t²Î¤¹³\ªºªø«×¡A©Î°ÑÂø¨t²Î¤£¤¹³\ªº¦r¤¸¡C
+
+¸ê®Æ§¨¸ô®| '[2]' §t¦³µL®Ä¸ê®Æ§¨¸ô®|¦r¤¸¡C
+
+¸ê®Æ§¨¸ô®| '[2]' §t¦³µL®Ä¦r¤¸¡C
+
+'[2]' ¤£¬O¦³®ÄªºµuÀɦW¡C
+
+¨ú±oÀɮצw¥þ©Ê®Éµo¥Í¿ù»~: [3] GetLastError: [2]
+
+µL®ÄªººÏºÐ¾÷: [2]
+
+®M¥Î×¥¿¦ÜÀÉ®× [2] µo¥Í¿ù»~¡C¥i¯à¤w³Q¨ä¥L¤èªk§ó·s¹L¡A¨Ã¥BµLªk³Q¦¹×¥¿§ó§ï¡C½Ð±µ¬¢¦¹×¥¿µ{¦¡ªº¼t°Ó¥H¨ú±o§ó¦h°T®§¡C{{¨t²Î¿ù»~: [3]}}
+
+¦³¤@Ó¥²»ÝªºÀÉ®×µLªk¦w¸Ë¡A¦]¬°À£ÁYÀÉ [2] ¨Ã¥¼¸g¹L¼Æ¦ìñ¸p¡C¥i¯à¬OÀ£ÁYÀɤw¸g·l·´¡C
+
+¦³¤@Ó¥²»ÝªºÀÉ®×µLªk¦w¸Ë¡A¦]¬°À£ÁYÀÉ [2] ªº¼Æ¦ìñ³¹µL®Ä¡C¥i¯à¬OÀ£ÁYÀɤw¸g·l·´¡C{{ WinVerifyTrust ¶Ç¦^¿ù»~ [3]¡C}}
+
+µLªk¥¿½T½Æ»s [2] ÀÉ®×: CRC ¿ù»~¡C
+
+µLªk¥¿½T²¾°Ê [2] ÀÉ®×: CRC ¿ù»~¡C
+
+µLªk¥¿½T×¸É [2] ÀÉ®×: CRC ¿ù»~¡C
+
+µLªk¦w¸ËÀÉ®× '[2]'¡A¦]¬°¦bÀ£ÁYÀÉ '[3]' ¤¤§ä¤£¨ì³oÓÀɮסC¥i¯à¬Oºô¸ôµo¥Í°ÝÃD¡B¥úºÐŪ¨ú¦³°ÝÃD¡B©Î¬O«Ê¸Ë¦³°ÝÃD¡C
+
+¦w¸Ë¥²»ÝªºÀ£ÁYÀÉ '[2]' ¤w·l·´µLªk¨Ï¥Î¡C¥i¯à¬Oºô¸ôµo¥Í°ÝÃD¡B¥úºÐŪ¨ú¦³°ÝÃD¡B©Î¬O«Ê¸Ë¦³°ÝÃD¡C
+
+«Ø¥ß¦w¸Ë©Ò¥²»Ýªº¼È¦sÀɮ׮ɵo¥Í¿ù»~¡C{{ ¸ê®Æ§¨: [3]¡C¨t²Î¿ù»~½X: [2]}}
+
+µLªk«Ø¥ß¾÷½X: [2]¡C {{ ¨t²Î¿ù»~ [3]¡C}} Àˬd±z¬O¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk¶}±Ò¾÷½X: [2]¡C {{ ¨t²Î¿ù»~ [3]¡C}} Àˬd±z¬O¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk§R°£È: [2] ±q¾÷½X [3]¡C {{ ¨t²Î¿ù»~ [4]¡C}} Àˬd±z¬O¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk§R°£¾÷½X: [2]¡C {{ ¨t²Î¿ù»~ [3]¡C}} ½ÐÀˬd±z¬O§_¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk±q¾÷½X [3] Ū¨úÈ [2]¡C {{ ¨t²Î¿ù»~ [4]¡C}} ½ÐÀˬd±z¬O§_¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk¼g¤JÈ [2] ¦Ü¾÷½X [3]¡C {{ ¨t²Î¿ù»~ [4]¡C}} ½ÐÀˬd±z¬O§_¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk¨ú¾÷½X [2] ªºÈ¦WºÙ¡C{{ ¨t²Î¿ù»~ [3]¡C}} ½ÐÀˬd±z¬O§_¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk¨ú¤l¾÷½X [2] ªºÈ¦WºÙ¡C{{ ¨t²Î¿ù»~ [3]¡C}} ½ÐÀˬd±z¬O§_¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªkŪ¨ú¾÷½X [2] ªº¦w¥þ©Ê¸ê°T¡C{{ ¨t²Î¿ù»~ [3]¡C}} ½ÐÀˬd±z¬O§_¦³¨¬°÷ªºÅv¦s¨ú¸Ó¾÷½X¡A©Î¬O³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk¼W¥[¥i¥Îªºµn¿ýªÅ¶¡¡C¦¹À³¥Îµ{¦¡¶·n [2] KB ¥H¤WªºªÅ¶¡¡C
+
+¨ä¥¦ªº¦w¸Ë¥¿¦b¶i¦æ¤¤¡A±z¥²¶·§¹¦¨¸Ó¶µ¦w¸Ë¤§«á¤~¯àÄ~Äò¡C
+
+¦s¨ú¦w¥þ©Ê¸ê®Æ®Éµo¥Í¿ù»~¡A½Ð½T©w Windows Installer ¬O§_¥¿½T¦a³Q³]©w¡AµM«á¦A¸Õ¤@¦¸¡C
+
+¨Ï¥ÎªÌ '[2]' ¤w¥ý«e¦w¸Ë¤F²£«~ '[3]'¡C¨Ï¥ÎªÌ¥²¶·¦A¤@¦¸°õ¦æ¦w¸Ë¥H¨Ï¥Î¦¹²£«~¡C±z¥Ø«eªº¦w¸Ë±N·|Ä~Äò¡C
+
+¨Ï¥ÎªÌ '[2]' ¤w¥ý«e¦w¸Ë¤F²£«~ '[3]'¡C¨Ï¥ÎªÌ¥²¶·¦A¤@¦¸°õ¦æ¦w¸Ë¥H¨Ï¥Î¦¹²£«~¡C
+
+ºÏºÐªÅ¶¡¤£¨¬ -- ºÏºÐ¾÷: '[2]'; »ÝnªÅ¶¡: [3] KB; ¥i¥ÎªÅ¶¡: [4] KB¡AÄÀ©ñ¤@¨ÇªÅ¶¡«á¦A«¸Õ¡C
+
+±z½T©wn¨ú®ø¶Ü ?
+
+ÀÉ®× [2][3] ¥¿³Q¤U¦CÀ³¥Îµ{¦¡: '[6]'{{, ¦WºÙ: [4], Id: [5]}}¡AÃö³¬¸ÓÀ³¥Îµ{¦¡µM«á«¸Õ¡C
+
+¤w¸g¦w¸Ë²£«~ '[2]'¡A·|ªý¤î±z¦w¸Ë³o¶µ²£«~¡A³o¨â¶µ²£«~¤£¬Û®e¡C
+
+ºÏºÐ°Ï '[2]' ªºªÅ¶¡¤£¨¬¡AµLªkÄ~Äò°õ¦æ´_ì¡CÁÙ»Ýn [3] KB¡A¦ýºÏºÐ¤W¥u¦³ [4] KB¡C½Ð«ö "²¤¹L" ¨Ó¸õ¹LÀx¦s´_ì¸ê°T¨ÃÄ~Äò°õ¦æ¦w¸Ë¡C©Î«ö "«¸Õ" «·sÀˬd¥i¥ÎªººÏºÐªÅ¶¡¡C©Î«ö "¨ú®ø" ¨Óµ²§ô¦w¸Ë¡C
+
+µLªk¦s¨úºô¸ô¦ì¸m [2]¡C
+
+Ä~Äò¦w¸Ë¤§«e¤U¦CÀ³¥Îµ{¦¡À³¸Ó³QÃö³¬:
+
+µLªk§ä¨ì¥ý«e¦w¸Ë¦b³o¥x¾÷¾¹¤Wªº²£«~¡C
+
+¦b®M¥Î¦w¥þ©Ê³]©w®Éµo¥Í¿ù»~¡C[2] ¤£¬O¦³®Äªº¨Ï¥ÎªÌ©Î¸s²Õ¡C¥i¯à¬O«Ê¸Ë¦³°ÝÃD¡Bºô¸ôªººô°ì±±¨î¯¸³s½u¦³°ÝÃD¡C½ÐÀˬd±zªººô¸ô³s½u«á«ö "«¸Õ"¡C©Î«ö "¨ú®ø" ¨Óµ²§ô¦w¸Ë¡C{{§ä¤£¨ì¨Ï¥ÎªÌªº SID¡A¨t²Î¿ù»~ [3]}}
+
+ÃѧO½X [2] µL®Ä¡A½ÐÀˬd±z¿é¤JªºÃѧO½X¬O§_¥¿½T¡C
+
+Installer ¥²¶·«·s±Ò°Ê±zªº¨t²Î¤~¯àÄ~Äò³]©w [2]¡A«ö "¬O" ¥ß§Y«·s±Ò°Ê¡A«ö "§_"¡A¦pªG±z·Qnµy«á¤â°Ê«·s±Ò°Ê¡C
+
+Installer ¥²¶·«·s±Ò°Ê±zªº¨t²Î¡A¹ï [2] ³]©wªºÅܧó¤~·|¥Í®Ä¡A«ö "¬O" ¥ß§Y«·s±Ò°Ê¡A«ö "§_"¡A¦pªG±z·Qnµy«á¤â°Ê«·s±Ò°Ê¡C
+
+¦w¸Ë [2] ¥Ø«e³Q¼È°±¡A±z¥²¶·´_ì¸Ó¦w¸Ë©Ò°µªºÅܧó¤~¯àÄ~Äò¡A±zn´_ì³o¨ÇÅܧó¶Ü ?
+
+¥t¤@Ó¦w¸Ë³oÓ²£«~ªºµ{¦¡¥¿¦b¶i¦æ¤¤¡A±z¥²¶·´_ì¸Ó¦w¸Ë©Ò°µªºÅܧó¤~¯àÄ~Äò¡A±zn´_ì³o¨ÇÅܧó¶Ü ?
+
+§ä¤£¨ì²£«~ [2] ªº¦³®Ä¨Ó·½¡AWindows Installer µLªkÄ~Äò¡C½Ð¹Á¸Õ¨Ï¥Î¥¿½Tªº¦w¸Ë«Ê¸Ë '[3]' ¦A¦w¸Ë¤@¦¸¡C
+
+¦¨¥\§¹¦¨¦w¸Ë¡C
+
+¦w¸Ë¥¢±Ñ¡C
+
+²£«~: [2] -- [3]
+
+±z¥i¥H±N¹q¸£ÁÙ즨¥ý«eªºª¬ºA©Î¬Oµy«áÄ~Äò¦w¸Ë¡A±znÁÙì¶Ü ?
+
+¼g¤J¦w¸Ë¸ê°T¦ÜºÏºÐ®Éµo¥Í¿ù»~¡A½T©wºÏºÐªºªÅ¶¡¨¬°÷¡A¨Ã«ö "«¸Õ"¡A©Î«ö "¨ú®ø" ¨Óµ²§ô¦w¸Ë¡C
+
+§ä¤£¨ìÁÙì±zªº¹q¸£¦¨¤§«eªºª¬ºA©Ò»Ýªº¤@өΦhÓÀɮסC
+
+[2] µLªk¦w¸Ë¨ä¸Ë¨ä¤¤¤@Ó¥²¶·ªº²£«~¡C½Ð±µ¬¢§Þ³N¤ä´©¤Hû¡C {{¨t²Î¿ù»~: [3].}}
+
+ª©¥»ªº [2] µLªk²¾°£¡C½Ð±µ¬¢§Þ³N¤ä´©¤Hû¡C {{¨t²Î¿ù»~: [3].}}
+
+¤w¦w¸Ë [2]
+
+¤w³]©w [2]
+
+¤w²¾°£ [2]
+
+ÀÉ®× [2] ¤w³Q¼Æ¦ìñ³¹ì«h©Ò©Úµ´¡C
+
+µLªk¦s¨ú Windows Installer ªA°È¡C¥i¯à¬O¦]¬° Windows ³B©ó¦w¥þ¼Ò¦¡¡A©Î¬O Windows Installer ¨Ã¥¼¥¿½T¦w¸Ë¡C½Ð³sµ¸±zªº¤ä´©¤Hû¡C
+
+Windows Installer «Ê¸Ë¦³°ÝÃD¡CµLªk°õ¦æ¦w¸Ë©Ò»Ýªº«ü¥O½X¡C½Ð³sµ¸±zªº¤ä´©¤Hû©Î«Ê¸Ë»s³y°Ó¡C {{¦Ûq°Ê§@ [2] «ü¥O½X¿ù»~ [3]¡A[4]: [5] ²Ä [6] ¦æ¡A²Ä [7] Äæ¡A[8] }}
+
+Windows Installer «Ê¸Ë¦³°ÝÃD¡CµLªk°õ¦æ¦w¸Ë©Ò»Ýªºµ{¦¡¡C½Ð³sµ¸±zªº¤ä´©¤Hû©Î«Ê¸Ë»s³y°Ó¡C {{°Ê§@: [2]¡A¦ì¸m: [3]¡A©R¥O: [4] }}
+
+Windows Installer «Ê¸Ë¦³°ÝÃD¡C¦w¸Ë®É©Òn°õ¦æªºµ{¦¡¨Ã¥¼¦p¹w´Á§¹¦¨¡C½Ð³sµ¸±zªº¤ä´©¤Hû©Î«Ê¸Ë»s³y°Ó¡C {{°Ê§@: [2]¡A¦ì¸m: [3]¡A©R¥O: [4] }}
+
+Windows Installer «Ê¸Ë¦³°ÝÃD¡CµLªk°õ¦æ¦w¸Ë©Ò»Ýªº DLL¡C½Ð³sµ¸±zªº¤ä´©¤Hû©Î«Ê¸Ë»s³y°Ó¡C {{°Ê§@: [2]¡A¶µ¥Ø: [3]¡Aµ{¦¡®w: [4] }}
+
+¤w¦¨¥\²¾°£¡C
+
+²¾°£¥¢±Ñ¡C
+
+¤w¦¨¥\³qª¾¡C
+
+³qª¾¥¢±Ñ¡C
+
+¤w¦¨¥\³]©w¡C
+
+³]©w¥¢±Ñ¡C
+
+±z¥²¶·¬O¨t²ÎºÞ²zû¤~¯à²¾°£³oÓÀ³¥Îµ{¦¡¡C±z¥i¥H¥Î¨t²ÎºÞ²zû¨¤Àµn¤J¨Ó²¾°£µ{¦¡¡A©Î³sµ¸±zªº§Þ³N¤ä´©¤Hû¨Ó¨ó§U±z¡C
+
+¸ô®| [2] µL®Ä¡A½Ð«ü©w¦³®Äªº¸ô®|¡C
+
+°O¾ÐÅ餣¨¬¡A½Ð¥ýÃö³¬¨ä¥¦À³¥Îµ{¦¡«á«¸Õ¡C
+
+ºÏºÐ¾÷ [2] ¤¤¨S¦³ºÏ¤ù¡A½Ð´¡¤JºÏ¤ùµM«á«¸Õ¡A©Î«ö "¨ú®ø" ¦^¨ì¤W¦¸¿ï¨úªººÏºÐ¾÷¥N¸¹¡C
+
+ºÏºÐ¾÷ [2] ¤¤¨S¦³ºÏ¤ù¡A½Ð´¡¤JºÏ¤ùµM«á«¸Õ¡A©Î«ö "¨ú®ø" ¦^¨ìÂsÄý¹ï¸Ü¤è¶ô¡A¨Ã¿ï¨ú§OªººÏºÐ¾÷¥N¸¹¡C
+
+¸ê®Æ§¨ [2] ¤£¦s¦b¡A½Ð¿é¤J¤@Ó«ü¦V²{¦s¸ê®Æ§¨ªº¸ô®|¡C
+
+±zªºÅv¤£¨¬¡AµLªkŪ¨ú³oÓ¸ê®Æ§¨¡C
+
+µLªk¨M©w¥¿½Tªº¥Ø¦a¸ê®Æ§¨¡C
+
+¹Á¸ÕŪ¨ú¨Ó·½¦w¸Ë¸ê®Æ®w®Éµo¥Í¿ù»~: [2]¡C
+
+¥¿¦b±Æ©w«·s¶}¾÷§@·~: ¥¿¦b§ó§ïÀɮצWºÙ [2] ¦¨ [3]¡A¥²¶·«·s¶}¾÷¤~¯à§¹¦¨§@·~¡C
+
+¥¿¦b±Æ©w«·s¶}¾÷§@·~: ¥¿¦b§R°£ÀÉ®× [2]¡A¥²¶·«·s¶}¾÷¤~¯à§¹¦¨§@·~¡C
+
+¼Ò²Õ [2] µn¿ý¥¢±Ñ¡C HRESULT [3]. ³sµ¸±zªº¤ä´©¤Hû¡C
+
+¼Ò²Õ [2] µn¿ý¥¢±Ñ¡C HRESULT [3]. ³sµ¸±zªº¤ä´©¤Hû¡C
+
+µLªk§Ö¨ú [2]. ¿ù»~: [3]. ½Ð³sµ¸¤ä´©¤Hû¡C
+
+µLªkµn¿ý¦r«¬ [2]¡C½Ð½T»{±z¦³¨¬°÷ªºÅv¤Î¨t²Î¤ä´©¡C
+
+µLªk¸Ñ°£µn¿ý¦r«¬ [2]¡C½Ð½T»{±z¦³¨¬°÷ªºÅv¨Ó²¾°£¦r«¬¡C
+
+µLªk«Ø¥ß±¶®| [2]¡C½Ð½T»{¥Ø¦a¸ê®Æ§¨¬O§_¦s¦b¤Î±zªº¦s¨úÅv¡C
+
+µLªk²¾°£±¶®| [2]¡C½Ð½T»{¥Ø¦a¸ê®Æ§¨¬O§_¦s¦b¡A¤Î±z¬O§_¦³¦s¨úÅv¡C
+
+µLªkµn¿ýÀÉ®× [2] ªºÃþ«¬µ{¦¡®w¡C½Ð³sµ¸¨t²Î¤ä´©¤Hû"¡C
+
+µLªk¸Ñ°£µù¥UÀÉ®× [2] ªºÃþ«¬µ{¦¡®w¡C½Ð³sµ¸¨t²Î¤ä´©¤Hû"¡C
+
+µLªk§ó·s ini ÀÉ [2][3]¡C ½Ð½T»{Àɮ׬O§_¦s¦b¡A¤Î±z¬O§_¦³¦s¨úÅv¡C
+
+µLªk¹w©w¦b«¶}¾÷®É±NÀÉ®× [2] ¨ú¥N [3] ¡C½Ð½T»{±z¬O§_¦³ [3] ªº¦s¨úÅv¡C
+
+²¾°£ ODBC ÅX°Êµ{¦¡ºÞ²zû¿ù»~¡AODBC ¿ù»~ [2]: [3]¡C½Ð³sµ¸¨t²Î¤ä´©¤Hû¡C
+
+¦w¸Ë ODBC ÅX°Êµ{¦¡ºÞ²zû¿ù»~¡AODBC ¿ù»~ [2]: [3]¡C½Ð³sµ¸¨t²Î¤ä´©¤Hû¡C
+
+²¾°£ ODBC ÅX°Êµ{¦¡ºÞ²zû¿ù»~[4]¡AODBC ¿ù»~ [2]: [3]¡C½Ð½T»{±z¬O§_¦³¨¬°÷Åv¡C
+
+¦w¸Ë ODBC ÅX°Êµ{¦¡ºÞ²zû¿ù»~[4]¡AODBC ¿ù»~ [2]: [3]¡C½Ð½T»{ÀÉ®× [4] ¦s¦b¨Ã¥i¦s¨ú¡C
+
+³]©w ODBC ÅX°Êµ{¦¡ºÞ²zû¿ù»~[4]¡AODBC ¿ù»~ [2]: [3]¡C½Ð½T»{ÀÉ®× [4] ¦s¦b¨Ã¥i¦s¨ú¡C
+
+ªA°È '[2]' ([3]) µLªk±Ò°Ê¡C½Ð½T»{±z¬O§_¦³¨¬°÷Åv¡C
+
+ªA°È '[2]' ([3]) µLªk°±¤î¡C½Ð½T»{±z¬O§_¦³¨¬°÷Åv¡C
+
+ªA°È '[2]' ([3]) µLªk§R°£¡C½Ð½T»{±z¬O§_¦³¨¬°÷Åv¡C
+
+ªA°È '[2]' ([3]) µLªk¦w¸Ë¡C½Ð½T»{±z¬O§_¦³¨¬°÷Åv¡C
+
+µLªk§ó·sÀô¹ÒÅÜ¼Æ '[2]'¡C½Ð½T»{±z¬O§_¦³¨¬°÷Åv¡C
+
+±z¨S¦³¨¬°÷ªºÅv§¹¦¨©Ò¦³¨Ï¥ÎªÌªº¦w¸Ë¡C½Ð¥Î¨t²ÎºÞ²zû¨¥÷µn¤J¦A«·s¦w¸Ë¤@¦¸¡C
+
+µLªk³]©wÀÉ®× '[3]' ªº¦w¥þ¸ê°T¡C¿ù»~: [2]¡C ½Ð½T»{±z¬O§_¦³¨¬°÷Åv¡C
+
+Component Services (COM+ 1.0) ¨Ã¥¼¦w¸Ë³o¥x¹q¸£¤W¡C³oÓ¦w¸Ë¥²¶·¦³ Component Services ¤~¯à¦w¸Ë¦¨¥\¡CComponent Services ¤º«Ø¦b Windows 2000¡C
+
+µn¿ý COM+ À³¥Îµ{¦¡¿ù»~¡C ½Ð±µ¬¢§Þ³N¤ä´©¤Hû¡C
+
+¸Ñ°£µn¿ý COM+ À³¥Îµ{¦¡¿ù»~¡C ½Ð±µ¬¢§Þ³N¤ä´©¤Hû¡C
+
+µLªkÅܧóªA°È '[2]' ([3]) ªº±Ôz¡C
+
+Windows Installer ªA°ÈµLªk§ó°Ê¨t²ÎÀÉ®× [2] ¡A¦]¬°¤w³Q Windows ©Ò«OÅ@¡C±z¥i¯àn§ó·s§@·~¨t²Î¨Ï¦¹µ{¦¡¥¿±`¤u§@¡C{{«Ê¸Ëª©¥»: [3], OS «OÅ@ª©¥»: [4]}}
+
+Windows Installer ªA°ÈµLªk§ó°Ê¨t²Î«OÅ@ÀÉ®× [2]¡C {{«Ê¸Ëª©¥»: [3], OS «OÅ@ª©¥»: [4], SFP ¿ù»~: [5]}}
+
+Windows Installer ªA°ÈµLªk§ó·s¬Y¨Ç³Q¨¾¼g«OÅ@ªº Windows ÀɮסC {{SFP ¿ù»~: [2]¡C¨¾¼gÀɮײM³æ:\r\n[3]}}
+
+³o¥x¾÷¾¹ªºì«h¸T¤î¨Ï¥ÎªÌ¦w¸Ë¡C
+
+¦b¦w¸Ë²Õ¦X¤¸¥ó [2] ®Éµo¥Í¿ù»~¡CHRESULT: [3]¡C {{²Õ¦X¤¶±: [4]¡A¥\¯à: [5]¡A²Õ¦X¦WºÙ: [6]}}
+
+
diff --git a/src/WINNT/install/wix/language_config.wxi b/src/WINNT/install/wix/language_config.wxi
new file mode 100644
index 0000000000..d82090eb31
--- /dev/null
+++ b/src/WINNT/install/wix/language_config.wxi
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WINNT/install/wix/openafs.wxs b/src/WINNT/install/wix/openafs.wxs
new file mode 100644
index 0000000000..d2e48c6159
--- /dev/null
+++ b/src/WINNT/install/wix/openafs.wxs
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 500]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IBMAFS_UPGRADE OR OPENAFS_UPGRADE
+ NSISUNINSTALL <> "" AND UILevel >= 4
+ NSISUNINSTALL <> "" AND UILevel < 4
+
+ &feaLoopback=2 OR &feaLoopback=3
+ &feaLoopback=3
+ &feaLoopback=3
+
+ &feaLoopback=3
+
+ &feaClient=3
+ &feaClient=3
+ &feaClient=2
+ &feaClient=3
+ &feaServer=3
+ &feaClient=3 OR &feaServer=3 OR &feaClient=2 OR &feaServer=2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WINNT/install/wix/property.wxi b/src/WINNT/install/wix/property.wxi
new file mode 100644
index 0000000000..1938f965f5
--- /dev/null
+++ b/src/WINNT/install/wix/property.wxi
@@ -0,0 +1,102 @@
+
+
+
+ $(var.CellName)
+ $(var.LogonOptions)
+ $(var.FreelanceMode)
+ $(var.UseDNS)
+ $(var.NoFindLanaByName)
+ $(var.MountRoot)
+ $(var.NetbiosName)
+ $(var.RxMaxMTU)
+ $(var.HideDotFiles)
+
+
+
+ openafs-info@openafs.org
+ http://openafs.org
+ http://openafs.org
+ http://openafs.org
+
+
+ 1
+ INSTALL
+ 100
+
+ Typical
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(loc.StrNsisAbortReason)
+
+
diff --git a/src/WINNT/install/wix/runtime.wxi b/src/WINNT/install/wix/runtime.wxi
new file mode 100644
index 0000000000..569d0160d1
--- /dev/null
+++ b/src/WINNT/install/wix/runtime.wxi
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/WINNT/install/wix/runtime_debug.wxi b/src/WINNT/install/wix/runtime_debug.wxi
new file mode 100644
index 0000000000..c3c496b4fd
--- /dev/null
+++ b/src/WINNT/install/wix/runtime_debug.wxi
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+