簡體   English   中英

使用.NET winforms應用程序安裝MYSQL

[英]MYSQL installation with a .NET winforms app

我有一個利用MYSQL的C#應用​​程序。 我正處於測試版發布點,需要一個包含我的應用程序的安裝包,以及MYSQL。 所以基本上,我需要安裝MYSQL並從我的.NET安裝包中執行恢復。

任何幫助將不勝感激。

第1步:你做錯了

您正在嘗試安裝mysql 服務器 這應該是你第一個發現錯誤的線索。 大多數服務器應用程序都設計為安裝在服務器上,而不是客戶端上。 值得注意的是,服務器應用程序喜歡假設他們擁有“服務器”。 對於客戶端應用程序來說,這是一個巨大的禁忌。

第2步:做出決定,現在我們得到了適當的通知

現在我們已經確定我們做錯了,我們需要選擇做什么。 我們有兩個選擇:

  1. 從MySQL切換到“客戶端”數據庫,如SQLite或SQL Server Compact Edition。
  2. 解決安裝服務器應用程序的問題。

我個人會建議盡快切換到SQLite(或類似)。 這是“正確的事情”,你不必在未來幾年內維持黑客行為。

第3步:無論如何你都想破解MySQL,因為它似乎更容易。

你被警告了。 以下是您需要注意和緩解的一些事項:

  1. MySQL想要安裝到程序文件\\ mysql中。 如果用戶已經安裝了MySQL。 你會破壞一切
    • 您需要告訴您的MySQL版本安裝到自定義文件夾中。 我推薦它作為您應用程序的子文件夾
  2. MySQL希望作為服務運行(該服務可能被稱為'mysql')。 再次,如果用戶已經有mysql,你將打破一切。
    • 您需要以不同的名稱運行您的服務
  3. MySQL服務器可能希望將文件寫入Program Files \\ etc.
    • 您需要更改它的配置,以便寫入%APPDATA%等等
  4. MySQL將假設它始終由同一個用戶運行。 如果您的計算機上有2個用戶想要使用您的程序,那么您需要通過運行MySQL作為本地服務帳戶(安全漏洞)來安裝,或者為每個用戶安裝一個單獨的mysql。

所以考慮到這一點,我想說你最好的辦法是設置一個xcopyable mysql

我在另一個問題上發布了答案

我們對此采取了不同的方法。 我們通過在調用MySQL之前編寫包裝器來生成配置文件(以正確設置基本路徑等)來使MySQL xcopy-able成為可能。 然后我們使用標准設置安裝了另一個服務。 這項服務將負責為我們啟動MySQL和其他所需的后台程序(在我們的例子中為Apache)。 由於MySQL由我們部署,我們希望完全控制它。

因此,使用此方法,您可以簡單地包含MySQL軟件包以及您的安裝,並且只是擔心安裝自己的服務。

這個問題與另一個問題非常相似。 但是,答案並沒有真正幫助。

您可以從.Net部署項目中的自定義操作運行可執行文件 ,這就是我建議的。 (請在“將可執行文件作為自定義操作調用”標題下查找)

希望通過命令行可以處理所有事情。 如果沒有,嘗試像Wise或InstallShield這樣的腳本安裝程序,我認為他們可以更好地支持這樣的東西。

希望有所幫助!

如果您正在使用或可以使用NSIS,您應該閱讀: 無聲MySQL安裝

關於還原,您可以使用MySQL包含的utils之一編寫腳本或修改此舊NSIS腳本的一部分

祝好運!

@Orion Edwards

非常感謝您的步驟。 我對SAME有疑問。 事實上,我們剛剛拒絕了SQLite,因為我們的獨立應用程序需要一些程序和外鍵約束。但是現在我覺得如果將SQLite部署在客戶機上,SQLite總是更好的選擇。

現在,我必須堅持使用MySQL。 所以我使用不同類型的腳本和機制來處理不同的可能情況。 例如:

  • 如果客戶端計算機沒有預安裝mysql,則會有一個腳本完全安裝服務器並創建數據庫,這是我的應用程序所需的用戶。
  • 如果客戶端機器上預裝了mysql,我會詢問用戶mysql的root用戶名和密碼,並在apllication中設置數據庫和用戶。
  • 第三,如果由於某種原因客戶端機器早先有mysql服務器然后它被卸載,因為即使卸載后mysql也會跟蹤以前的root密碼,我運行mysql服務器的.msi,重置密碼(手動執行一些步驟),最后在腳本中創建數據庫實例(當然這些步驟需要由美國而不是用戶執行,因為這是非常罕見的情況。)

這種方法可以嗎? 或者有更好,更合適的方法來做到這一點?

將來我想我會堅持SQLite :-P

看看使用Visual Studio的包和部署工具。 如果您本地連接(MySQL .NET組件)而不是ODBC連接,它應該自動引入MySQL依賴項。 在任何情況下,它都允許您將其他軟件添加到安裝程序中,如果需要,可以自動解壓縮。 我使用它來使用從MySQL網站下載的MySQL庫和CoreLab的MySQL第三方庫來部署C#應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM