2012-04-29 55 views
1

Windows安裝程序可以像普通應用程序一樣執行邏輯嗎?Windows安裝程序可以像普通應用程序那樣執行邏輯

例如:我創建安裝插件文件到第三方應用程序的C盤目錄下的安裝程序。但是,如果用戶具有舊版本的第三方應用程序,則目標目錄將會不同。

因此,安裝程序需要確定C驅動器上的第三方應用程序的版本。如果它的新版本我將插件文件安裝到C:// Program Files // 3rdPartyApplication //並且如果它的舊版本我安裝到C:// 3rdPartyApplication //

因此,Windows安裝程序可以執行邏輯和如果不是,它可以運行批處理文件,可以做到這一點?

+1

您使用的是Wix嗎? :http://wix.sourceforge.net/ – 2012-04-29 02:46:43

+0

如果你告訴我如何知道第三方應用程序的版本是什麼,什麼是「舊版本」和什麼是「新的」,我會告訴你一個批次文件,做你想做的。 – Aacini 2012-04-30 05:04:48

回答

1

的「安裝程序」只是一個普通的應用程序,旨在解開它的內容到一個人的硬盤驅動器,並且可能執行類似註冊表修改操作。

如果你使用像安裝例如屏蔽一個安裝程序,您必須看那個安裝文件,看看有什麼可以做的。大多數安裝程序應用程序都有某種區域來創建自定義腳本。

你也可以建立你自己的,這真的不是很難。

+0

當然,我不會推薦自己編寫安裝程序應用程序:它看起來並不那麼簡單。你必須關心很多不同的事情,你可能不會預料到會發生。這就是爲什麼建議使用經過全面測試的現有安裝程序套件。有免費的開源套件以及商業選擇。 – 2012-04-30 09:23:20

1

是的,安裝程序可以像常規應用程序一樣執行邏輯。從這個角度來看,安裝程序是一個常規應用程序。

您如何編寫安裝程序邏輯取決於您使用的安裝程序套件。對於檢測C:\Program Files\3rdPartyApplicationC:\3rdPartyApplication是否存在的應用程序,你可以使用的WiX ToolsetFileSearch元素,期待通過Windows安裝程序文件:Searching for Existing Applications, Files, Registry Entries or .ini File Entries

更復雜的邏輯可以通過custom actions來實現。 [自定義操作}(http://msdn.microsoft.com/en-us/library/aa368066.aspx)可以用JScript,VBScript,C/C++(DLL或EXE)編寫;但是EXE無法與Windows安裝程序會話)。

1

我想給出一個不同的觀點。 Windows Installer是一種聲明性域特定的編程語言。它不是一個圖靈完整的通用編程語言。它並不打算像任何其他應用程序一樣。它可以用通用編程語言(如C++/C#)編寫的自定義動作進行擴展,但它應該遵循相同的聲明式方法,在這種方法中,將「如何」從「要做什麼」中分離出來。

現在回答你的問題的第二部分。 Windows Installer內置了搜索功能。閱讀AppSearch標準操作和相關表格(AppSearch,Signature,DrLocator,CompLocator,RegLocator)上的MSDN主題您也可以在組件上添加條件,並且可以動態設置目錄目標,所以是的,有辦法做你想做的事情。

這將需要更多的信息來解釋如何做到這一點。

0

是的,Windows安裝程序可以像正常應用程序一樣執行邏輯。

您可以使用WiX的工具集,由阿列克謝的建議來完成這項工作。

如果您想使用註冊表項進行檢查,則可以使用FileSearch元素(http://wix.sourceforge.net/manual-wix3/wix_xsd_filesearch.htm)檢查是否存在文件或RegistrySearch元素(http://wix.sourceforge.net/manual-wix2/wix_xsd_registrysearch.htm)。

或者,如果搜索不像檢查文件或註冊表那樣簡單,自定義操作將允許您編寫託管或非託管代碼(根據您的偏好)來檢查第三方應用程序的哪個版本是安裝。

根據搜索結果,您可以在運行時更改安裝目錄。 35型自定義操作可讓您更改安裝目錄: http://msdn.microsoft.com/en-us/library/windows/desktop/aa368093%28v=vs.85%29.aspx

相關問題