问题如下:正常的程序发布是通过安装布署工程一系列的设置来实现的,这个小弟懂但现在遇到的情况是,我想装一个已经封装好的EXE打包进这个安装布署里边,让客户端安装时,一并运行这个EXE。比如:把ORACLE客户端打包进去,并更改TNSNAME的一系列设置说白点:就是当客户运行这个SETUP时,一并运行那个ORACLE的客户端安装包,并更改它里边一个叫TNSNAME的文件。
望高手们赐教

解决方案 »

  1.   

    新建一个类库项目,新建一个类继承Installer类,重写Install方法 
     
    [RunInstaller(true)] 
            public   partial   class   MyInstall   :   Installer 
            { 
                    public   MyInstall() 
                    { 
                            InitializeComponent(); 
                    }                 public   override   void   Install(IDictionary   stateSaver) 
                    { 
                            base.Install(stateSaver); 
                            //这里调用Process类,运行你的第三方exe 
                    } 
          } 
     在安装项目中,把该类库项目也作为项目输出添加到“应用程序文件夹”中。 
    在视图-> 自定义操作中,在安装文件夹上点右键,添加自定义操作,选择刚才加进来的类库项目输出。
      

  2.   

      InitializeComponent(); 这个方法不存在呀??!!
      

  3.   

    自己写个小程序 先运行一个 exe 再运行一个 exe
    这个小程序就是你安装的入口了 ,随便起名字
      

  4.   

    能行通了,现在就到了下一步,替换TNSNAME文件了
      

  5.   

    要用Installer class摸板参考
    vs2008安装部署工程制作教程
    http://blog.csdn.net/soief/article/details/4024090
      

  6.   

    还有一点就是: public   override   void   Install(IDictionary   stateSaver) 
                    { 
                            base.Install(stateSaver); 
                            //这里调用Process类,运行你的第三方exe 
                    } 那个EXE我现在是写死了地址的,但实际应用中一定不行吧,但我引用“Application.Startpath”的话又不成功,我现在的想法是,把那个第三方的EXE放到那个“应用程序文件夹”中,那么我如何写它的地址???
      

  7.   

    添加的自定义操作的CustomActionData属性里写入:/targetdir="[TARGETDIR]\"string strInstallPath = this.Context.Parameters["targetdir"].ToString();//获取用户选的安装路径
    string strExeFile=strInstallPath+"/setup.exe";//第三方软件
      

  8.   

    现在是全通过了,但还有一个就是卸载,卸载默认情况下是去掉我本身的安装工程,那个第三方的EXE安装的东西,如何去掉呢??还有就是替换文件,现在还没有做到