用InstallScript添加iis的mime map

    这几天在忙着把之前做的一个网站打包成安装文件。网站中有flv,ico,声音(文件扩展名改成别的了)等资源文件,而windows 2003的iis6要对这些资源支持,让用户可以访问到这些资源,就需要在iis的mime类型里添加类型映射。关于iis的编程,知之甚少,因此只得求助google,哈哈,功夫不负有心人,终于在微软的msdn里找到一篇,是用vbscript实现的,这看起来是最简单的了,具体可以参考微软的MSDN,网址是http://msdn.microsoft.com/zh-cn/library/ms752346.aspx。寻思着,有了程序样板,只要把vbscript改写成installscript不就可以了吗?!说做就做,于是写下了如下代码片段:
function AddMimeType(MimeMapObj,Ext,Mtype)   
NUMBER mimeCount; 
VARIANT mimeTypes;
begin          
    mimeTypes=MimeMapObj.GetEx("MimeMap");
    mimeCount=SizeOf(mimeTypes);
    Resize(mimeTypes,mimeCount+1);
    mimeTypes(mimeCount)=CoCreateObject("MimeMap");  
    mimeTypes(mimeCount).Extension=Ext;
    mimeTypes(mimeCount).MimeType=Mtype; 
    MimeMapObj.PutEx 2,"MimeMap",mimeTypes;
    MimeMapObj.SetInfo();
end; 
然后调用这个函数,编译后运行安装程序,出现了错误。经过调试,发现是PutEx这个方法引起的错误,InstallShield什么错误信息也不提示,增加了调试的困难。调试了半天,仍无果,真是折腾死人了。到现在仍未知这个错误错在哪里及如何纠正!
     此路不通,看来只有另谋出路了。经过苦苦思索和寻觅,终于找到了一篇参考资料,于是改写成如下代码:
function AddMimeType(objVirtDir,Ext,Mtype)   
NUMBER mimeCount; 
VARIANT mimeTypes;
begin          
    mimeTypes=objVirtDir.MimeMap;
    mimeCount=SizeOf(mimeTypes);
    Resize(mimeTypes,mimeCount+1);
    mimeTypes(mimeCount)=CoCreateObject("MimeMap");  
    mimeTypes(mimeCount).Extension=Ext;
    mimeTypes(mimeCount).MimeType=Mtype; 
    objVirtDir.MimeMap=mimeTypes;
    objVirtDir.SetInfo();
end;
其中objVirtDir是虚拟目录对象。调试运行,还真的可以,真是众里寻他千百度,蓦然回首,那人却在灯火阑珊处,呵呵!

你可能感兴趣的:(编程,ext,Google,VBScript,IIS)