2008年10月20日星期一

如何在Vista上安装.NET 1.1

Windows Vista comes packaged with Microsoft .NET Framework 2.0 and 3.0, but not version .NET 1.1, which may still required by some applications such as QuickBooks 7, GFI Report Packs, VS.NET 2003, InstallShield 11.5, and many other developed software.

However, when trying to install Microsoft .NET Framework 1.1 (dotnetfx.exe) on Windows Vista, one or more error messages similar to one of the following text will appear, and stop or prevent setup installation of .NET Framework 1.1 from continuing successfully.

  • RegSvcs.exe - Common Language Runtime Debugging Services
    Application has generated an exception that could not be handled.Process id=0xe50 (3664), Thread id=0xd44 (3396).
    Click OK to terminate the application.Click CANCEL to debug the application.
    If user click “OK’, the installation of .NET 1.1 will be cancelled, while clicking “CANCEL” produces another error message similar to below:
  • RegSvcs.exe - No debugger found
    Registered JIT debugger is not available. An attempt to launch a JIT debugger with the following command resulted in an error code of 0×2 (s). Please check computer settings.
    cardbg.exe !a 9×8e

In Even Viewer of Vista, the following log or similar can be seen:

  • Source: MsiInstallerEvent ID: 1030Description:Product: Microsoft .NET Framework 1.1. The application tried to install a more recent version of the protected Windows file C:\Windows\Microsoft.NET\Framework\sbs_wminet_utils.dll. You may need to update your operating system for this application to work correctly. (Package Version: 1.0.0.0, Operating System Protected Version: 1.0.0.0).
  • Source: MsiInstallerEvent ID: 1030Description:Product: Microsoft .NET Framework 1.1. The application tried to install a more recent version of the protected Windows file C:\Windows\Microsoft.NET\Framework\sbs_system.enterpriseservices.dll. You may need to update your operating system for this application to work correctly. (Package Version: 1.0.0.0, Operating System Protected Version: 1.0.0.0).
The error pops up in the end of .NET Framework 1.1 setup when it’s almost finished, and is registering “System.EnterpriseServices.dll” when the error occurs, time remaining for the installatin process shows 0 seconds.


Why exactly the error occurs when installing Microsoft .NET Framework 1.1 in Windows Vista is not known, as the issue happens randomly. It may affect both 32-bit and 64-bit Vista system, but not all system will have the issue. But one thing is for sure. Microsoft .NET Framework 1.1 SP1 (Service Pack 1) has resolved the issue. However, Microsoft does not provide download to standalone .NET Framework 1.1 installer that integrated with SP1.

Thus, the workaround to fix the Microsoft.NET Framework 1.1. installation error on Vista is to slipstream .NET Framework 1.1 SP1 into .NET Framework 1.1 installer, so that both the .NET Framework and the Service Pack can be installed at the same time.

To slipstream .NET 1.1 SP1 into .NET Framework setup package to have a integrated .NET Framework 1.1 SP1 installer, follow steps in this trick:

1. Create a new folder named DotNet in C:\ drive (C:\DotNet is used in this guide, you can change to any folder you prefer, but ensure that you use correct path in the following steps).
2. Download Microsoft .NET Framework 1.1 Redistributable Package (dotnetfx.exe). Make sure the setup file is saved as dotnetfx.exe.
3. Download Microsoft .NET Framework 1.1 Service Pack 1 (NDP1.1sp1-KB867460-X86.exe). Make sure that the file is renamed and saved as dotnetfxsp1.exe, so that the rest of the steps can be followed easily.
4. Move both installation files into the same directory (i.e. C:\DotNet), if you’re not saving them together.
5. Open command prompt as Administrator.
6. Change to the directory where the two installation setup files for .NET 1.1 are saved (i.e. C:\DotNet).

7. Run the following commands one by one, press Enter after each one.

dotnetfx.exe /c:"msiexec.exe /a netfx.msi TARGETDIR=C:\DotNet"
If you’re not using C:\DotNet directory, change the target to your path accordingly.
Then click on “Yes” when prompted to answer “would you like to install Microsoft .NET Framework 1.1. Package?”
Wait for the uncompression, extraction and setup to complete with the display of the following dialog which says installation complete.

