圖解C#如何為winform程式打包釋出應用
1:新建安裝部署專案
開啟VS,點選新建專案,選擇:其他專案型別->安裝與部署->安裝嚮導(安裝專案也一樣),然後點選確定.(詳細見下圖)
此主題相關圖片如下:
2:安裝嚮導
關閉後開啟安裝嚮導,點選下一步,或者直接點選完成.
3:開始製作 安裝嚮導完成後即可進入專案資料夾:
雙擊"應用程式資料夾"在右邊的空白處右擊,選擇新增->檔案,將你的做的應用程式的可執行檔案和相應的類庫和元件新增進來.
然後右擊你的可執行檔案,建立快捷方式,然後把快捷方式分別剪下或複製到左邊的"使用者的?程式?選單"和"使用者桌面"中.
這樣安裝程式安裝完成後會在 "開始->所有程式"和"桌面"上生成程式的快捷方式.
然後右擊左邊的"應用程式資料夾"開啟屬性對話方塊:
將屬性中的"defaultlocation"的路徑中的"[manufacturer]"去掉,不然的話做好的安裝程式預設安裝目錄會是"c:\programm file\你的使用者名稱\安裝解決方案名稱";
然後開啟解決方案管理器,右擊你的解決方案名稱,選擇屬性:
在開啟的屬性頁中,選擇"系統必備",
在開啟的系統必備頁中,選中如下中的選擇項,這個很重要!!!!!1!!!!!
選上以後,在生成的安裝檔案包中包含.netframework元件.(這個選項預設是沒有選中的)
好了,這樣就完成99%了,然後點選"生成->生成解決方案",哈,生成成功!
4:製作完成
現在開啟解決方案資料夾下的debug資料夾,就可以看到生成的安裝檔案了.
【續】關於"解除安裝"功能的新增,上面的文章只介紹了簡單的生成安裝的方法,但是在vs.net2005下並沒有直接生成解除安裝程式的功能,所以我們只好用msi來實現了,原理我就不講了,網上一搜一堆,我只講操作.
【1】:在新增你的應用程式專案的時候,多新增一個msiexec.exe進去,這個檔案在c:\windows\system32資料夾下.
新增進去以後,為了讓他更像個解除安裝程式,把他的名字改成"Uninstall.exe",當然這個關係不大,改不改都行的.
然後給他建立一個快捷方式,放到桌面或者"開始-程式"中,我選擇放在了開始選單中,然後下面我們要的做的就是查詢這個部署專案的ProductCode了,滑鼠左鍵單擊專案名稱,記住是左鍵單擊,然後點選屬性標籤,注意:不是右擊的屬性,這個區別很大,這時你就可以看到ProductCode了,
然後開啟你建立的那個快捷方式的屬性對話方塊,在Aguements屬性中輸入"/x {ProductCode}",
好了,然後點選"生成解決方案"即可生成帶有解除安裝功能的安裝程式了.
============================================================================================================================
c# winform 打包(帶資料庫安裝)
下邊我將用vs中自帶的打包程式建立安裝包。
關於打包網上有現成的文章,(手把手教你使用VS製作winform安裝包):http://www.cnblogs.com/chankcheng/articles/1774932.html文章如下:
使用VS 自帶的打包工具,製作winform安裝專案
開發環境:VS 2008 Access
作業系統:Windows XP
開發語言:C#
專案名稱:**管理系統
步驟:
第一步:開啟開發環境VS2008,新建專案,選擇其他專案型別,再選擇"安裝專案",輸入名稱及選擇安裝路徑;
第二步:進入檔案系統選項卡,選擇應用程式資料夾,在中間的空白區域右鍵選擇"新增檔案",新增專案檔案(exe,dll);
注:如果安裝專案在你的專案中。建議使用專案輸出的形式。這樣專案變更時,安裝程式也會相應的變更。如下圖。主輸出一定要選擇你要打包的專案。
第三步:新增專案所需檔案;這裡有兩個資料夾需要注意(DataBase和Report),因為DataBase是儲存專案資料庫,而Report則是儲存專案所需的報表檔案.rpt,因此呢,在應用程式夾中也需要建同名的資料夾,並且新增所需的檔案。效果:
第四步:為了在開始程式選單中和桌面應用程式中看到安裝程式,這裡我們就需要為專案建立快捷方式。右鍵選擇可執行檔案 (PersonFinance.exe),建立快捷方式,進行重新命名"**公司**管理系統",將該快捷方式拖放到 '使用者的"程式"選單' 中。重複該步驟將新建的快捷方式新增到 "使用者桌面" 資料夾中
最好在使用者選單中建立一個資料夾,存放安裝程式
第五步:設定系統必備,右鍵選擇安裝專案,進入屬性頁中,單擊"系統必備"按鈕,進入系統必備對話方塊;勾選"建立用於安裝系統必備元件的安裝程式",在安裝系統必備元件列表中,選擇
1)、Windows Installer 3.1(必選)
2)、.NET Framework 3.5 (可選)參考最後說明
3)、Crystal Report Basic for Visual Studio2008(x86,x64) (可選) 專案中用到了水晶報表就需要勾選此項
重要一點:勾選"從與我的應用程式相同的位置下載系統必備元件(D)",其實意思就是說你勾選後,生成安裝專案時,在你安裝專案的路徑下,會有你在系統必備元件列表中勾選的元件.(系統自動完成,這一點還不錯,不需要你自己去下載元件)
第六步:解除安裝程式,因為安裝包做好之後不能只有安裝程式,還要有解除安裝程式
首先呢,在"C:\WINDOWS\system32"路徑下,找到msiexec.exe 新增到應用程式資料夾中,建立快捷方式,並命名"解除安裝管理系統"或"Uninstall"
其次呢,選擇安裝專案的ProductCode
右鍵選擇解除安裝程式的快捷方式,進入屬性,在Arguments選項中 輸入/x 及ProductCode; 例如:/x {6931BD71-5C5E-4DA1-A861-14C7D1A78B97}
將解除安裝程式同時存放到使用者的開始選單的資料夾中(在第四步中新建)
第七步:更改安裝程式屬性,右鍵選擇安裝專案屬性,可以設定專案作者及名稱,其他屬性資訊可以根據實際情況進行設定.
第八步:生成安裝專案
生成時,會出現些警告:應將“msiexec.exe”排除,原因是其原始檔“C:\WINDOWS\system32\msiexec.exe”受到“Windows 系統檔案保護”。
兩個或多個物件具有相同的目標位置(“[targetdir]\model.dll”)
解決方案:
第一種:都不處理
第二種:第一類警告,可以編寫解除安裝程式
第二種警告:刪除相同的檔案
安裝專案製作完畢.
安裝及執行:
直接執行steup.msi 或是setup.exe 會出現
在桌面和開始選單中也會有相應的安裝程式、解除安裝程式。
說明及小結:
1、.net framework 框架是可選的,不一定說你採用的是VS2008開發就必須要使用.net framework 3.5,只要你在程式中沒有使用到.net framework 3.5 的特性比如(LINQ),那麼你選擇框架時,是可以選擇2.0的,為什麼?因為2.0只有20多MB,而3.5則有200多MB。
更改方式:在安裝專案下面有個檢測到的依賴項檔案,雙擊裡面的Microsoft .net framework,進入了啟動條件選擇卡,右鍵選擇.net frmaework 在Version中選擇你所需的.net framework框架
----------------------------------------------------------------------------------------------------
安裝已會做,看看如何打包資料庫。網上已有人寫了文章,(C# WINFORM 打包資料庫):http://www.cnblogs.com/pato/archive/2010/09/16/1828276.html
C# WINFORM 打包資料庫
實現效果:安裝專案時直接附加資料庫。
1.首先在需要部署的專案的解決方案資源管理器中新建一個安裝專案
2.在安裝專案的檔案檢視中,右鍵【應用程式資料夾】->【新增】->【專案輸出】
選擇你的專案中的啟動專案,下面的列表中,預設就是主輸出,確定。
3.此時在檔案系統的中間欄目,會自動列出編譯所需的檔案。一個簡單專案打包差不多,還有快捷方式什麼的,就不說了。開始重點了。
建立安裝程式類
4.在解決方案資源管理器中,新建一個類庫專案【InstallDB】,刪除Class1.cs,新建一個安裝程式類[InstallDB.cs],等下將在這個類中編寫附加資料庫程式碼。
建立自定義安裝對話方塊
5.在剛新建的安裝專案上右鍵,【檢視】->【使用者介面】:
在使用者介面中,右鍵【啟動】-【新增對話方塊】-選擇【文字框(A)】-確定。
6.然後右鍵這個文字框(A),將其上移到歡迎使用下面:
右鍵選擇【屬性】,參考下圖的資訊填寫:
7.在剛新建的安裝專案上右鍵,【檢視】->【自定義操作】:
8.右鍵【自定義操作介面】的【安裝】節點,【新增自定義操作】,彈出的對話方塊。
9.在查詢範圍裡選擇應用程式資料夾,再點選右側的【新增輸出(O)…】,選擇剛新建的安裝程式類專案,預設還是主輸出,確定。此時:
10.右鍵這個【主輸出來自InstallDB(活動)】,進入屬性介面,在【CustomActionData】屬性裡輸入下面的內容:
/dbname=[DBNAME] /server=[SERVER] /user=[USER] /pwd=[PWD] /targetdir="[TARGETDIR]\"
說明:其中前四個方括號中的大寫字母,為上面第6步圖中輸入的四個EditProPerty屬性,需要對應好。最後一個targetdir的值的意思是安裝後文件的目錄路徑。
特別提醒:前三個"/XXX=[XXX]"後面 ,都有一個空格的,小xin曾因此煩惱甚久,網上的某些教程實在是。。。很耐人。
11.現在可以新增資料庫檔案了,在剛新建的安裝專案上右鍵,【新增】->【檔案】,選擇你的MDF和LDF檔案,就是安裝時需要附加的資料庫檔案。
12.最後,我們只需在安裝程式類裡編寫附加資料庫的程式碼了。開啟上面第4步中新建的安裝程式類,參考下方的程式碼,編寫適合您的附加資料庫程式碼:
/// <summary>
/// 附加資料庫方法
/// </summary>
/// <param name="strSql">連線資料庫字串,連線master系統資料庫</param>
/// <param name="DataName">資料庫名字</param>
/// <param name="strMdf">資料庫檔案MDF的路徑</param>
/// <param name="strLdf">資料庫檔案LDF的路徑</param>
/// <param name="path">安裝目錄</param>
private void CreateDataBase( string strSql, string DataName, string strMdf, string strLdf, string path)
{
SqlConnection myConn = new SqlConnection(strSql);
String str = null ;
try
{
str = " EXEC sp_attach_db @dbname='"+DataName+"',@filename1='"+strMdf+"',@filename2='"+strLdf+"'";
SqlCommand myCommand = new SqlCommand(str, myConn);
myConn.Open();
myCommand.ExecuteNonQuery();
MessageBox.Show("資料庫安裝成功!點選確定繼續");//需Using System.Windows.Forms
}
catch(Exception e)
{
MessageBox.Show("資料庫安裝失敗!" + e.Message+"\n\n"+"您可以手動附加資料");
System.Diagnostics.Process.Start(path);//開啟安裝目錄
}
finally
{
myConn.Close();
}
}
public override void Install(System.Collections.IDictionary stateSaver)
{
string server = this.Context.Parameters["server"];//伺服器名稱
string uid = this.Context.Parameters["user"];//SQlServer使用者名稱
string pwd = this.Context.Parameters["pwd"];//密碼
string path = this.Context.Parameters["targetdir"];//安裝目錄
string strSql = "server=" + server + ";uid=" + uid + ";pwd=" + pwd + ";database=master";//連線資料庫字串
string DataName = "JXC";//資料庫名
string strMdf = path + @"JXC.mdf";//MDF檔案路徑,這裡需注意檔名要與剛新增的資料庫檔名一樣!
string strLdf = path + @"jxc_log.ldf";//LDF檔案路徑
base.Install(stateSaver);
this.CreateDataBase(strSql, DataName, strMdf, strLdf, path);//開始建立資料庫
}
注:附加時需要設定“檔案許可權”,請看"Herb"的回覆。
--------------------------------------------------------------------------------
自已實現資料庫配置
上邊程式中是通過【新增自定義操作】實現資料庫輸入的。如果我們想在安裝時可以讓使用者有測試資料庫連線功能、並且是通過SQL語句建立資料庫,那怎麼做呢?
我們可以在上邊的自定義操作的類庫中新增一個From介面。通過它來完成。如下介面。當然,上邊文章中自定義介面的資料庫部分就可以不要了。
在上邊文章的自定義類庫中編寫程式碼。
此程式碼的主要功能是:
1)建立資料庫
2)建立資料庫表、儲存過程等內容
3)修改安裝程式配置檔案.
#region 引數
public static string _serverName { get; set; }
public static string _dbName { get; set; }
public static string _userName { get; set; }
public static string _password { get; set; }
private string _setupType { get; set; }
private string _targetDir { get; set; }
/// <summary>
/// 資源中建立表結構及資料的檔名
/// </summary>
private const string _StructureAndDataFileName = "CreateStructureData";
#endregion
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
//資料庫配置 介面
frmDb dbFrom = new frmDb();
DialogResult DialogResult = dbFrom.ShowDialog();
if (DialogResult != DialogResult.OK)
{
throw new InstallException("使用者取消安裝!");
}
SqlConnection connection = null;
connection = TestConnection(_serverName, "master", _userName, _password);
//建立資料庫
int result = this.CreateDataBase(connection);
if (result > 0)
{
CloseConnection(connection);
//使用建立的資料庫
connection = TestConnection(_serverName, _dbName, _userName, _password);
CreateStructureAndData(connection);
}
//建立表及增加資料
CreateStructureAndData(connection);
//為空是表示有錯誤
if (connection != null)
{
ModifyConfig();
}
//關閉資料庫
CloseConnection(connection);
}
/// <summary>
/// 關閉資料庫
/// </summary>
/// <param name="connection"></param>
private void CloseConnection(SqlConnection connection)
{
if (connection != null)
{
//關閉資料庫
if (connection.State != System.Data.ConnectionState.Closed)
{
connection.Close();
connection.Dispose();
}
}
}
/// <summary>
/// 測試連線
/// </summary>
/// <param name="serverName"></param>
/// <param name="dbName"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
private SqlConnection TestConnection(string serverName, string dbName, string userName, string password)
{
string connectionString = GetConnectionString(serverName, dbName, userName, password);
SqlConnection connection = new SqlConnection(connectionString);
try
{
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
return connection;
}
catch
{
CloseConnection(connection);
throw new InstallException("安裝失敗!\n資料庫配置有誤,請正確配置資訊!");
}
}
/// <summary>
/// 得到連線字串
/// </summary>
/// <param name="serverName"></param>
/// <param name="dbName"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <returns></returns>
private string GetConnectionString(string serverName, string dbName, string userName, string password)
{
string connectionString = "Data Source={0};Initial Catalog={1};User ID={2};Password={3}";
connectionString = string.Format(connectionString, serverName, dbName, userName, password);
return connectionString;
}
/// <summary>
/// 建立資料庫
/// </summary>
/// <param name="serverName"></param>
/// <param name="dbName"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <param name="connection"></param>
/// <param name="stateSaver"></param>
public int CreateDataBase(SqlConnection connection)
{
int result = -1;
connection.ChangeDatabase("master");
string createDBSql = @" if Exists(select 1 from sysdatabases where [name]=N'{0}')
begin
drop database {0}
end
GO
CREATE DATABASE {0} ";
createDBSql = string.Format(createDBSql, _dbName);
//因為有Go在SQLCommand中不認識,所以以Go為分隔符取sql語句
char[] split = new char[] { 'G', 'O' };
string[] sqlList = createDBSql.Split(split);
SqlCommand command = null;
try
{
command = connection.CreateCommand();
command.CommandType = System.Data.CommandType.Text;
foreach (string sqlItem in sqlList)
{
if (sqlItem.Length > 2)
{
command.CommandText = sqlItem;
result = command.ExecuteNonQuery();
}
}
return result;
}
catch
{
CloseConnection(connection);
command.Dispose();
throw new InstallException("安裝失敗!\n資料庫配置不正確!");
}
}
/// <summary>
/// 分隔SQL語句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
private string[] splitSql(string sql)
{
Regex regex = new Regex("^GO", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string[] sqlList = regex.Split(sql.ToUpper());
return sqlList;
}
/// <summary>
/// 建立表結構及資料
/// </summary>
/// <param name="connection"></param>
public void CreateStructureAndData(SqlConnection connection)
{
StringBuilder builder = new StringBuilder();
SqlCommand command = null;
//錯誤標誌
bool isHaveError = false;
try
{
ResourceManager manager = new ResourceManager(typeof(YXSchoolSetupService.Properties.Resources));
if (manager != null)
{
connection.ChangeDatabase(_dbName);
command = connection.CreateCommand();
command.CommandType = CommandType.Text;
builder.Append(manager.GetString(_StructureAndDataFileName));
string[] sqlList = splitSql(builder.ToString());
foreach (string sqlItem in sqlList)
{
if (sqlItem.Length > 2)
{
command.CommandText = sqlItem;
command.ExecuteNonQuery();
}
}
}
else
{
isHaveError = true;
}
if (true == isHaveError)
{
CloseConnection(connection);
command.Dispose();
throw new InstallException("資料庫配置失敗!\n請與開發人員聯絡!");
}
}
catch
{
CloseConnection(connection);
command.Dispose();
throw new InstallException("資料庫配置失敗!\n請與開發人員聯絡!");
}
}
#region 修改web.config的連線資料庫的字串
public void ModifyConfig()
{
System.IO.FileInfo FileInfo = new System.IO.FileInfo(_targetDir + "YXData.yixian");
if (!FileInfo.Exists) //不存在web.config檔案
{
throw new InstallException("沒有找到文統配置檔案!");
}
System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
xmlDocument.Load(FileInfo.FullName);
try
{
XmlElement element = xmlDocument.DocumentElement;
if (element != null)
{
foreach (XmlNode node in element)
{
switch (node.Name)
{
case "dbserver":
node.InnerText = _serverName;
break;
case "dbname":
node.InnerText = _dbName;
break;
case "dbpassword":
node.InnerText = _password;
break;
case "dbuser":
node.InnerText = _userName;
break;
default:
break;
}
}
}
xmlDocument.Save(FileInfo.FullName);
}
catch
{
throw new InstallException("修改web.config配置檔案失敗!");
}
}
#endregion
資料據庫測試介面中的程式碼:
/// <summary>
/// 連線測試是否成功
/// </summary>
public bool isConnect { get; set; }
private void frmDb_Load(object sender, EventArgs e)
{
btnNext.Enabled = false;
this.CenterToParent();
}
private void btnTest_Click(object sender, EventArgs e)
{ //將得到配置值傳給主安裝程式類
string serverName = txbServer.Text.Trim();
DBInstaller._serverName = serverName;
string dbName = txbDbName.Text.Trim();
DBInstaller._dbName = dbName;
string userName = txbUserName.Text.Trim();
DBInstaller._userName = userName;
string password = txbPwd.Text.Trim();
DBInstaller._password = password;
isConnect = InstallCommon.TestConnection(serverName, dbName, userName, password);//測試連線,此處呼叫其它類中的程式碼。
if (isConnect == true)
{
lblInfo.Text = "資料庫連線測試成功!";
btnNext.Enabled = true;
}
else
{
btnNext.Enabled = false;
lblInfo.Text = "資料庫連線測試失敗!";
}
}
//取消按鈕
private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.No;
this.Close();
}
//下一步按鈕
private void btnNext_Click(object sender, EventArgs e)
{
if (isConnect)
{
this.DialogResult = DialogResult.OK;
}
this.Close();
}
相關推薦
圖解C#如何為winform程式打包釋出應用
1:新建安裝部署專案 開啟VS,點選新建專案,選擇:其他專案型別->安裝與部署->安裝嚮導(安裝專案也一樣),然後點選確定.(詳細見下圖) 此主題相關圖片如下: 2:安裝嚮導 關閉後開啟安裝嚮導,點選下一步,或者直接點選完成. 3:開始製作 安裝嚮導完
QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式)
QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) 最近,在學習QT5的過程中,想嘗試著把自己寫的工程程式給打包釋出出來,在任何一臺windows系統都能執行,這樣就不會限於電腦需不需要安裝QT安裝包了。 首先,先介紹自己使用的環境。我使用的QT版本是。我的電
Shell指令碼構建Docker 半自動化編譯打包釋出應用
Docker 釋出的方式為實現DevOps(自動化運維,需要配置 程式碼管理工具如Git的hook來實現提交編譯、打包、釋出等一系列事件控制)提供了諸多方便,輔助於Shell指令碼可以很好的配合起來。Docker映象可以通過自動化編譯,也可以通過匯入映象的方式來獲得。本文的題目叫:Shell指令
Qt 下程式打包釋出
環境 QT 5.4.0 VS2015 1 QT在release版本下執行,生成exe檔案 2 新建一個資料夾,將生成的exe檔案拷貝到其中 3 在開始程式中開啟 QT5.4.0 for Desktop 4 開啟之後是一個命令列工具 5 進入新建的資料夾目錄
QT5的程式打包釋出(打包成exe可執行程式)
QT打包的兩種方式: 一個是QT5自帶的windeployqt(不需要下載安裝),它可以找到程式(exe)用到的所有庫檔案,並且都拷貝到exe程式的當前檔案。此時打包的exe較小,需要和拷貝進來的檔案放一起執行,也可以將這些檔案再次打包成一個大的exe檔案,此時用的第二種
Winform程式打包
週末閒暇,閒來無事,想起以前在校做的小專案,於是想打包成exe安裝包,今天和各位碼農分享一下 。 首先開啟自己專案,在工具欄中找到"工具"選擇"擴充套件和更新" 然後選擇”聯機“在右側搜尋框輸入”Visual studio Installer“點選安裝 Visual studio
4-QT的程式打包釋出(將QT5的工程專案打包成一個exe程式)
https://blog.csdn.net/windsnow1/article/details/78004265 最近,在學習QT5的過程中,想嘗試著把自己寫的工程程式給打包釋出出來,在任何一臺windows系統都能執行,這樣就不會限於電腦需不需要安裝QT安裝包了。 首先,先介紹自己使用的環境。
Qt 程式打包釋出總結
1. 概述 當我們用QT寫好了一個軟體,要把你的程式分享出去的時候,不可能把編譯的目錄拷貝給別人去執行。編譯好的程式應該是一個主程式,加一些資原始檔,再加一些動態連結庫,高大上一些的還可以做一個安裝檔案。 QT開發的程式釋出的時候經常採用兩種方式: l 靜態編譯,可
如何解決Qt程式在其他電腦上無法執行的問題(Qt程式打包釋出)
這幾天在研究Qt,首先嚐試用Qt Creator編寫一些小程式來練練手。但是,在這個過程中卻遇到了一個問題:使用Qt Creator編寫的exe程式,只能在本機執行,跑到別的電腦上就無法運行了,提示缺少各種各樣的庫。這個問題,我之前在搞VS-MFC的程式設計時,也遇到過,無非就是一些執行時庫的問題
VS2015+QT5.8 程式打包釋出詳解(包含圖片打包,附工具和原始碼)
之前按照百度的釋出教程,在自己的電腦打得開,在別人電腦打不開,弄了一會,總結的經驗如下: 1.打包程式 第一步:在vs2015中,以release方式除錯程式,然後會在專案資料夾的x64\relea
Linux 下qt 程式打包釋出(使用linuxdelpoyqt ,shell 指令碼)
linux qt 程式打包釋出 1.linuxdeployqt 安裝 最簡單的方法直接下載編譯好的 linuxdeployqt-x86_64.AppImage檔案,將其改名字為linuxdeployqt,並chmod a+x,然後複製到 /usr/loc
web程式打包釋出到Tomcat7
1.打包成war 選中web專案,右鍵 選擇打包成war 選擇路徑 2 .放到伺服器的tomcat7的webapps下 3 重啟tomcat 進入tomcat bin 目錄 cd /u
QT5的程式打包釋出(Windows)
一、平臺及工具 1.平臺 win10 Pro + QT5.7 2.QT5自帶的windeployqt(這個大家不需要下載安裝),另外一個是Engima Virtual Box,這是下載連結Engima Virtual Box 二、步驟 1.開啟一個QT程式,以r
QT學習——qt程式在不同電腦上成功執行(Qt程式打包釋出)
這幾天在研究Qt,首先嚐試用Qt Creator編寫一些小程式來練練手。但是,在這個過程中卻遇到了一個問題:使用Qt Creator編寫的exe程式,只能在本機執行,跑到別的電腦上就無法運行了,提示缺少各種各樣的庫。這個問題,我之前在搞VS-MFC的程式設計時,也遇到過,無非
C#中WinForm程式退出方法技巧總結
在c#中退出WinForm程式包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他們各自的方法不一樣,下面我們就來詳細介紹一下。 1.this.Close()
QT+MySQL程式打包釋出後提示driver not loaded driver not loaded的問題
之前寫了一個程式,用到了QT和MySQL,使用QT自帶的打包工具打包釋出之後,提示問題, 網上搜了很多,都說是缺少資料庫外掛,但是說法略有不同,有的說缺少libmysql.dll,有的說缺少qsqlmysql4.dll…… 沒辦法,只好一個個方法嘗試,過
怎樣為winform程式新增圖示?
一、在VS.NET2005裡面,開啟解決方案管理器,右鍵單擊專案的"屬性",裡面有個圖示一欄,選擇下你要的ICO圖示檔案,就OK 二、在VS.NET2003裡面, 開啟解決方案管理器,右鍵單擊專案的"屬性",依次選擇"
qt5+vs2017程式打包釋出,在其他電腦上執行
最近剛剛接觸qt5編寫介面程式,新手上路可謂是困難重重啊,你永遠不知道下一個困難會在什麼時候出現,這裡分享一個qt5+vs2017的打包釋出方法,希望能對新手有所幫助,廢話不多說,請繼續看下去。 一、dll(動態庫連結) 釋出qt程式,就要找到dll檔案,使
python程式打包釋出方法整理
相關配置: Anaconda 4.2.0 (64-bit) Python 3.5.2 如果只是單一的python程式,打包釋出***.exe的步驟如下: 1.pip install pyinstaller 2.【Enter+R】開啟cmd 3.cd 到新建的檔案目錄
InstallShield 程式打包釋出 具體操作步驟
1 建立 工程 選擇 InstallScript MSI Project,其兼具Basic Project基本型別和Installscript Project全指令碼型別兩者的優點。 2 Project Assistant (1)Appli