2011-11-20 44 views
2

我經常發現報價「InstallUtil.exe」是一個醜陋的模式或「不要使用InstallUtil.exe」,我應該使用本機WIX或安裝包模式,但我仍然不明白爲什麼。WIX InstallUtil/InstallUtilLib和配置文件部署爲什麼InstallUtil不好?

我不再使用InstallUtil來安裝.NET服務,因爲我終於瞭解到爲這樣的動作編寫註冊表項應該是一個不可安裝的動作 - 而且我認爲這是正確的。

正如我一直在努力通過我的維克斯安裝程序相對複雜的產品,我發現自己需要創建或更新SQL Server數據庫,創建或更新IIS應用程序,最後更新或創建配置文件。

我的每個組件(功能)都是可選的,但它們都共享相同的配置文件。由於我的產品使用了統一性,所以需要注意的是,該庫強大支持從Unity配置模塊中讀取/更新/刪除組件,因此對我來說,我應該利用安裝組件(如InstallUtil )在安裝時創建或更新我的配置文件。

只是要清楚在這裏,我的安裝程序本身不包含我的應用程序配置文件:在安裝時,安裝程​​序沒有想法,它的形狀,它的基礎上選擇的功能。當然,我應該將這些知識嵌入到每個要部署的模塊中,而不是放在現在是完全獨立項目的安裝程序的職責範圍內?即使我們在談論安裝,這會不會破壞O-O校長?

我真的很感謝一些指導,看看這是不是好的做法?我在讀「InstallUtil」是壞的安裝服務,抑或是用「InstallUtil」是壞全站?如果是這樣,我有哪些選擇來更新配置文件?

回答

1

的主要原因是避免InstallUtil是它運行安裝事務之外,所以Windows安裝程序無法跟蹤的東西,它的完成。

我已經使用上有幾次,當InstallUtil我只是不能讓維克斯做什麼,我需要和沒有時間來寫一個自定義操作。在這種情況下,我調用了InstallUtilLib版本,因爲我覺得這是一種更簡潔的方法。

我用這個blog爲指導,就如何實現這一目標。

+0

感謝大衛的回答,我傾向於認爲我的程序集應該知道如何在一定程度上部署自己。例如,即時創建配置文件。我不確定這是否被認爲是邪惡的,但它允許有問題的應用程序控制配置文件並保持緊密耦合的信息。非安裝程序頭腦的開發人員則不會麻煩更新安裝包。 –

+0

在我刪除'/ BinDir =「[TARGETDIR] \」/ Package =「[ProductName]」部分之前,該博客中的示例在.NET 4.0上對我無效。看來這部分不再需要。 –

+0

@JorritSchippers你好。我試圖讓它工作。什麼是「$ SampleComponent」變量?你能分享工作wix xml嗎?我真的迷失了。 – Hooch