各位达人,我现在需要为一个dotNet的系统制作安装程序.现在遇到了如下问题:
我需要修改 .NET Framework配置,调整区域安全性级别,将受信任站点的安全性级别调到完全信任,由于我不知道怎么通过C#编程实现或者WSH脚本实现,所以我创建了一个部署包来实现我的要求(B.msi).
我为了这个系统创建了安装项目A,生成安装文件为A.msi,在此,我重载了A的Install类,在安装过程中,我通过自定义操作运行修改安全级别的B.msi,此时,安装出现异常,好像Windows Installer允许同时运行一个msi文件,所以在执行A.msi文件安装时将不能执行B.msi.
请问,我有什么办法可以在A.msi执行后自动的调用B.msi?
或者,如果可以用代码或脚本解决调整区域安全性级别的话也好啊!
在线急等,红色求救.先谢过了阿!

解决方案 »

  1.   

    1.B.MSI应该也是个应用程序,你是不是用Process.Start(***)来执行的啊?不行的话你执行B.MSI对应的SETUP.EXE,或者把他变成一个应用台程序试试,我们项目用过在安装包类执行其他操作的(也是调用其他一个C#的Console程序),没问题。
    2.如果你不知道C#的脚本来执行你这个比较怪异的操作(这个在程序的角度应该属于运行前提或者运行环境之类的配置),你的B.MSI又是怎么制作出来执行这个操作的? 
    我觉得调低信任的安全级别实际上也就是操作注册表吧,上网搜索一下看看..
      

  2.   


            public override void Install(System.Collections.IDictionary stateSaver)
            {
                base.Install(stateSaver);
                string vdir = this.Context.Parameters["vdir"];
                string filename = vdir + "res\\miscfg.msi";
                
                ProcessStartInfo psi = new ProcessStartInfo();
                psi.WorkingDirectory = vdir + "res";
                psi.FileName = vdir + "res\\miscfg.msi";
                psi.UseShellExecute = true;
                
                Process.Start(psi);
            }
    我是这样做的,不过好像不行.
      

  3.   

    Microsoft .NET Framework 2.0 配置里面使用 “部署包向导”可创建策略部署包。该向导将安全策略级别包装成一个 Windows Installer 包(.msi 文件),随后,可使用组策略或 Microsoft Systems Management Server 分发该文件。
    我就是使用这个功能创建的部署包B.msi,如果单独的执行B.msi确实可以实现我的要求的.
      

  4.   

     我刚才在本机帮你调试过了,直接一行命令Process.Start(你的MSI程序路径)即可执行,没有问题。不过我的MSI是自己写的另外一个程序的安装包,不是你所描述的由环境帮你生成的MSI。 我对VS2005和.NET 2.0不怎么熟悉,你看看是不是自己哪个地方没配置好吗? 试试自己做个安装包或者写个程序来实现你的功能?
      

  5.   

    对了,liutaoyue大大,你是在自己的某MSI中通过Process.Start执行你的另外一个MSI文件么?
      

  6.   

    要不我直接将Security.config文件打包?
      

  7.   

    我已经解决了,我直接将security.config文件打包,不过这个方式心里没底.