dotnetfxsp1.exe /Xp:C:\DotNet\netfxsp.msp
No status message for this step.

msiexec.exe /a c:\DotNet\netfx.msi /p c:\DotNet\netfxsp.msp
Wait for Windows Installer for Microsoft .NET Framework 1.1 to finish and disappear automatically.

Install Microsoft .Net Framework 1.1 with slipstreamed/integrated Service Pack 1 by running netfx.msi created in the working folder.
netfix.msi

现在用Vista安装了VS2003后出现了一个严重的问题,使用Find In Files功能时, VS2003会停止响应。上网找相关信息,有人已经报告这个问题了。不过MS说不管VS2003了。

后来发现了另外一台VISTA的电脑不存在这个问题,一对比原来是Windows Themes的问题。只要把Windows外观,改成比较难看的标准模式(就像WIN2000那样...)就能把问题解决掉了。

用Microsoft Cluster实现服务器群集

  大网站每天承受上千万的访问量,而服务器却依然能够应付自如;网络空间服务商所提供的大量空间,而却收费低廉,的确这些情况有点让人难以理解,难道天下真的有性能如此之高的服务器单机?其实则不然,支持这些大量访问和无数数据请求的是服务器群集。
  服务器群集是由一组各自独立的服务器连接而成,利用硬件和软件合理分配网络负荷,达到提高整体服务性能的服务器的集合。
  那么如何架设服务器群集呢?其过程并不复杂,利用Windows2000高级服务器版所提供的实用功能,可以轻松地完成群集服务器的架设。

  预备知识
  Windows Cluster
  Windows高级服务器版中提供的负载平衡工具,可以为服务器群集中的服务器合理分配任务,并避免因某一台服务器出现问题而导致的服务失败。
  心跳网线
  用于连接服务器群集中两大服务器间的网线,一般在服务器群集中的服务器都配有两块网卡,其中一块专门用于两台服务器(节点)间的通讯,来检测各自的运行状态,一旦某一节点没有了响应则证明该服务器出现了故障,这种侦测的过程被称作“心跳”。
  磁盘阵列
  由一组硬盘组成的磁盘集合,支持热插拔,一般使用SCSI的连接模式,磁盘阵列大多安装在专用的磁盘阵列柜中。
  PERC 2/DC CARD是用于连接存储外围设备的硬件,它内置了可读写的ROM存储器,可以根据用户的需要进行出厂后的二次设置,PERC 2/DC CARD多使用在服务器群集中,用于连接磁盘阵列。

  方案实施1:服务器基本配置
  接下来开始配置服务器:
  1. 给服务器1和服务器2连接网线,其中在两块Realtek Pci Ethernet 10M网卡间连接心跳网线,将Intel Pro 100+ Network Card连接到集线器或交换机上。
  2. 为服务器1安装Windows2000高级服务器版。
  3. 启动服务器1,分别配置服务器上的两块网卡,其中连接心跳网线的使用内部网内的保留IP地址(如:192.168.0.1),另一块网卡使用服务器对外的IP地址。同时把服务器1设置为域控制器。
  4. 为服务器2安装Windows2000高级服务器版,并将服务器2加入到先前服务器1所设置的域中,同样将服务器2的两块网卡分别设置不同的IP地址,注意两台服务器均需要使用同类型的网卡,并且网卡要配置同类的IP地址(例如均为C类地址)。
  在完成以上步骤后,服务器的软硬件设置就基本上完毕了。但是接下来才是群集服务配置中最关键的步骤——配置Windows Cluster!

  方案实施2:配置Windows Cluster
  配置两台服务器的SCSI磁盘
  启动服务器1,但不启动服务器2。如果在服务器群集中使用了外置磁盘阵列,则需要在Windows2000中根据型号的不同升级PERC 2/DC的驱动程序。在使用了RAID磁盘阵列的情况下,用户还必须根据所使用的PERC 2/DC CARD的情况配置它,其配置过程与BIOS的配置有些类似,主要涉及到系统跳线方式、中断模式等参数,它能够与Windows2000高级服务器版的均衡负载服务协同工作。
  进入管理工具中的计算机管理,选择其中的磁盘管理,在这里会显示当前所有使用的磁盘。一般情况下,在首次使用磁盘管理时会显示签名和升级磁盘向导,该向导主要用于提高访问磁盘的安全性。
  服务器群集中的磁盘在进行读写时磁盘必须处于基本状态,用户可以用右键快捷菜单来更改磁盘的状态。
  接下来配置服务器内置的SCSI磁盘,右键单击第一个磁盘,选择创建磁盘。
  确认主分区被选择,并且已启动使用最大磁盘空间选项,为第一个磁盘分配盘符,一般是倒序排列,即第一个磁盘使用盘符Z。
  确认当前磁盘使用NTFS格式,完成配置向导,第一块磁盘开始格式化,重复以上步骤即可完成对多个SCSI磁盘的配置。按照以上步骤也配置服务器2的全部SCSI磁盘,注意服务器2的SCSI磁盘所使用的盘符应与服务器1的不同。
  关闭服务器2,重新启动服务器1,进入计算机管理中的磁盘管理,可以看到除了刚才配置的磁盘,又多出了一些磁盘,根据它们的顺序,分别使用服务器2的盘符更改它们的驱动器名称和路径。关闭服务器1,启动服务器2,并重复上面的步骤,就可以完成两台服务器的SCSI磁盘共享了。在大多数小型机或服务器中,对于SCSI磁盘都提供了主机断电后的多路电源支持,所以在个别服务器断电后,其所使用的SCSI磁盘仍可以被服务器群集中的其他服务器访问到。

  方案实施3:配置服务器的群集服务
  需要注意,两台服务器都必须配置群集服务,才能保证系统的均衡负载,群集服务可以通过安装完成Windows2000高级服务器版后,第一次启动系统REBOOT时弹出的窗口完成的,在配置服务器群集服务时需要保持两台服务器同时启动。
  1.配置服务器1的群集服务
  在启动服务器时,会弹出安装完成的对话框,用户也可以通过管理工具中的配置服务器的安装来完成打开这个窗口。
  在弹出的窗口中,单击“配置”,窗口中会出现一些有关配置服务器的说明,单击“下一步”即可。
  在选择安装节点名称时,为服务器1选择第一个节点。
  输入本服务器群集的名称,在这里一般使用同域相同的名称,例如输入“POPUNET”。
  为域账户设置用户名和密码,这个域与先前设置的域相类似,但添加了管理服务器群集的功能,为了方便起见,一般使用与域控制器相同的用户名和密码。
  点击“下一步”可以进入共享磁盘窗口,可以看到先前设置过的共享磁盘。
  单击“下一步”,选择群集文件存储的目录,注意这些文件要存储在共享磁盘中,一般选择首磁盘Z。
  单击“下一步”,将INTEL PRO 100+ NETWORK CARD网卡配置为连接外部网络,将Realtek PCI Ethernet 10M网卡配置为连接内部网群集。
  在这一步中要为服务器群集配置一个IP地址,注意这个IP地址就是该群集在互联网上的地址,同时将服务器群集的子网掩码设置为255.255.255.0,单击完成,至此即完成了对服务器1的群集配置。
  2.配置服务器2的群集服务。
  服务器2的群集服务配置与服务器1的配置大体相同,这里主要指出它们的不同之处。
  在选择安装节点名称时,使用第二个或者下一个节点。
  服务器2的群集名称应与服务器一所设置的群集名称相同,否则会出现共享磁盘不能互相访问的情况。
  设置域账户时也要使用与服务器1相同的设置。
  到这里,服务器群集的安装就已经基本完成了,接下来就可以根据服务器在网络中发挥的具体功能,分别配置服务器的其他服务了。注意在服务器群集中的服务器在配置其他诸如:WEB、SMTP、NNTP等服务时必须使用相同的设置,不然的话服务器的工作是非常不稳定的。
  方案校验:服务器群集的测试
  如果要检验该方案实施的可行性,可以用非域控制器的服务器中的“群集管理”功能。
  进入“群集管理”界面可以看到当前群集服务器中的全部服务器,其中处于被访问状态的服务器会显示为一个绿色的“UP”字样,分别点击各个服务器,可以对它们的群集服务属性进行设置。同时用户使用群集内的任意一台服务器都可以浏览所有共享磁盘(如图5),关闭任意一台服务器或多台服务器后,再使用其他计算机访问该服务器群集,仍然可以正常访问。证明方案实施成功!

  注意事项
  1.实现服务器群集至少需要两台计算机,分别作为主、从服务器。
  2. 从服务器的硬盘大小必须能够镜像主服务器上所有必要的分区。Windows2000不支持跨越不同硬盘的分区并镜像,所以不能将一个硬盘上的分区镜像到两个较小容量的硬盘上。
  3.至少需要两块用作专用数据链路的Intel PRO/100B网卡。
  4. 专用数据连线(心跳线)可以用五类或超五类双绞线制作。
  5. 专用数据连线的制作方法是将1和2、3和6反接(网卡之间互联时,连接线均为此接法)。
  6. 最好定期备份数据,以防万一。

  服务器群集工作原理
  实施负载平衡的服务器群集中,处理请求被分布于各服务器。负载平衡群集中的各个不同的服务器分担处理负载,但不共享磁盘阵列或内存等资源。如果其中一个服务器发生故障,处理负载可以被简单地重新分布于群集中幸存的各个节点。

