请教傻瓜安装程序怎么做? 比如一个asp.net做的一个OA系统,我想安装程序直接把iis,数据库,程序所有都配置好,直接就能用。而不用去装iis,配置数据库。这个怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我上个月刚做过,我一开始也是问人家的,后来自己解决了,我当时是还把水晶报表,所用的控件,和数据库都打成一个msi执行文件了,==================================================希望对你有帮助1. 在“新建项目”对话框的左侧树状图中选择“Other Project Types”->“Setup and Deployment”节点,在右侧选择“Web Setup Project”。2. 在Solution Explorer中在Solution上点右键,选择“Add”->“Existing Web Site”,将存放编译好的Web网站的文件夹加入Solution中。如果添加使用aspnet_compiler编译好的网站,有可能会出现下面的提示框,点击“是”就行。3. 再添加一个新的“Class Library”,名称“CreateDB”,用以创建数据库的操作。删除默认生成的“class1.cs”,在这个项目上点右键,选择“Add”->“New Item”,在弹出的对话框中选择“Installer Class”,点击OK。在类中添加如下代码:private void ExecuteSql(string connectionString, string databaseName, string sql){SqlConnection sqlConnection = new SqlConnection(connectionString);SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection);try{sqlCommand.Connection.Open();sqlCommand.Connection.ChangeDatabase(databaseName);sqlCommand.ExecuteNonQuery();}catch (Exception exception){throw exception;}finally{sqlCommand.Connection.Close();}}public override void Install(System.Collections.IDictionary stateSaver){string server = this.Context.Parameters["server"];string database = this.Context.Parameters["dbname"];string user = this.Context.Parameters["user"];string password = this.Context.Parameters["pwd"];string targetDir = this.Context.Parameters["targetdir"];try{string connectionString = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096",server, user, password);//create dbExecuteSql(connectionString, "master", "CREATE DATABASE " + database);//set userstring setUserString = "sp_addlogin 'PrinteryERP', 'PrinteryERP', 'PrinteryERP'";string setAccessString = "sp_grantdbaccess 'PrinteryERP'";string setRole = "sp_addrolemember 'db_owner', 'PrinteryERP'";//create new user logintry{ExecuteSql(connectionString, "master", setUserString);}catch { }//set default databasetry{ExecuteSql(connectionString, "PrinteryERP", setAccessString);}catch { }//set read roletry{ExecuteSql(connectionString, "PrinteryERP", setRole);}catch { }//create table,store produce......Process osqlProcess = new Process();osqlProcess.StartInfo.FileName = targetDir + "osql.exe";osqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -S {2} -d {3} -i {4}createdb.sql",user, password, server, database, targetDir);osqlProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;osqlProcess.Start();osqlProcess.WaitForExit();osqlProcess.Close();//add dataosqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -S {2} -d {3} -i {4}insertdata.sql",user, password, server, database, targetDir);osqlProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;osqlProcess.Start();osqlProcess.WaitForExit();osqlProcess.Close();}catch (Exception exception){throw exception;}try{string configFile = targetDir + "/Web.config";if (!File.Exists(configFile)){throw new InstallException("没有找到配置文件。");}XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(configFile);GC.Collect();File.Delete(configFile);GC.Collect();foreach (XmlNode xmlNode in xmlDoc["configuration"]["connectionStrings"].ChildNodes){if (xmlNode.Name == "add"){if (xmlNode.Attributes["name"].Value == "DBConnection"){xmlNode.Attributes["connectionString"].Value = String.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID=PrinteryERP;Password=PrinteryERP",server, database);}if (xmlNode.Attributes["name"].Value == "UserManageServicesConnection"){xmlNode.Attributes["connectionString"].Value = String.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID=PrinteryERP;Password=PrinteryERP",server, database);}}}xmlDoc.Save(configFile);}catch (Exception exception){throw exception;}}4.在“Web Setup Project”项目上点右键,选择“Add”->“Project Output”,选择Project“CreateDB”,选择“Primary Output”,点击OK。重复上述动作,将选择刚才添加的Web Site,选择“Content Files”,点击OK。5. 在“Web Setup Project”项目上点右键,选择“Add”->“File”,将创建数据库表、存储过程和视图的脚本createdb.sql加入。重复,将向数据表中添加基础数据的脚本insertdata.sql加入。重复,将程序osql.exe加入。6. 在“Web Setup Project”项目上点右键,选择“Add”->“Merge Module”,在弹出的对话框中选择“VC_User_CRT71_RTL_X86_---.msm”,点击OK。添加这个VC运行库是因为在一台干净的机器上测试的时候发现osql.exe这个程序需要这个库。7. 在“Web Setup Project”项目上点右键,选择“Properties”,在弹出的对话框中可以设置一些安装程序的属性。点击按钮“Prerequisites”,在弹出的对话框中选中“.NET Framework 2.0”和“Windows Installer 3.1”,选中“Download prerequisites from the same location as my application”。这样就可以把这些组件和应用程序打包在一起,安装的时候自动检测并安装了。如果需要部署的计算机如果没有打过最新的补丁的话,是没有“Windows Installer 3.1”的,如果没有这个组件,“.NET Framework 2.0”是不能安装的。8.在“Web Setup Project”项目上点右键,选择“View”->“Custom Actions”,在出现的树状图的节点“Install”上点右键,选择“Add Custom Actions”。在弹出的对话框中“Look in”中选择“Web Application Folders”,在下面选择“Primary output from CreateDB (Active)”,点击OK。9. 在“Web Setup Project”项目上点右键,选择“View”->“User Interface”,在出现的树状图节点“Install”的子节点“Start”上点击右键,选择“Add Dialog”,在弹出的对话框中选择“TextBoxes(A)”。在新添加的节点“TextBoxes (A)”上点击右键,选择“Properites Window”,依次设置Edit*Property属性为“CUSTOMTEXTA1”,“CUSTOMTEXTA2”,“CUSTOMTEXTA3” 和“CUSTOMTEXTA4”。10. 在刚刚建立的“Primary output from CreateDB (Active)”节点上点右键,选择“Properties Window”,设置“CustomActionData”属性为“/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"”。接下来对整个解决方案进行编译,会在输出目录下生成两个文件夹和两个文件。两个文件夹中分别包含了.NET Framework 2.0和Windows Installer3.1的安装包。另外的两个文件分别是(项目名称).msi和setup.exe。如果要进行安装,请执行setup.exe。 Click the link to solve your problem.Good luck! 水晶报表在客户机上怎么部署 javascript 正则表达式 请用小写字母和数字,首字母必须为字母,长度5-15 重启IIS6.0后,突然报这个错误,大家帮看一下 如何用telnet来发送带附件的邮件??? 请各位高手回答 jquery checkbox框选中后获取值添加到数据库 关于大的数据量(在线等)急。。。。。。。。。 在水晶报表里怎样实现记录换行? 编辑器回车键问题,有没有搞定。。 最后10求助! 简单数据验证问题 在vs2005开发asp.net,请问 .aspx.org 是什么文件? 求助:点击button的时候报错:回发或回调参数无效。
3. 再添加一个新的“Class Library”,名称“CreateDB”,用以创建数据库的操作。
删除默认生成的“class1.cs”,在这个项目上点右键,选择“Add”->“New Item”,在弹出的对话框中选择“Installer Class”,点击OK。在类中添加如下代码:
private void ExecuteSql(string connectionString, string databaseName, string sql)
{
SqlConnection sqlConnection = new SqlConnection(connectionString);
SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection);
try
{
sqlCommand.Connection.Open();
sqlCommand.Connection.ChangeDatabase(databaseName);
sqlCommand.ExecuteNonQuery();
}
catch (Exception exception)
{
throw exception;
}
finally
{
sqlCommand.Connection.Close();
}
}public override void Install(System.Collections.IDictionary stateSaver)
{
string server = this.Context.Parameters["server"];
string database = this.Context.Parameters["dbname"];
string user = this.Context.Parameters["user"];
string password = this.Context.Parameters["pwd"];
string targetDir = this.Context.Parameters["targetdir"];try
{
string connectionString = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096",
server, user, password);//create db
ExecuteSql(connectionString, "master", "CREATE DATABASE " + database);//set user
string setUserString = "sp_addlogin 'PrinteryERP', 'PrinteryERP', 'PrinteryERP'";
string setAccessString = "sp_grantdbaccess 'PrinteryERP'";
string setRole = "sp_addrolemember 'db_owner', 'PrinteryERP'";//create new user login
try
{
ExecuteSql(connectionString, "master", setUserString);
}
catch { }//set default database
try
{
ExecuteSql(connectionString, "PrinteryERP", setAccessString);
}
catch { }//set read role
try
{
ExecuteSql(connectionString, "PrinteryERP", setRole);
}
catch { }//create table,store produce......
Process osqlProcess = new Process();
osqlProcess.StartInfo.FileName = targetDir + "osql.exe";
osqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -S {2} -d {3} -i {4}createdb.sql",
user, password, server, database, targetDir);
osqlProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
osqlProcess.Start();
osqlProcess.WaitForExit();
osqlProcess.Close();//add data
osqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -S {2} -d {3} -i {4}insertdata.sql",
user, password, server, database, targetDir);
osqlProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
osqlProcess.Start();
osqlProcess.WaitForExit();
osqlProcess.Close();
}
catch (Exception exception)
{
throw exception;
}try
{
string configFile = targetDir + "/Web.config";
if (!File.Exists(configFile))
{
throw new InstallException("没有找到配置文件。");
}XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(configFile);GC.Collect();
File.Delete(configFile);
GC.Collect();foreach (XmlNode xmlNode in xmlDoc["configuration"]["connectionStrings"].ChildNodes)
{
if (xmlNode.Name == "add")
{
if (xmlNode.Attributes["name"].Value == "DBConnection")
{
xmlNode.Attributes["connectionString"].Value = String.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID=PrinteryERP;Password=PrinteryERP",
server, database);
}
if (xmlNode.Attributes["name"].Value == "UserManageServicesConnection")
{
xmlNode.Attributes["connectionString"].Value = String.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID=PrinteryERP;Password=PrinteryERP",
server, database);
}
}
}
xmlDoc.Save(configFile);
}
catch (Exception exception)
{
throw exception;
}
}
4.在“Web Setup Project”项目上点右键,选择“Add”->“Project Output”,选择Project“CreateDB”,选择“Primary Output”,点击OK。重复上述动作,将选择刚才添加的Web Site,选择“Content Files”,点击OK。
5. 在“Web Setup Project”项目上点右键,选择“Add”->“File”,将创建数据库表、存储过程和视图的脚本createdb.sql加入。重复,将向数据表中添加基础数据的脚本insertdata.sql加入。重复,将程序osql.exe加入。
6. 在“Web Setup Project”项目上点右键,选择“Add”->“Merge Module”,在弹出的对话框中选择“VC_User_CRT71_RTL_X86_---.msm”,点击OK。添加这个VC运行库是因为在一台干净的机器上测试的时候发现osql.exe这个程序需要这个库。
7. 在“Web Setup Project”项目上点右键,选择“Properties”,在弹出的对话框中可以设置一些安装程序的属性。点击按钮“Prerequisites”,在弹出的对话框中选中“.NET Framework 2.0”和“Windows Installer 3.1”,选中“Download prerequisites from the same location as my application”。这样就可以把这些组件和应用程序打包在一起,安装的时候自动检测并安装了。如果需要部署的计算机如果没有打过最新的补丁的话,是没有“Windows Installer 3.1”的,如果没有这个组件,“.NET Framework 2.0”是不能安装的。8.在“Web Setup Project”项目上点右键,选择“View”->“Custom Actions”,在出现的树状图的节点“Install”上点右键,选择“Add Custom Actions”。在弹出的对话框中“Look in”中选择“Web Application Folders”,在下面选择“Primary output from CreateDB (Active)”,点击OK。
9. 在“Web Setup Project”项目上点右键,选择“View”->“User Interface”,在出现的树状图节点“Install”的子节点“Start”上点击右键,选择“Add Dialog”,在弹出的对话框中选择“TextBoxes(A)”。在新添加的节点“TextBoxes (A)”上点击右键,选择“Properites Window”,依次设置Edit*Property属性为“CUSTOMTEXTA1”,“CUSTOMTEXTA2”,“CUSTOMTEXTA3” 和“CUSTOMTEXTA4”。10. 在刚刚建立的“Primary output from CreateDB (Active)”节点上点右键,选择“Properties Window”,设置“CustomActionData”属性为“/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"”。接下来对整个解决方案进行编译,会在输出目录下生成两个文件夹和两个文件。
两个文件夹中分别包含了.NET Framework 2.0和Windows Installer3.1的安装包。另外的两个文件分别是(项目名称).msi和setup.exe。如果要进行安装,请执行setup.exe。