马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

安装类写好代码后安装程序老提示无压缩文件

  [复制链接]
查看9693 | 回复5 | 2014-8-25 08:46:19 | 显示全部楼层 |阅读模式
3)安装并复制文件
           复制文件的操作在OnBeforeInstall方法中就已经完成,在该方法中可以替换数据库连接字符串操作等。

protected override void OnBeforeInstall(IDictionary savedState)
        {
            
if (ExistSqlServerService())
            {
               
if (IsExistSitePort())
                {
                    MessageBox.Show(
"站点端口号重复", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    
return;
                }
               
if (IsExistSiteName(Context.Parameters["sitename"].ToString()))
                {
                    MessageBox.Show(
"站点名称重复", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    
return;
                }
               
base.OnBeforeInstall(savedState);

                unRAR(
"Message.rar"); //解压文件
                unRAR(
"MoreUpload.rar");
               
/*
                 * 设置webconfig连接字符串
                 
*/
               
string webconfigpath = Path.Combine(this.Context.Parameters["installdir"].ToString(), "Web.config");
               
string webcofnigstring = File.ReadAllText(webconfigpath).Replace("#constring#", GetConnectionString(Context.Parameters["dbname"].ToString()));
                webcofnigstring
= webcofnigstring.Replace("#siteport#", Context.Parameters["siteport"].ToString());
                webcofnigstring
= webcofnigstring.Replace("#comConn#", "Provider=SQLOLEDB.1ersist Security Info=False;User ID=" + Context.Parameters["user"].ToString() + "assword=" + Context.Parameters["pwd"].ToString() + ";Initial Catalog=" + Context.Parameters["dbname"].ToString() + ";Data Source=" + Context.Parameters["server"].ToString());
                File.WriteAllText(webconfigpath, webcofnigstring);

               
////安装IIS
                //if (string.Empty == GetIISVerstion())
               
//{
               
//    IISInstall(this.Context.Parameters["installdir"].ToString() + "IIS6.0_XPSP3", this.Context.Parameters["installdir"].ToString() + "iis.txt");
               
//}

            }
            
else
            {
                MessageBox.Show(
"检测到您的电脑没有安装SQL SERVER,无法继续安装此产品", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               
this.Rollback(savedState);
            }

        }

      上面代码中解压了两个文件,主要是在安装完创建站点时还需要创建虚拟目录。之所以要先压缩放到WEB项目里,是因为生成安装程序时会检测项目的生成是否成功(是否可以不让它检测成功呢? 还不清楚),一般只要我们把发布好的项目COPY到新建项目下就可以,但是独立的项目文件夹有自己独立的bin目录和webconfig文件,是不能混合在一起生成成功的,但是又需要一次完全安装,那么可以先压缩做为WEB项目下的文件,待复制完后再解压。
----------------------------------------------------------------------------------------------------------------
红色这句话难道要自己添加压缩包吗?

街頭莮炷角 | 2014-8-25 08:50:10 | 显示全部楼层

笑脸是;p   变成笑脸了
QQ截图20140825084900.png
songyusb | 2014-8-25 09:42:05 | 显示全部楼层
没弄过 顶一下
vvdsdsdf | 2014-8-25 09:43:29 | 显示全部楼层
看着好高端的样子
ibcadmin | 2014-8-25 09:45:39 | 显示全部楼层
用这个innosetup打包工具试试,  现在都是直接打包 哪有人还写这个类
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
街頭莮炷角 | 2014-8-25 10:08:34 | 显示全部楼层
ibcadmin 发表于 2014-8-25 09:45
用这个innosetup打包工具试试,  现在都是直接打包 哪有人还写这个类

我的是Web程序嘛  所以想让他自动创建IIS网站  但是有错误
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则