2008年10月13日星期一

经济实用型 HTPC 配置

随着IT技术的进步,人们对娱乐要求已经越来越高,追求的是便捷,追求的是在家里就能享受到高品质的娱乐生活。随着数字家庭理念的逐步深入,高清、无线、多媒体功能等元素都被放入高品质娱乐生活当中。HTPC作为电脑与现代家电结合的典型代表,已经逐渐成为人们实现数字家庭理念的一个重要途径。

今年7月份,自己DIY了一台性价比相当高的HTPC。DIY的目标非常明确,这台HTPC就是放在客厅里连接46吋的三星液晶平板电视,主要用于从网上下载电影和电视剧,以及播放照片等。

主要在主板、机箱、无线键盘的选择上费了点心思。选用了具备H.264高清硬解码能力的AMD主板以及板载ATI显卡,这是AMD收购ATI之后推出的一款相当不错的整合主板。该主板提供了全面丰富的接口,包括VGA,DVI和HDMI,SPDIF光纤接口,USB2.0,IEEE1394和E-SATA等。考虑到大量下载和存储的需要,配置了600GB的大硬盘。只配置了2GB的内存,因为对于普通的多媒体应用来说,这也基本够用了。

外设稍微奢侈了一点,用了罗技的掌上型蓝牙小键盘diNovo Mini,外观非常的小巧漂亮,价格却不菲。

