打包程序如何先检测IIS,然后再检测Framework?

解决方案 »

  1.   

    没有.net framework,安装程序本身就无法工作,所以它会先检测framework,然后安装iis,安装完之后,再调用aspnet_regiis.exe /i 命令重新在iis中注册.net framework,就可以让iis网站恢复正常。
      

  2.   

    我的意思是先检测iis,如果没有检测到,安装终止我用的是微软的web项目安装框架
      

  3.   

    安装部署中设置依赖项为IIS,设置系统必备,设置框架,安装自动安装
      

  4.   

    iis 是不能自动安装的,所以要先检测出来.net framework是可以自动检测安装的所以必须先检测iis
      

  5.   

    @wuyq11
    设置依赖项为IIS是怎么设置的?
      

  6.   

    如果net framework没有安装,那么检测IIS是否安装的代码也就无法运行,因此不能写代码检测,只能使用安装工具提供的功能。如果使用vs,建立安装工程的时候选择Web Setup project.会有自动检查IIS的功能。
    参考:
    如何使用VS2005创建web安装包
    安装net framework参见:
    setup工程中安装net运行时
      

  7.   

    @findcaiyzh 
    安装包运行时是不依赖于 framework的@wuyq11
    设置依赖项为IIS是如何设置的呢?
      

  8.   

    我的目的就是一定要在安装包先检测是否装IIS ,如果没装则提示,然后终止如果装了iis的话,就继续检测是否有.NET Framework框架,没有的话自动安装.
      

  9.   

    如下图,这样子是先检测安装 .net framework,然后再检测iis的 ,刚好反了
      

  10.   

    Prerequisites[先决条件] 选了.NET Framework2.0Launch Conditions[启动条件] 添加了iis 启动条件但是每次安装包运行的时候总是先检测.NET Framework2.0,自动安装完成后再检测到iis,然后提示安装终止这样到时候发给客户用肯定会有问题的,装了.NET Framework2.0框架后,再装iis,还要重新注册下,这是相当的麻烦,客户对这些肯定不懂的。
      

  11.   

    安装net framework参见:用Custom Action的方式安装net framework试一试http://blog.csdn.net/findcaiyzh/archive/2009/02/04/3862793.aspx
      

  12.   

    @findcaiyzh  自定义安装好像会有问题的,提示 正在安装其他程序,请等待该安装完成,然后再次尝试安装此软件这个我有试过~
      

  13.   

    我觉得要先检测安装包先检测出IIS 有点难,这个安装包是基于.NET Framework框架的,有直接的依赖关系。 所以肯定是先要有framework, 不知对否? 
      

  14.   

    @wuyq11  只是不知他所说的依赖是怎么加上去,如果只是在Lanch Conditions 加,那肯定也是不行的~ 
      

  15.   

    如果做一个包专检测IIS(主包),另外一个包是安装项目的包(子包)那么主包如何调用子包,前提是不能依赖于 framework.
      

  16.   

    IIS 有没有安装,       bool available = false;
          RegistryKey localMachine = Registry.LocalMachine;
          RegistryKey key2 = null;
          try {
            key2 = localMachine.OpenSubKey(@"Software\Microsoft\InetStp", false);
            if (key2 != null) {
              object obj2 = key2.GetValue("MajorVersion");
              object obj3 = key2.GetValue("MinorVersion");
              if ((obj2 == null) || (obj3 == null)) {
                return available;
              }
              available = true;
            }
          } catch {
          } finally {
            if (key2 != null) {
              key2.Close();
              key2 = null;
            }
          }
          return available;
      

  17.   

    @Dobzhansky
    如果没装framework的话,你上面这个怎么检测?
      

  18.   

    如果做一个包专检测IIS(主包),另外一个包是安装项目的包(子包)那么主包如何调用子包,前提是不能依赖于 framework.
      

  19.   


    可能也会出现"提示 正在安装其他程序,请等待该安装完成,然后再次尝试安装此软件"
    这是因为windows installer不允许嵌套 运行。  不过你可以试一试。
      

  20.   

    试一试用其他安装工具吧。像installshield什么的。至少它内部的代码不需要net framework的支持。
      

  21.   

    用 inno setup  工具 制作 安装程序
      

  22.   

    @findcaiyzh  
    windows installer不允许嵌套 运行?但Prerequisites 里面的.NET Framework 和其它的组件都是嵌套运行的啊
      

  23.   


    如果允许运行,我说的custom action的方法也可以啊。我们有setup project用Custom Action的方法安装.net1.1
      

  24.   

    @findcaiyzh
     可以参考一下吗?
      

  25.   

    @findcaiyzh如果不方便的话,给我贴部分代码也行~  
      

  26.   

    @findcaiyzh兄, 看到了请回复这个问题纠结了我很久了~