Upload
do-van-thang
View
26
Download
4
Embed Size (px)
Citation preview
Dong Nai University of Technology Hiền Tài Là Nguyên Khí Của Quốc Gia
PPLT
test test
CTDL>
C#
F#
Java
Android
UML
LT Tiên Tiến
Lịch giảng dạy
Liên hệ
Cách tạo setup project visual studio với Sql server
By Trần Duy Thanh on November 9, 2012
1 Vote
Tạo Solution có chứa 3 Project bên như dưới:
Project QLSVApplication: là ứng dụng dùng để hiển thị thông tin sinh viên, chỉ là 1
Datagridview để hiển thị lên.
Project SetupEngine : là Project loại Libraries, project này chúng ta sẽ thêm loại
Installer đặt tên là InstallerEngine (Class này có nhiệm vụ cài đặt Cơ sở dữ liệu vào
máy tính, với các thông số được truyền vào từ quá trình cài đặt do ta quy định). Ta sẽ
nhúng các SQL Script mà SQLServer cung cấp cho ta vào đây với tên sqldata.txt và
sqldropcreate.txt (nhớ đặt tên viết thường, ta sẽ đi vào chi tiết ở phần sau)
Ta sẽ biên dịch project này thành dll để sử dụng trong Project QLSVSetup.
Project QLSVSetup : Dùng để cài đặt ứng dụng QLSVApplication vào máy tính, và
ra lệnh cho SetupEngine cài đặt cơ sở dữ liệu
Bước 1: Tạo ứng dụng sử dụng
Project QLSVApplication:
Trong project này đơn giản chỉ là hiển thị thông tin, chuỗi kết nối sẽ được đọc từ
app.config. Chuỗi này sẽ được cấp nhập trong quá trình cài đặt vào máy tính.
Bước 2: Tạo Project để cài đặt CSDL
Project SetupEngine: Project dùng để tạo CSDL, Project này chúng ta nhớ chọn
loại Libraries
- Để tạo class Installer như trong project: Bấm chuột phải vào Project/ chọn Add
/ New Item . Trong của sổ mới hiện lên chúng ta tìm tới loại Installer Class, đặt tên
class là InstallerEngine
- Đặt tên class InstallerEngine rồi nhấn Add
- Tiếp tục tạo 2 Text File để lưu SQL Script (các Script này được lấy bằng công
cụ SQL Server cho lẹ). Ở đây ta chia làm 2 tập tin SQL Script bởi vì lý do sau: Thao
tác tạo CSDL cần phải có thời gian chờ để nó kịp update vào SQL Server. Ta cho chờ
1 thời gian sau đó mới tiếp tục chạy các SQL Script về tạo bảng, insert dữ liệu…
- Để tạo Text File: Bấm chuột phải vào Project / Add/ New Item / chọn Text
File và nhập tên
- Trên đây là tạo Text File tên sqldropcreate.txt , chú ý nhớ đặt tên viết thường
toàn bộ.
- Sau khi tạo xong tập tin sqldropcreate.txt, chép đoạn Script tạo CSDL vào đây
(xem hình ):
–>Các script này có sẵn do SQL Server tự tạo nên ta chỉ cần copy từ đó vào đây (nhớ
bỏ hết các dòng có chữ Go)
- Tiếp theo ta phải cấu hình để 2 Text File này được nhúng vào Resource sau khi
biên dịch.
- Trong Properties: Lần lượt chọn 2 Text File trên và chọn Embedded
Resource trong Build Action
- Bây giờ chúng ta tiến hành chỉnh sủa class InstallerEngine:
using System;using System.Collections;using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.IO;
using System.Reflection;
using System.Data.SqlClient;
using System.Xml;
using System.Collections.Specialized;
namespace SetupEngine
{
[RunInstaller(true)]
public partial class InstallerEngine : System.Configuration.Install.Installer
{
private string logFilePath =”";
private string pathApp = “”;
public InstallerEngine()
{
InitializeComponent();
}
private string GetSql(string Name)
{
try
{
// Gets the current assembly.
Assembly Asm = Assembly.GetExecutingAssembly();
// Resources are named using a fully qualified name.
Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + “.” + Name);
// Reads the contents of the embedded file.
StreamReader reader = new StreamReader(strm);
string sInfor = reader.ReadToEnd();
Log(sInfor);
reader.Close();
return sInfor;
}
catch (Exception ex)
{
Log(ex.ToString());
throw ex;
}
}
private void ExecuteSql(string serverName, string dbName, string userid, string password, string Sql)
{
string connStr = “server =” + serverName + “;database =” + dbName + “;uid=” + userid + “;pwd=” +
password;
using (SqlConnection conn = new SqlConnection(connStr))
{
try
{
SqlCommand cmd = new SqlCommand(Sql);
conn.Open();
cmd.Connection = conn;
int n = cmd.ExecuteNonQuery();
Log(” n= ” + n);
conn.Close();
}
catch (Exception ex)
{
Log(ex.ToString());
}
}
}
protected void AddDBTable(string serverName, string userid, string password)
{
try
{
// Creates the database and installs the tables.
string strScript = GetSql(“sqldropcreate.txt”);
ExecuteSql(serverName, “master”, userid, password, strScript);
System.Threading.Thread.Sleep(60 * 1000);
strScript = GetSql(“sqldata.txt”);
ExecuteSql(serverName, “dbqlsv”, userid, password, strScript);
System.Threading.Thread.Sleep(60 * 1000);
string connStr = “server =” + serverName + “;database =dbqlsv;uid=” + userid + “;pwd=” + password;
Log(“AppPath=” + pathApp);
XmlDocument xmlDom = new XmlDocument();
xmlDom.Load(pathApp);
// Get XML node
XmlNode xmlNode = xmlDom.SelectSingleNode(
“configuration/appSettings/add[@key='MYCONN']“);
xmlNode.Attributes["value"].Value = connStr;
// Updating connection string in file
Log(“Followind node of config file will be updated: ” + xmlNode.InnerXml);
// Save to disk
xmlDom.Save(pathApp);
}
catch (Exception ex)
{
//Reports any errors and abort.
Log(ex.ToString());
throw ex;
}
}
protected override void OnAfterInstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
string assemPath = this.Context.Parameters["assemblypath"];
int pos = assemPath.LastIndexOf(“\\”);
logFilePath = assemPath .Substring(0,pos+1)+ “\\SetupLog117.txt”;
pathApp = assemPath.Substring(0, pos + 1) + “\\QLSVApplication.exe.config”;
Log(“—-Setup started—-”);
Log(“Server=” + this.Context.Parameters["servername"] + ” ; User Id=” +
this.Context.Parameters["userid"] + ” ; pwd=” + this.Context.Parameters["password"]);
foreach (DictionaryEntry s in this.Context.Parameters)
{
Log(“Parameter : “+s.Key +” ; value =”+s.Value);
}
AddDBTable(this.Context.Parameters["servername"], this.Context.Parameters["userid"],
this.Context.Parameters["password"]);
}
public void Log(string str)
{
StreamWriter Tex;
try
{
Tex = File.AppendText(this.logFilePath);
Tex.WriteLine(DateTime.Now.ToString() + ” ” + str);
Tex.Close();
}
catch
{ }
}
}
}
Giải thích một số dòng lệnh bên trên:
Hàm GetSql(string Name) : Dùng để đọc 2 Text File Sql Script. Vì 2 tập tin này
chúng ta nhúng vào Assembly nên cơ chế đọc tập tin sẽ là như vậy (xem code).
Lệnh : this.Context.Parameters["assemblypath"]; lấy đúng đường dẫn mà lúc cài đặt
chương trình người sử dụng chọn.
Key assemblypath là có sẵn, phải viết y chang.
this.Context.Parameters["servername"], this.Context.Parameters["userid"],
this.Context.Parameters["password"]
còn servernam, userid, password là do chúng ta quy định, do chúng ta đặt bên Project
Setup, 3 biến này phải đặt y chang như 3 biến mà bên Project Setup ta đã đặt.
void AddDBTable(string serverName, string userid, string password) có nhiệm vụ xóa
và tạo mới CSDL sau đó tạo các bảng, dữ liệu. sau khi tạo xong thì tự động cập nhập
file App.config cho chương trình (dùng xml).
Bước 3: Tạo Project Setup
Chọn Setup project: đặt tên QLSVSetup rồi bấm OK.
Bấm chuột phải vào QLSVSetup/ chọn File System:
Tại cửa sổ này ta bấm chuột vào thư mục Application Folder, để có được thông tin
như bên phải của hình ta làm như sau:
Bấm chuột phải vào Application Folder / Add/ Project Output…
Tiếp tục thêm các tập tin ứng dụng và app.config bên Project QLSVApplication vào
đây:
Bấm chuột phải vào Application Folder / Add/ File:
Kết quả:
Để tạo Shortcut cho ứng dụng sau khi cài đặt thì ta bấm chuột phải vào
QLSVApplication.exe
Sau đó cắt vào User’s Desktop hay User’s programs Menu, ta có thể tạo bất kỳ thư
mục nào bên nhánh trái, rồi chép Shortcut vào đó, có thể tạo nhiều shortcut.
Tiếp theo ta cấu hình giao diện cài đặt, bấm chuột vào QLSVSetup, bên trên ta chọn
Icon User Interface Editor:
Màn hình User interface sẽ xuất hiện:
Cửa sổ Add Dialog hiển thị lên:
Cấu hình TextBoxes (A) như hình chụp bên dưới:
Các tên : CUSTOMTEXTA1, CUSTOMTEXTA2, CUSTOMTEXTA3 là do ta đặt để
bên Custom Action có thể tham chiếu lấy giá trị từ màn hình cài đặt. Không dùng
Edit4Property nên to cho Edit4Visible =false
- Tiếp theo, cấu hình Custom Action: Bấm chuột phải vào QLSVSetup/ chọn
View/ chọn Custom Actions
Tại cửa sổ Custom Actions, Bấm chuột phải vào Install / chọn Add Custom Action…
Chọn Primary ouput from SetupEngine (active) rồi bấm OK.
Sau đó click chuột vào Primary output, quan sát Properties, Ta cấu hình
CustomActionData như hình:
/servername=[CUSTOMTEXTA1] /userid=[CUSTOMTEXTA2]
/password=[CUSTOMTEXTA3]
Ta viết y chang như trên, chú ý là 3 biến servername, userid, password ta đặt bên này
được sử dụng cho bên SetupEngine :
this.Context.Parameters["servername"], this.Context.Parameters["userid"],
this.Context.Parameters["password"]
Tức là ở đây ta đặt tên gì thì bên SetupEngine phải lấy đúng tên ta đặt bên này
CUSTOMTEXTA1 , CUSTOMTEXTA2, CUSTOMTEXTA3 là do ta đặt cho các
EditPropertie của Textboxes (A)
Bước 4: biên dịch và cài đặt
- Cấu hình QLSVSetup như bên dưới
Chọn Rebuild để biên dịch Setup.
Sau đó chọn Install để cài đặt:
Các bước cài đặt:
1. BẤM next, tự động xuất hiện màn hình cấu hình CSDL (chính là Textboxes (A))
2. Nhập thông tin và bấm Next:
3. Chọn đường dẫn cài đặt và bấm Next … cứ
vậy là xong. Chương trình sẽ cài đặt ứng dụng đồng thời cài đặt SQL luôn (có cập
nhật kết nối cho ta luôn)
Kết quả quan sát màn hình Desktop và khởi động chương trình:
Tải tập tin hướng dẫn chi tiết tại đây :
Tải source code tại đây: http://www.mediafire.com/download.php?v
Chúc các bạn thành công
Like this:
Posted in: C#2
Post navigation
← Older Newer →
One Response
1.
project server fpt April 26, 2013 at 4:13 am
wow, server đẹp đấy
Leave a Reply
Tìm kiếm thông tin
ớng dẫn chi tiết tại đây : http://www.mediafire.com/view/?n3qjzbvthnt9q3n
http://www.mediafire.com/download.php?vzqfjsaiqk5n8sg
Post navigation
April 26, 2013 at 4:13 am | Reply
http://www.mediafire.com/view/?n3qjzbvthnt9q3n
zqfjsaiqk5n8sg
Search
Lời ngỏ
Để chia sẻ các vấn đề về học tập các bạn sinh viên có thể gửi email tớ[email protected] hoặc gọi số0987773061 hoặc comment trực tiếp vào bài viết. Để thể hiện mình là một Sinh viên thực thụ, các bạn phải ý thức được những lời văn của mình khi viết ra.
Danh sách các chuyên mục
.Net Remoting C# (4)
C#2 (5)
CodeSmith Generator (1)
Custom Component (1)
F# (2)
Java2 (1)
Kiến Trúc Máy Tính (1)
Lập trình Android (40)
1. Giới thiệu môi trường phát triển điện thoại di động (6)
2. Xử lý giao diện người dùng (17)
3. Thực hành về Intent (3)
4. Đa ngôn ngữ trong Android (1)
5. Xử lý tập tin trong Android (6)
6. Xử lý đa tiến trình trong Android (6)
7. Broadcast Receiver (1)
Lập Trình Java 1 (21)
Lập Trình Java 2 (2)
LINQ (Language Integrated Query) (4)
Thông báo chung (91)
Thiết kế giao diện với DotNetBar (1)
Uncategorized (6)
WPF (1)
Recent Posts
Bài 40: Tìm hiểu Broadcast Receiver, ứng dụng viết phần mềm xử lý tin nhắn rác
Bài 39: Kết hợp AsyncTask và Handler class
Bài 38: Lấy kết quả trả về sau khi thực hiện đa tiến trình bằng AsyncTask
Bài 37: Xử lý đa tiến trình bằng AsyncTask
Bài 36: Update ListView At runtime by Handler class using post
Bài 35 : Vẽ Button lúc Runtime, dùng Using Message của Handler class
Bài tập 34: đa tiến trình trong Android (Multi-Threading)
Bài tập 33: Sử dụng ContentProvider trong Android
Bài tập 32: Tiếp tục củng cố kiến thức SQLite, ví dụ tổng hợp quản lý sách
Bài tập 31: Cách sử dụng SQLite trong Android
Bài tập 30: Thực hành về Shared Preferences
Bài tập 29: XML Parser trong Android
Bài tập 28: Xử lý tập tin trong Android
Bài tập 27: Đa ngôn ngữ trong Android
Bài tập 26: Dùng Implicit Intent để viết chương trình gọi điện thoại và nhắn tin SMS
Bài tập 25: Tiếp tục củng cố kiến thức Intent, ví dụ tổng hợp Quản Lý Nhân Viên
Bài tập 24: Thực hành về Intent trong Android
Bài tập 23: Thực hành về Context Menu trong Android
Bài tập 22: Thực hành về Menu trong Android
Bài tập 21: Thực hành về Tab Selector trong Android
Bài tập 20: Thực hành về DatePickerDialog và TimePickerDialog trong Android
Bài tập 19: Thực hành Gridview trong Android
Bài tập 18: Cập nhật DataSource cho AutocompleteTextView lúc Runtime
Bài tập 17: Thực hành về AutocompleteTextView và MultiAutocompleteTextView
Bài tập 16: Kết hợp Spinner với ListView trong Android
Bài tập 15: Thực hành về Spinner trong Android
Bài tập 14: Thực hành về Custom Layout cho ListView trong Android
Bài tập 13: Thực hành về ListView trong Android
Bài tập 12: Ví dụ tổng hợp TextView, EditText, CheckBox, Button và ImageButton
trong Android
Bài tập 11: Sử dụng Checkbox và RadioButton trong Android
Bài tập 10: Sử dụng TextView, EditText và Button trong Android
Bài tập 9: Thực hành về Toast Notification và Alert Dialog
Bài tập 8: Các kiểu lập trình sự kiện trong Android
Bài tập 7: Làm quen với các Layout trong Android
Bài tập 6: Phân biệt Foreground Lifetime và Visible Lifetime
Bài tập 5: Tìm hiểu vòng đời của một Ứng Dụng Android
Bài tập 4: Cách sửa một số lỗi thường gặp trong Android Project
Bài tập 3: Cách tạo Android Project v
Bài tập 2: Thao tác với Android Virtual Device v
Bài tập 1: Làm quen với môi trư
Thông báo lịch học bù Tablet
Thông báo tạm nghỉ học lớp Tablet
Điểm bổ sung CTDL
Thông báo dành cho lớp DHTH7CLT học
Kết quả thi giữa học kỳ 2 năm 2012
Thông báo việc làm tại công ty
Lịch thi giữa kỳ
CDTH10ALT – Danh sách sinh viên đăng k
Thông báo chuyển Blog
Lớp CDTH10ALT Điểm thi cuối kỳ
Thông báo của khoa CNTT
Thông báo: mời SV tham dự cuộc thi ImageCup
Cuộc thi Imagine Cup đã chính th
thời gian Imagine Cup 2014: Vòng thi S
1/11/2013 1/2/2014 Vòng bán k
trong nước Bảo vệ ý Continue reading → […]
Thông báo nghỉ học sáng chủ nhật ng
A.314)
Để phục vụ thi tiếng Anh TOEIC, Phòng
đào tạo có lớp học tại các phòng thu
27/10/2013 được nghỉ học vào sáng ch
Continue reading →
v/v:Đăng ký học anh văn A1, A2
Khoa Ngoại ngữ đã tổ chức xong kỳ thi xếp lớp v
mạng. Nếu SV không đăng ký học Tiếng Anh
A2 (của HK2), nếu không học Tiếng Anh A2 th
reading →
ập 3: Cách tạo Android Project và tìm hiểu cấu trúc bên trong của một Android
ập 2: Thao tác với Android Virtual Device và DDMS
ường phát triển điện thoại di động
Tablet
ớp DHTH7CLT học Android
2012-2013
GreenSun
Danh sách sinh viên đăng ký Assembla
ớp CDTH10ALT Điểm thi cuối kỳ Java2
a khoa CNTT
ời SV tham dự cuộc thi ImageCup
ã chính thức bắt đầu tại Việt Nam từ ngày 1/11/2013,
òng thi Sản phẩm Bắt đầu Kết thúc Vòng loại
1/11/2013 1/2/2014 Vòng bán kết Bộ sản phẩm hoàn thiện 5/3/2014 12/3/2014 Chung kết
ớc Bảo vệ ý Continue reading → […]
ỉ học sáng chủ nhật ngày 27/10/2013 tại các phòng thuộc khu A (A.101
TOEIC, Phòng Đào tạo thông báo đến các sinh viên và các đơn v
òng thuộc khu A (A.101 – A.314) vào sáng chủ nhật, ng
ào sáng chủ nhật, ngày 27/10/2013 Các lớp có kế hoạch học v
ọc anh văn A1, A2
ổ chức xong kỳ thi xếp lớp vào ngày 20/10/2013 và đã công b
ạng. Nếu SV không đăng ký học Tiếng Anh A1 (của HK1) sẽ không được học Tiếng Anh
ủa HK2), nếu không học Tiếng Anh A2 thì sẽ không được học Tiếng Anh 1 Continue
ủa một Android Project
ày 1/11/2013, với các mốc
Đề án ý tưởng
ện 5/3/2014 12/3/2014 Chung kết
ộc khu A (A.101 –
ên và các đơn vị
ủ nhật, ngày
ớp có kế hoạch học và
ã công bố điểm lên
ợc học Tiếng Anh
ợc học Tiếng Anh 1 Continue
Cao đẳng 2010: đăng ký dự Lễ tốt nghiệp tổ chức vào ngày 16/11/2013
Các sinh viên bậc Cao đẳng Khóa 2010 của Khoa CNTT nhanh chóng đăng ký dự Lễ tốt
nghiệp tổ chức vào ngày 16/11/2013. Thời gian tổ chức lễ: lúc 08h00 ngày 16/11/2013 Địa
điểm: Trung tâm liên hợp Thể dục Thể thao (E) Các sinh viên dự lễ tốt nghiệp sẽ nhận áo lễ
Continue reading →
Thông báo về thời gian bảo vệ khoá luận tốt nghiệp CDTH7ALT
Khoa CNTT thông báo về lịch bảo vệ Khoá luận tốt nghiệp CDTH7ALT, chi tiết xem file
Danh sach khoa luan tot nghiep CDTH7ALT
Thông báo về việc cấp phát email uni.dntu.edu.vn cho sinh viên khoa CNTT
Từ ngày 19/10/2013, Khoa CNTT đã cấp cho mỗi sinh viên khoa CNTT một email dưới tên
miền @uni.dntu.edu.vn. Giáo viên giảng dạy lớp sẽ thông báo email và password cho lớp
trưởng, các SV trong lớp nhận tài khoản email qua lớp trưởng. Sau khi đăng nhập email lần
đầu tiên, tất cả SV Continue reading → […]
Thông báo về việc nghỉ học phòng IT ngày 20/10
Ngày 20/10, Khoa NN tổ chức thi Toiec sẽ sử dụng phòng máy IT nguyên ngày, Khoa CNTT
thông báo đến tất cả các lớp có giờ thực hành tại Phòng IT được nghỉ học. Riêng lớp
12DTH2LT4 có lịch thi vẫn thi bình thường từ tiết 7-8. Chi tiết thông báo xem tại đây
Continue reading →
Thông báo về đăng ký dự Lễ tốt nghiệp năm 2013 (Cao đẳng Khóa 2010)
Kế hoạch tổ chức Lễ Tốt nghiệp năm 2013 cho Sinh viên bậc Cao đẳng khóa 2010 và Trung
cấp khóa 2011 của Trường Đại học Công nghệ Đồng Nai: Thời gian tổ chức lễ: lúc 08h00
ngày 16/11/2013. Sinh viên đăng ký dự lễ tốt nghiệp từ ngày 16/10/2013 đến ngày
12/11/2013 tại Phòng Kế hoạch Continue reading → […]
Thông báo về việc hiệu chỉnh quy định sử dụng đồng phục của sinh viên nữ khoa CNTT
Khoa CNTT thông báo về việc thay đổi quy định đồng phục áp dụng cho sinh viên nữ Khoa
CNTT như sau: Kể từ ngày 17/10/2013, sinh viên nữ khoa CNTT không cần mặc áo dài theo
quy định cũ (áo sơ mi trắng, đeo thẻ dây xanh). Chú ý: Đồng phục thể thao, đồng phục
Continue reading →
Chọn 10 sinh viên ngành CNTT tham gia chương trình MSP
Khoa CNTT sẽ chọn 10 sinh viên ngành CNTT tham gia chương trình MSP (xem chi tiết ở
http://www.microsoft.com/vietnam/student/introduction.aspx). Hãng Microsoft sẽ test lại vào
ngày hội thảo Microsoft 24/10/2013 tại DNTU. Yêu cầu: chỉ cần các bạn ý thích công nghệ
của Microsoft, co tư duy lập trình, thích làm công việc thuyết giảng và quảng Continue
reading […]
Blog Stats
411,634 hits
Blog at WordPress.com. The Retro-Fitted Theme.
Follow
Follow “Dong Nai University of Technology”
Get every new post delivered to your Inbox.
Join 153 other followers
Sign me up
Powered by WordPress.com