2014-06-23 70 views
-1

我需要安裝一個由多個文件組成的程序,就像大多數Windows程序一樣。但是:我會如何在WiX中做到這一點?

  1. 它需要在沒有Admin的情況下工作。該應用通常放在應用程序本地文件夾(%APPDATA%下)。

  2. 不能顯示任何UI或提示(如果沒有錯誤)。現有的代碼只是將所有內容提取到app-local目錄,然後運行它。 (它比這更聰明,但它顯示了在這種情況下使用ad-hoc代碼有多簡單)

  3. 下載一些文件。可能不需要的文件或更新中未更改的文件不在自解壓EXE中,而應從URL下載。

  4. C++運行時DLL通常出現在System32中,而以前的應用程序使用官方可再發行MM。但是,如果沒有,請將文件下載到應用程序本地目錄。這與(3)的不同之處在於,不是看看目標位置中是否存在相同的文件,而是查看LoadLibrary是否工作。 (同樣,對於安裝TTF字體)

我通過看在WiX的文檔頁面不堪重負,而且不知道這是病入使用WiX的。那麼,你能指出一些關於如何做到這些的具體說明嗎?

謝謝。

+0

現在可以暫時停止使用嗎?我真的很想得到答案,所以我希望很快就能看到它。 –

回答

2

只用Windows Installer,沒有。 Windows Installer總是顯示至少一個非常小的啓動UI,或者如果使用適當的命令行參數調用,則根本不顯示,即使出現錯誤。

您可以使用Windows Installer API安裝MSI以控制顯示的UI數量並顯示您自己的錯誤,包括錯誤。但是,WiX爲您提供了一個平臺。

WiX Toolset爲MSI和EXE提供引導程序/打包程序/ chainer /下載程序/重新啓動處理程序/程序包管理器。由於它的引擎被稱爲「刻錄」,因此使用它創建的引導文件有時稱爲「刻錄包」。 Burn有一個應用程序問題的擴展點,如UI,稱爲引導程序應用程序。標準引導程序應用程序總是顯示一個UI。你可以用C++或.NET編寫自己的代碼。

這就是說,你應該認識到兩件事。 Windows Installer是一個組件管理器。它有一個可以跨產品共享的已安裝組件(如文件)的數據庫。它不適合作爲自解壓檔案。 WiX引導程序有點類似,是一個程序包管理器。它有一個可以跨產品共享的已安裝軟件包數據庫。它不是簡單的引導程序。

我不太確定你的觀點4.使用供應商的安裝程序正確安裝可再分發的軟件更清潔,理想情況下它可以靜默運行,並可以自行檢查以前的安裝並快速退出成功。但是,如果您發現有關如何通過文件或註冊表搜索來檢查以前安裝的文檔,則可以在WiX引導程序中聲明這些文件以繞過下載和安裝這些軟件包。

在WiX引導程序中,軟件包可以標記爲永久性的,因此在卸載產品時它們不會被卸載。這可能適用於C++運行時。這樣,不使用WiX引導程序的產品不會因卸載而中斷。

BTW-WiX本身和Visual Studio使用WiX引導程序。

+0

我無法使用VS10 RTL Redistributable安裝程序,因爲它不可見並且需要管理員。 想到組件管理器如何不適合自解壓存檔的好食物。我只是希望避免一個大的靜態鏈接EXE只是安裝程序,並處理下載。 –