以下是具体的配置,以及当时的淘宝网订购价格。

主机:
CPU:AMD5000+ ¥480
主板:技嘉/GA-MA78GPM-DS2H/板载128M显存 ¥700
硬盘:西部数据/640G/3.5寸/7200转/16M/SATA ¥680
内存:金士顿DDR2 800 2G ¥280
光驱:三星DVD刻录机 ¥230
HTPC电脑机箱(美国NMEDIA原版HTPC100)+读卡器+足瓦300W电源 ¥333
= ¥2703

外设:
罗技diNovo Mini充电式蓝牙键盘 ¥1100
全新微软原装 MCE夜光版遥控器 ¥88

最新报价(徐家汇):
CPU:AMD5000+ 370
主板:技嘉/GA-MA78GPM-DS2H/板载128M显存 635
硬盘:320G/3.5寸/7200转/16M/SATA 375
内存:金士顿DDR2 800 2G 190
光驱:三星DVD刻录机 195
键盘:罗技光电套装 150
 

2008年10月6日星期一

Subversion快速指南

备忘参考。

本文是使用Subversion最快速的说明,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。

本说明分为以下几个部分。为了说明简单,教程是在windows下使用的方式,以方便资源有限的项目使用,对于UNIX环境下,区别并不大。

  • 软件下载
  • 服务器和客户端安装
  • 建立版本库(Repository)
  • 配置用户和权限
  • 运行服务器
  • 初始化导入
  • 基本客户端操作
