2012-04-10 89 views
10

我們正在使用Inno Setup,並計劃將其替換爲WiX。但是當評估和玩弄WiX時,我覺得聲明式方式與編程式設置解決方案相比有一些侷限性。Wix#WixSharp與WiX相比的經驗

此外我發現WiX文檔相當稀少。所以我遇到了Wix#(WixSharp),它承諾以編程方式通過用C#編寫的腳本文件來創建WiX源代碼。

然而,我們對一些非常小的公司甚至是「單人秀」都有一些負面經歷。因此,我只是想問一下關於Wix#(WixSharp)的經驗,或者其他更好的選擇。你能報告一些優點或限制嗎?

+0

奧列格寫的原來的CsScript自2004年以來一直存在。 https://github.com/oleg-shilo/cs-script/wiki我喜歡它自己的外觀 – 2016-10-02 09:03:01

回答

11

維克斯#看起來像一個改善良好的下注「明年將會」;見下文。並且請注意,自定義操作現在在Wix#中非常簡單。

從這篇文章: http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX

在2014年7月維克斯#是在更寬鬆的MIT許可重新發布的,它現在託管在CodePlex上。 https://wixsharp.codeplex.com/

2014年8月Wix#的用戶界面擴展已發佈,並在此CodeProject文章中描述:「Wix#(WixSharp)UI擴展」。
http://www.codeproject.com/Articles/804584/Wixsharp-WixSharp-UI-Extensions

新Wix#功能出現的事實預示着產品的良好預兆。

由於Wix#是基於WiX和Windows Installer技術構建的,因此它只能執行WiX中可能的操作。當Wix#耗盡氣體時... WiX可以執行很多Wix#C#語法中無法直接提供的內容,所以您通常可以直接使用WiX XML技術來縮小差距。另請參閱我的答案,以瞭解更多使Wix#生成.wxs XML,然後包括其他WiX XML代碼以及調用Candle和Light將生成的組合XML構建到MSI中的其他示例。 Programatically building an MSI

下面是我迄今爲止所經歷的WiX和Wix#優點和缺點的快速,非詳盡的列表。

維克斯/維克斯#優點:

  • 它產生真正的Windows Installer的MSI文件。
  • 卸載功能是「免費」;你會自動獲得可靠的卸載程序。
  • 我的環境中的服務器管理員隨時願意接受我作爲開發者希望安裝的MSI文件,因爲他們信任MSI技術和卸載功能。
    • 只要您使用WiX或Wix#本機語法創建它們,並且不合並.reg文件,Windows註冊表項就包含在「免費」卸載中,並且不會合並.reg文件 - 您將無法獲得註冊表項卸載那種方式。

維克斯/維克斯#缺點

  • 因爲它限於Windows安裝程序的功能集,一些 「程序」 的東西是很難在維克斯和維克斯#做

WiX Pros

  • 很多很棒的例子和支持資源(「我如何在WiX中」)可在網上找到。
  • 收集註冊表條目和放入XML WiX語句的實用程序運行良好。

WiX的缺點

  • 作爲一個C#開發人員,我發現WiX的XML是不直觀上手 用,直接處理XML文件。 Wix#和C#在開始時比WiX更有意義 。

維克斯#優點

  • 自定義操作,現在是簡單的維克斯#實現。
  • Wix#與Visual Studio整合得很整齊。我目前正在使用VS2013。
  • Wix#和C#在開始時比WiX XML更有意義。更好的起點。
  • Wix#以更平易近人的方式幫助我學習WiX。瞭解Wix#中有哪些功能和哪些功能無效#有助於理解WiX。

維克斯#缺點

  • 維克斯#的例子是目前很多困難在網絡上得的。通常有必要研究如何使用WiX,然後弄清楚如何將其應用於Wix#。
  • 我沒有找到收集註冊表項並在WiX#C#代碼中表達的自動路徑。我手動翻譯了.reg文件條目。有必要在Wix#「RegValue(」語句中獲得註冊表項的註冊表條目 注意:開發人員在2015年1月發佈的版本中添加了此功能,但我還沒有嘗試過。

