C#程序 + SQL 打包

fenayn 2009-07-02 04:06:31
开发环境是VS2008和SQL Server 2008,
现在请问如何打包啊。
如果目标机器上没装.Net framework 及数据库
那还能用吗?
请给个可用的方法或链接
...全文
86 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
fenayn 2009-07-12
  • 打赏
  • 举报
回复

private static string GetScript(string name)
{
Assembly asm = Assembly.GetExecutingAssembly();
Stream str = asm.GetManifestResourceStream(
asm.GetName().Name+ "." + name);
StreamReader reader = new StreamReader(str);
return reader.ReadToEnd();
}
private static string GetLogin(string databaseServer,
string userName,string userPass,string database)
{
return "server=" + databaseServer +
";database="+database+";User ID=" + userName +
";Password=" + userPass;
}

private static void ExecuteSql(SqlConnection sqlCon)
{
string[] SqlLine;
Regex regex = new Regex("^GO",RegexOptions.IgnoreCase | RegexOptions.Multiline);

string txtSQL = GetScript("install.txt");
SqlLine = regex.Split(txtSQL);

SqlCommand cmd = sqlCon.CreateCommand();
cmd.Connection = sqlCon;

foreach(string line in SqlLine)
{
if(line.Length>0)
{
cmd.CommandText = line;
cmd.CommandType = CommandType.Text;
try
{
cmd.ExecuteNonQuery();
}
catch(SqlException)
{
//rollback
ExecuteDrop(sqlCon);
break;
}
}
}
}
private static void ExecuteDrop(SqlConnection sqlCon)
{
if(sqlCon.State!=ConnectionState.Closed)sqlCon.Close();
sqlCon.Open();
SqlCommand cmd = sqlCon.CreateCommand();
cmd.Connection = sqlCon;
cmd.CommandText = GetScript("uninstall.txt");
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
sqlCon.Close();
}


public override void Install(IDictionary stateSaver)
{
base.Install (stateSaver);

if(Context.Parameters["databaseServer"].Length>0 &&
Context.Parameters["userName"].Length>0 &&
Context.Parameters["userPass"].Length>0)
{
conStr = GetLogin(
Context.Parameters["databaseServer"],
Context.Parameters["userName"],
Context.Parameters["userPass"],
"master");

RijndaelCryptography rijndael = new RijndaelCryptography();
rijndael.GenKey();
rijndael.Encrypt(conStr);
//save information in the state-saver IDictionary
//to be used in the Uninstall method
stateSaver.Add("key",rijndael.Key);
stateSaver.Add("IV",rijndael.IV);
stateSaver.Add("conStr",rijndael.Encrypted);
}

SqlConnection sqlCon = new SqlConnection(conStr);

sqlCon.Open();
ExecuteSql(sqlCon);
if(sqlCon.State!=ConnectionState.Closed)sqlCon.Close();
}

public override void Uninstall(IDictionary savedState)
{
base.Uninstall (savedState);

if(savedState.Contains("conStr"))
{
RijndaelCryptography rijndael = new RijndaelCryptography();
rijndael.Key = (byte[])savedState["key"];
rijndael.IV = (byte[])savedState["IV"];
conStr = rijndael.Decrypt((byte[])savedState["conStr"]);
}

SqlConnection sqlCon = new SqlConnection(conStr);

ExecuteDrop(sqlCon);
}


这个应该可以的
微醺_zZ 2009-07-07
  • 打赏
  • 举报
回复
友情提示:如果有满意答案就请尽快结贴
zenowolf 2009-07-07
  • 打赏
  • 举报
回复
g各位能不能在说的具体点,谢谢了
netstray 2009-07-07
  • 打赏
  • 举报
回复
部署数据库,。netframework可以和程序的安装包一起安装。
IHandler 2009-07-07
  • 打赏
  • 举报
回复
http://www.cnblogs.com/Ferry/articles/989249.html
子夜1978 2009-07-07
  • 打赏
  • 举报
回复
建议使用Installshield进行打包,可以包括框架、数据库一起打包!
messi_yang 2009-07-03
  • 打赏
  • 举报
回复
现在目标机器安装好.Net framework 及数据库
生成即可
ximi82878 2009-07-03
  • 打赏
  • 举报
回复
如果客户没有数据库就不行了吗??貌似咱们装东西的时候,是不需要装SQL SERVER的吧?那他们的数据都是从哪读的呢??
luzhong319 2009-07-03
  • 打赏
  • 举报
回复
稍微顶一下
微醺_zZ 2009-07-02
  • 打赏
  • 举报
回复
用SetUpFactory吧,把程序生成的所有DLL文件,exe文件,也就是所有程序启动需要的东西统统添加进去
在启动时可以在启动的OnNext事件中写代码去判断系统中是否有.net的环境,如果没有自动启动安装,有则跳过。
附一小段代码

result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\.NETFramework\\policy\\v2.0");
if (result == false) then
result = Dialog.Message("安装提示", "正在安装软件运行所需Microsoft .NET Framework 2.0框架", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Shell.Execute(SessionVar.Expand("%TempLaunchFolder%").."\\dotnetfx.exe", "open", "", "", SW_SHOWNORMAL);
end

在创建安装文件的时候将运行环境和SQL添加引用到打包文件中,在运行时解压到%TempLaunchFolder%目录下,安装完成后就会自动删除

http://liyb5619.blog.163.com/blog/static/10788223120091114349526
kkun_3yue3 2009-07-02
  • 打赏
  • 举报
回复
部署.NET,安装SQL SERVER
不想安装的话调用远程SQL SERVER一样的,
Zhanlixin 2009-07-02
  • 打赏
  • 举报
回复
需要安装.Net framework 及数据库
zzxap 2009-07-02
  • 打赏
  • 举报
回复
现在目标机器安装好.Net framework 及数据库
lovvver 2009-07-02
  • 打赏
  • 举报
回复
部署数据库,。netframework可以和程序的安装包一起安装。

如果你的程序师单机版本,数据库可以考虑sql express版。
hanhanmj 2009-07-02
  • 打赏
  • 举报
回复

需要打包 framework ..

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