1,软件下载
下载Subversion服务器程序。
最新Windows版本 : http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91

下载Subversion的Windows客户端TortoiseSVN。
Windows常用客户端TortoiseSVN:http://tortoisesvn.net/downloads

TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。

2,服务器和客户端安装

服务器安装,直接运行安装程序 ,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。

安装TortoiseSVN,同样直接运行安装程序,按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关,这里为了立刻看到好的效果,还是重新启动机器。

3,建立版本库(Repository)

运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:
svnadmin create E:\svndemo\repository

就会在目录E:\svndemo\repository下创建一个版本库。

我们也可以使用TortoiseSVN图形化的完成这一步:
在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。

4,配置用户和权限

来到E:\svndemo\repository\conf目录,修改svnserve.conf:
# [general]
# password-db = passwd
改为:
[general]
password-db = passwd 然后修改同目录的passwd文件,去掉下面三行的注释:
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:
[users]
harry = harryssecret
sally = sallyssecret
前面是用户名,后面是口令。这样在通过svn://或者http://访问时,会要求输入正确的用户名和口令才能允许访问。

5,运行服务器

svn独立服务器:

在任意目录下运行:
svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。

把windows的console程序变成service并不是很难的事情。有个叫做svnservice.exe的程序,将其放到svnserve.exe的同一目录下,运行 svnservice -install -d -r path/to/repo,即可在windows的service管理器中注册服务。

svnserve运行之后,即可从网络上通过 svn://host/*** 对该服务进行访问。

1.4以上的svn也可以通过sc.exe来创建windows服务记录:

安装服务
sc create subversion_service binpath= "c:\subversion\bin\svnserve.exe --service -r c:\svn_test\repos" displayname= "Subversion Repository" depend= Tcpip

删除服务
sc delete subversion_service

apache svn服务器:

在svn的安装目录下有 mod_*_svn.so 和 README.txt,这是Apache modules以及相关说明,将其复制到apache的modules目录下,并修改 httpd.conf,如下。

3a. Uncomment the following two lines:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so

3b. Add the following two lines to the end of the LoadModule section:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

3c. Add the following to end of the file.
<Location>
DAV svn
SVNPath your/repository/path
</Location>

重新启动Apache服务进程,即可通过 http://host/svn/*** 对 SVN 进行访问。这对于通过互联网进行远程访问无疑是极其方便的。

注:可能需要重新启动机器,以便 svn 安装程序加入到 system path 中的路径生效,使得 svn 的 dll 对 apache service 进程可见,否则 apache httpd 启动时,可能会报告找不到某些 dll 的错误信息。

另外,在我安装该服务时,用的是 appserv,这是个包含 apache, php, mysql, perl 的快速安装包,其中的 apache 版本是 2.2.8,而 svn 1.5.2 中的 mod_*_svn.so 是在 apache 2.2.9 中编译的。因此存在版本兼容的问题。我从 http://httpd.apache.org/下载了 apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi,将其中的 bin 和 modules 直接覆盖到 appserv 下的 Apache 目录中,可以直接使用。

6,初始化导入

来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个readme.txt文件:

右键->TortoiseSVN->Import...
URL of repository输入“svn://localhost/”
ok
完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。

需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn://133.96.121.22/”。

7,基本客户端操作

取出版本库到一个工作拷贝:
来到任意空目录下,在本例中是E:\svndemo\wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/,这样我们就得到了一份工作拷贝。
在工作拷贝中作出修改并提交:
打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我们可以运行。

察看所作的修改:
readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。

更多的内容可以参考 Subversion 中文站
http://www.subversion.org.cn/?action-viewnews-itemid-1