InstallShield如何打包.NET FrameWork?如何打包SQL数据库?如何指定非wwwroot下的虚拟目录? 1、InstallShield如何.NET FrameWork打包到安装程序中?2、如何打包SQL数据库?脚本、备份文件、数据文件等方式均可。3、如何指定非wwwroot下的虚拟目录?4、如何定义安装组件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2.建立数据库在建立数据的时候需要先准备好脚本.使用osql运行。string currentDir = @"C:\WINNT\Microsoft.NET\Framework\v1.1.4322";string sqlPath = @"C:\Program Files\Microsoft SQL Server\80\Tools\Binn";//建立目录if(!Directory.Exists(@"C:\Program Files\Microsoft SQL Server\MSSQL\Data")){ Directory.CreateDirectory(@"C:\Program Files\Microsoft SQL Server\MSSQL\Data");}if(!Directory.Exists(strTemp+@"DbAdmin\Database Backup")){ Directory.CreateDirectory(strTemp+@"DbAdmin\Database Backup");}System.Diagnostics.Process.Start("CMD.exe","/c net start MSSQLSERVER");RegistryKey pregkey ;pregkey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\ASP.NET_1.1.4322\Performance",true);try{ currentDir = pregkey.GetValue(@"Library").ToString(); currentDir = currentDir.Substring(0,currentDir.LastIndexOf(@"\")); Directory.SetCurrentDirectory(currentDir); System.Diagnostics.Process.Start("CMD.exe","/c aspnet_regiis.exe -i");}catch{}pregkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup",true);try{ sqlPath = pregkey.GetValue(@"SQLPath").ToString(); sqlPath = sqlPath+ @"\Binn";}catch{}pregkey.Close(); //运行脚本部分 StreamWriter dbFile = new StreamWriter(strTemp+"db.sql");dbFile.WriteLine("use master");dbFile.WriteLine("if exists(select * from sysdevices where name='table1')");dbFile.WriteLine("Exec sp_dropdevice "+"'"+Database+"'");dbFile.WriteLine("else");dbFile.WriteLine("Exec sp_addumpdevice 'disk',"+"'"+Database+"'"+",");dbFile.WriteLine(@"'C:\Program Files\Microsoft SQL Server\MSSQL\Data\table1_Data.mdf'");dbFile.WriteLine("restore database "+Database+" from disk='"+strTemp+"table1.bak' with ");dbFile.WriteLine(@"move 'Cipacedb_New_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\table1_Data.mdf',");dbFile.WriteLine(@"move 'Cipacedb_New_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\table1_Log.ldf',");dbFile.WriteLine("replace");dbFile.WriteLine("go");Directory.SetCurrentDirectory(sqlPath);System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();sqlProcess.StartInfo.FileName = "osql.exe";sqlProcess.StartInfo.Arguments = string.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", UserID, Password, "master", strTemp);sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;sqlProcess.Start();sqlProcess.WaitForExit();sqlProcess.Close(); if(File.Exists(strTemp+"db.sql")){ File.Delete(strTemp+"db.sql");}if(File.Exists(strTemp+"table1.bak")){ File.Delete(strTemp+"table1.bak");} 安装程序可以检查是否需要.net FrameWork,如果没就提示用户是否要运行,把.net FrameWork放在同一个目录里面最后生成exe就可以了。 还需要一个插件。http://www.webjx.com/htmldata/2005-10-05/1128470829.html 安装数据库,msdn里有个例子,不过是针对msi的,其中的思路可以借鉴:使用 Visual Studio .NET 进行开发-->部署应用程序和组件-->部署演练-->演练:安装期间使用自定义操作创建数据库 到这个论坛上找http://installshield.jaron.cn/Forum/InstallShield中文论坛使用InstallShield,从Releases,然后找到.NET FrameWork Location,选择为Extract Frome Setup.exe,记住,要下载.NET FrameWork 安装包SQL备份等,可以选择使用SQL Script,里头有向导,很好用,不需要你处理任何的代码自定义安装组件,在Organization中的Features创建即可,每一个Feature都可以创建InstallShield Script的事件,记住,是事件,就很容易明白了吧使用InstallShield Script创建虚拟目录和数据库等//////////////////////////// 创建IIS站点//////////////////////////function CreateWebSite(szServerIPDefault,szServerPortDefault)STRING szCmdLine,szWaitTxt;beginif ((szServerIPDefault = "") || (szServerPortDefault = "")) then MessageBox ("您没有设定"+@PRODUCT_NAME+"运行的服务器IP地址或端口!!IIS信息服务设置失败!\n请自行创建IIS站点,并将主目录设为:"+TARGETDIR,SEVERE);elseszWaitTxt=" 正在创建IIS和设置站点....";SdShowMsg (szWaitTxt, TRUE);Delay(2);szCmdLine = SUPPORTDIR ^"mkw3site.vbs"+" -r "+TARGETDIR+" -i "+szServerIPDefault+" -o "+szServerPortDefault+" -t "+@PRODUCT_NAME; if (LaunchAppAndWait("WScript.exe", szCmdLine,WAIT) < 0) thenMessageBox ("不能建立WEB 虚拟目录,没有找到 WScript.exe 或执行脚本错误.",SEVERE);endif;SdShowMsg (szWaitTxt, FALSE);endif;return 0;end;//////////////////////////// 创建虚拟目录//////////////////////////function CreateVirtualDir(VirtualFolder)STRING szCmdLine,szWaitTxt;beginif (VirtualFolder = "") then MessageBox ("没能读取到虚拟目录的名称!请联系系统供应商!"+TARGETDIR,SEVERE);elseszWaitTxt=" 正在创建"+@PRODUCT_NAME+"的虚拟目录....";SdShowMsg (szWaitTxt, TRUE);Delay(2);szCmdLine = SUPPORTDIR ^"mkwebdir.vbs "+" -w 1 -v \""+VirtualFolder+"\",\""+ TARGETDIR+"\"" ;if (LaunchAppAndWait("WScript.exe", szCmdLine,WAIT) < 0) thenMessageBox ("不能建立WEB 虚拟目录,没有找到 WScript.exe 或执行脚本错误.",SEVERE);endif;SdShowMsg (szWaitTxt, FALSE);endif;return 0;end;//////////////////////////// 创建和优化数据库//////////////////////////function CreateDataBase(svSQLsvr,svSQLusr,svSQLpwd)STRING szCmdLine,szWaitTxt;beginszWaitTxt=" 正在创建"+@PRODUCT_NAME+"所需数据库....";SdShowMsg (szWaitTxt, TRUE);Delay(2); szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"exec sp_attach_db N'OASystem' , N'"+SUPPORTDIR ^"OASystem_data.mdf'\"";if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) thenMessageBox ("数据库创建失败!请确您的系统中已安装 Microsoft SQL Server 2000.\n如仍无法解决,请联系系统供应商!",SEVERE);endif;SdShowMsg (szWaitTxt, FALSE);szWaitTxt=" 正在优化"+@PRODUCT_NAME+"系统数据库....";SdShowMsg (szWaitTxt, TRUE);Delay(2); szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"use OASystem ; exec sp_updatestats\"";if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) thenMessageBox ("数据库优化失败!您可以在 sql查询分析器中执行 \n use OASystem ; exec sp_updatestats \n完成!",SEVERE);endif;SdShowMsg (szWaitTxt, FALSE);return 0;end; ID磁卡上的数字的含义? B/S问题 C#如何调用C++函数并返回值 软件运行的售后遇见这个怎么安装啊。 installshield打包问题。在卸载的时候,我想删掉某个文件夹,我看网上的资料是写在OnUnInstalled里面,问题是 怎么用C#写个检测代理有无作用的代码??? 基本的綱絡問題﹕如何用C#截取綱絡封包? 关于控制台输出中文显示问号。 谁有关于C#,.net的教学幻灯片 哪位好心人,给我拷几张C#运行时的截图 如何控制自己做的控件的属性是否是有效的值 通过PaperSize自定义纸张打印,搞不定。 C#还有没有其它办法实现自定义纸张的功能???
在建立数据的时候需要先准备好脚本.使用osql运行。string currentDir = @"C:\WINNT\Microsoft.NET\Framework\v1.1.4322";
string sqlPath = @"C:\Program Files\Microsoft SQL Server\80\Tools\Binn";//建立目录
if(!Directory.Exists(@"C:\Program Files\Microsoft SQL Server\MSSQL\Data"))
{
Directory.CreateDirectory(@"C:\Program Files\Microsoft SQL Server\MSSQL\Data");
}if(!Directory.Exists(strTemp+@"DbAdmin\Database Backup"))
{
Directory.CreateDirectory(strTemp+@"DbAdmin\Database Backup");
}System.Diagnostics.Process.Start("CMD.exe","/c net start MSSQLSERVER");RegistryKey pregkey ;
pregkey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\ASP.NET_1.1.4322\Performance",true);
try
{
currentDir = pregkey.GetValue(@"Library").ToString();
currentDir = currentDir.Substring(0,currentDir.LastIndexOf(@"\"));
Directory.SetCurrentDirectory(currentDir);
System.Diagnostics.Process.Start("CMD.exe","/c aspnet_regiis.exe -i");
}
catch{}
pregkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup",true);
try
{
sqlPath = pregkey.GetValue(@"SQLPath").ToString();
sqlPath = sqlPath+ @"\Binn";
}
catch{}
pregkey.Close();
//运行脚本部分
StreamWriter dbFile = new StreamWriter(strTemp+"db.sql");
dbFile.WriteLine("use master");
dbFile.WriteLine("if exists(select * from sysdevices where name='table1')");
dbFile.WriteLine("Exec sp_dropdevice "+"'"+Database+"'");
dbFile.WriteLine("else");
dbFile.WriteLine("Exec sp_addumpdevice 'disk',"+"'"+Database+"'"+",");
dbFile.WriteLine(@"'C:\Program Files\Microsoft SQL Server\MSSQL\Data\table1_Data.mdf'");
dbFile.WriteLine("restore database "+Database+" from disk='"+strTemp+"table1.bak' with ");
dbFile.WriteLine(@"move 'Cipacedb_New_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\table1_Data.mdf',");
dbFile.WriteLine(@"move 'Cipacedb_New_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\table1_Log.ldf',");
dbFile.WriteLine("replace");
dbFile.WriteLine("go");Directory.SetCurrentDirectory(sqlPath);
System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
sqlProcess.StartInfo.FileName = "osql.exe";
sqlProcess.StartInfo.Arguments = string.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", UserID, Password, "master", strTemp);
sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
sqlProcess.Start();
sqlProcess.WaitForExit();
sqlProcess.Close();
if(File.Exists(strTemp+"db.sql"))
{
File.Delete(strTemp+"db.sql");
}
if(File.Exists(strTemp+"table1.bak"))
{
File.Delete(strTemp+"table1.bak");
}
http://www.webjx.com/htmldata/2005-10-05/1128470829.html
使用 Visual Studio .NET 进行开发-->部署应用程序和组件-->部署演练-->演练:安装期间使用自定义操作创建数据库
SQL备份等,可以选择使用SQL Script,里头有向导,很好用,不需要你处理任何的代码
自定义安装组件,在Organization中的Features创建即可,每一个Feature都可以创建InstallShield Script的事件,记住,是事件,就很容易明白了吧使用InstallShield Script创建虚拟目录和数据库等//////////////////////////
// 创建IIS站点
//////////////////////////
function CreateWebSite(szServerIPDefault,szServerPortDefault)
STRING szCmdLine,szWaitTxt;
begin
if ((szServerIPDefault = "") || (szServerPortDefault = "")) then
MessageBox ("您没有设定"+@PRODUCT_NAME+"运行的服务器IP地址或端口!!IIS信息服务设置失败!\n请自行创建IIS站点,并将主目录设为:"+TARGETDIR,SEVERE);
else
szWaitTxt=" 正在创建IIS和设置站点....";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);
szCmdLine = SUPPORTDIR ^"mkw3site.vbs"+" -r "+TARGETDIR+" -i "+szServerIPDefault+" -o "+szServerPortDefault+" -t "+@PRODUCT_NAME;
if (LaunchAppAndWait("WScript.exe", szCmdLine,WAIT) < 0) then
MessageBox ("不能建立WEB 虚拟目录,没有找到 WScript.exe 或执行脚本错误.",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);
endif;
return 0;
end;//////////////////////////
// 创建虚拟目录
//////////////////////////
function CreateVirtualDir(VirtualFolder)
STRING szCmdLine,szWaitTxt;
begin
if (VirtualFolder = "") then
MessageBox ("没能读取到虚拟目录的名称!请联系系统供应商!"+TARGETDIR,SEVERE);
else
szWaitTxt=" 正在创建"+@PRODUCT_NAME+"的虚拟目录....";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);
szCmdLine = SUPPORTDIR ^"mkwebdir.vbs "+" -w 1 -v \""+VirtualFolder+"\",\""+ TARGETDIR+"\"" ;
if (LaunchAppAndWait("WScript.exe", szCmdLine,WAIT) < 0) then
MessageBox ("不能建立WEB 虚拟目录,没有找到 WScript.exe 或执行脚本错误.",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);
endif;
return 0;
end;//////////////////////////
// 创建和优化数据库
//////////////////////////
function CreateDataBase(svSQLsvr,svSQLusr,svSQLpwd)
STRING szCmdLine,szWaitTxt;
begin
szWaitTxt=" 正在创建"+@PRODUCT_NAME+"所需数据库....";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);
szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"exec sp_attach_db N'OASystem' , N'"+SUPPORTDIR ^"OASystem_data.mdf'\"";
if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("数据库创建失败!请确您的系统中已安装 Microsoft SQL Server 2000.\n如仍无法解决,请联系系统供应商!",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);
szWaitTxt=" 正在优化"+@PRODUCT_NAME+"系统数据库....";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);
szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"use OASystem ; exec sp_updatestats\"";
if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("数据库优化失败!您可以在 sql查询分析器中执行 \n use OASystem ; exec sp_updatestats \n完成!",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);
return 0;
end;