我會說,在NSX和過去一代基於腳本的安裝程序(例如,老版本的Wise版本)中,很顯然,在WiX/Wix#中使用簡單的&在WiX/Wix中需要額外的研究和創造性總而言之,我認爲Wix#是一種成長技術,是現在和將來使用的一種安全賭注。最糟糕的情況是,你仍然有你的。wxs文件,並且可以轉換爲使用直接的WiX XML方法來構建安裝程序,並且您仍然可以從Wix#time投資中獲得價值。

最新更新的常見任務安裝

爲一體的維克斯#產品一月2015參見:https://wixsharp.codeplex.com/releases/view/610843][1]

  • 現在可以導入.reg的註冊表設置,而不是文件手工編碼註冊表類條目
  • 對Windows配置文件修改的額外支持
  • 對Windows服務安裝的特定支持
  • 支持傳遞參數值遞延自定義操作,所有的WiX的配套基礎設施正常自動生成
  • 在目標系統目錄的絕對路徑的支持,所有的WiX的配套基礎設施正常自動生成
+1

編輯添加2015年1月發佈的一些有用功能列表。雖然以前大部分這些事情都是「可能的」,但現在它們更加平滑。例如,直接簡單地導入和使用.reg文件(與在C#中手動編碼註冊表項)並且仍然可以獲得註冊表項的免費「卸載」功能,這是一項巨大的生產力提升。 – Developer63 2015-01-22 03:43:04

+1

我使用了「導入.reg文件」功能,它工作得很好。但是,我想將導入的.reg文件中的註冊表設置分配給特定的Wix/Wix#「功能ID」,例如,基本安裝獲取一組.reg條目,全功能安裝獲取基本條目以及一些額外的第二個.reg文件中的條目。爲此提交了請求,開發人員表示爲即將發佈的版本開展工作。 – Developer63 2015-02-21 03:13:54

+1

Wix#很不錯,有很多樣品。 – 2016-05-05 10:36:45

0

WiX已經有相當長的一段時間了,並且有很多社區支持。我一直在做安裝(在我的業餘時間:)大約8年,並且從未發現任何我在WiX中無法做到的理由。

這是我第一次看到WixSharp。我的第一反應是目前它的穩定性是0.1.42。我也很關心在WixSharp中實際實現了多少MSI模式。它看起來很有趣,但是我更喜歡XML文件。我真的沒有看到在C#中做任何優勢。

+1

我想在設置過程中執行一些自定義操作,並且發現它在Wix和I中並不舒服希望我會找到一種更好的方式來直接在C#中使用WixSharp實現自定義操作。您是否必須執行自定義操作,如啓動服務或檢查更復雜或更復雜的條件?你如何處理Wix? – MrCube 2012-04-17 07:18:36

+0

對於Dan Vallejo,對我來說,使用C#比使用XML更容易。對於已經知道WiX XML的人來說,這並不重要。 Wix#/ C#的另一個優點是安裝程序代碼的可讀性。我和我們的服務器管理員一起走過Wix#代碼,向他們展示安裝程序(.NET COM Interop註冊表項等)中的內容,他們能夠理解Wix#代碼,並因此感到舒適地運行他們是管理員的服務器上的安裝程序。 – Developer63 2014-12-17 01:05:02

+0

@MrCube,到目前爲止,我還沒有*有*在我的安裝程序中執行重要的自定義操作。我在一個安裝程序中包含了一個簡單的自定義操作shell,並發現在Wix#installer中包含自定義操作非常簡單。請參閱http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX上的CodeProject文章中的Wix#Custom Action示例。 Wix#安裝文件夾中還有一個Custom Action示例,位於文件Samples \ AllInOne \ MyAppWix.cs中。 – Developer63 2014-12-17 01:19:39