2009-03-02 22 views
5

任何人都可以列出在Windows上以編程方式安裝應用程序所需的步驟。除了複製他們需要的文件之外,還有哪些額外的步驟需要使您的應用成爲Windows中的一流公民(即出現在程序列表,卸載列表等中)如何在Windows上編程安裝?

我試圖谷歌這個,但沒有運氣。

順便說一句:這是一個非託管的C++應用程序(在Qt中開發),所以我寧願不涉及.net框架,如果我不必。

回答

7

我認爲主題,你會看到這裏的答案是,你應該使用安裝程序你不應該自己編寫安裝程序。使用許多安裝程序製造商之一,如Inno Setup,InstallSheild或別人推薦的任何其他安裝程序製造商。

如果您嘗試自己編寫安裝程序,那麼您可能會犯錯。這對你個人來說並不輕微。只是安裝程序應該考慮很多小細節,以及很多可能出錯的地方,如果你想自己編寫安裝程序,你只需要把所有這些事情都做好。這意味着您需要進行大量的研究和大量測試。省去麻煩。

除了複製文件之外,安裝任務也會有所不同,具體取決於您的程序需要什麼。也許你需要在開始菜單上放一個圖標;一個安裝工具應該有一種方法可以很容易地實現,自動填充客戶在安裝中選擇的安裝位置,甚至可以爲快捷方式的標籤選擇正確的本地語言。

您可能需要創建註冊表項,例如文件關聯或許可。您的安裝程序工具應該已經有一個簡單的方法來指定要創建或修改的鍵和值。

您可能需要註冊一個COM服務器。這是一種常見的行爲,您的安裝程序工具可能會將其指定爲文件後複製操作的一部分。

如果您選擇的安裝程序工具尚未提供某些操作,則該工具可能會提供一種方法來添加自定義操作(可能通過腳本語言或可能通過鏈接來自DLL的外部代碼)寫入包含在您的安裝程序中。自定義操作可能包括從特定網站下載更新,發送電子郵件或清點貴公司已安裝的其他產品。

一對夫婦的最後的東西,一個安裝工具應該提供辦法申請升級到現有的安裝,辦法卸載程序,撤消所有的安裝任務(刪除文件,還原備份,註銷COM服務器等)。

5

我已經使用Inno Setup將我的軟件打包爲C++。與InstallShield等重型解決方案相比,它非常簡單。一切都可以包含在一個setup.exe中,而無需創建所有這些瘋狂的批處理腳本等等。

看看這裏:http://www.jrsoftware.org/isinfo.php

+0

在獲得InnoSetup時,確保獲得GUI Inno Tools;它使設置安裝腳本非常簡單,並且可以運行編譯器來構建安裝,而無需轉到命令提示符。 – 2009-03-02 22:45:41

0

你已經獲得的主要步驟。你遺漏的一個是安裝在開始菜單上,並提供一個選項來創建桌面和/或快速啓動圖標。

我鼓勵你看看使用安裝程序,如傑里米建議。

10

我強烈推薦NSIS。開源,非常活躍的開發,很難匹配/打敗它的可擴展性。

你的程序添加到添加/刪除程序(或程序和功能)列表中,添加下列REG鍵:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAM_NAME] 
"DisplayName"="PROGRAM_NAME" 
"Publisher"="COMPANY_NAME" 
"UninstallString"="PATH_TO_UNINSTALL_PROGRAM" 
"DisplayIcon"="PATH_TO_ICON_FILE" 
"DisplayVersion"="VERSION" 
"InstallLocation"="PATH_TO_INSTALLATION_LOCATION" 
+0

爲什麼選擇投票? – 2009-03-02 22:54:02

+0

我不知道。也許有人討厭NSIS。 – 2009-03-02 23:06:14

+0

也許有人認爲你沒有真正回答這個問題,而是隻說了一個例子。 – 2009-03-03 01:25:31

1

爲innosetup(強烈推薦)的GUI是Istool

你也可以使用內置於Visual Studio中的MSI安裝程序,這是一個更陡峭的學習曲線(即很痛苦),但如果您在公司環境中安裝軟件,則會很有用。

2

這聽起來像你需要檢查Windows安裝程序系統。如果您需要本質,請參閱official documentation。有關新聞,請閱讀安裝程序團隊的blog。最後,既然你是一名程序員,你可能希望像程序員那樣構建安裝程序。 WiX 3.0是我的首選工具 - 開源代碼,由微軟引導。從this tutorial on WiX開始。這很好。

1

爲了讓你的程序在開始程序菜單顯示, 您將需要創建文件夾 C:\ Documents和Settings \所有用戶\開始菜單\程序 並增加了一個捷徑,你想程序發射。 (如果你希望你的應用程序直接在開始菜單中列出 ,或者在程序的子菜單, 你會把你的短切相應目錄中)

要programically創建一個快捷方式,你可以使用的IShellLink (See MSDN article).

由於您想要卸載,因爲您不想簡單地刪除DLL或其他常見文件而不檢查依賴關係,因此需要更多的參與。 我會推薦使用安裝程序/安裝生成器,尤其是在Vista如此持久的情況下,如果您需要的不僅僅是一個可執行文件和一個開始菜單快捷方式,它將變得相當複雜,推出自己的安裝 。

我幾年來一直在使用Paquet Builder設置發生器。 (註冊版本包括卸載)。