1. 程式人生 > >圖解C#如何為winform程式打包釋出應用

圖解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