我想創建一個安裝程序不「攜帶」任何文件,但沒有設置註冊表項並創建一個小文件夾結構(如果不存在)Wix安裝程序 - 創建安裝程序,總是重新安裝在自己
該腳本確實使用CopyFile將文件從網絡位置複製到C驅動器上的文件夾。
這個想法是創建一個安裝程序,只要網絡文件被更新,就可以重新運行,以便將它們帶到本地用戶。
的代碼的CopyFile有RemoveFile線只是在它前面的(在同一組件),因此該文件應始終複製「新鮮」
的文件夾結構和註冊表項並不真的需要重複,但贏得不管他們是否重要。
我也不擔心卸載(也不知道它是什麼,因爲總是需要安裝)但是我無法在系統中安裝後創建安裝,所以我需要以某種方式進行升級。
我有(目前有)在我的WXS腳本的這些位文件
http://schemas.microsoft.com/wix/2006/wi'>
<Product
Id='*'
Name='Eclipse Template Installer'
UpgradeCode='$(var.ProductUpgradeCode)'
Version='$(var.ProductVersion)'
Manufacturer='Article 10'
Language='1033'>
<Package InstallerVersion='200' Compressed='yes' Comments='Windows Installer Package' />
<Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
<Upgrade Id="$(var.ProductUpgradeCode)">
<UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/>
<UpgradeVersion Minimum="0.0.0" Maximum="$(var.ProductVersion)" IncludeMinimum="yes" IncludeMaximum="yes"
Property="OLDERVERSIONBEINGUPGRADED"/>
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize"/>
</InstallExecuteSequence>
當我運行首次安裝程序,它的工作原理。文件被複制,並且都很好。
然後,我調整我的一個複製文件以強制新的日期/時間,並重新運行安裝程序。它彈出表明它正在收集信息,但不會替換舊版本的文件,所以我認爲安裝程序已經斷定它不需要做任何事情,因爲當前的「最新版本」已經安裝了?
如果我選擇程序和功能中的修復,文件不會更新。
我試着將IncludeMaximum設置爲yes,但似乎沒有幫助。同樣的結果。
我也嘗試了MajorUpgrade命令而不是InstallExecuteSequence,但我得到了相同的最終結果。也許出於不同的原因,但不是很確定。也許沒有正確使用它。
任何人都可以告訴我如何強制我的安裝程序重做它原來所做的一切,即使該版本匹配?
我的客戶端無法創建新的MSI文件,因此更新版本和重建不是一個選項。他們只是想更新網絡文件(模板)並重新運行MSI以獲取本地文件。
MSI的第一次運行也爲模板配置了他們的機器,因此它非常簡單,這正是他們想要的。
感謝
西蒙
您無法重新運行相同的安裝程序 - 它只是進入已安裝產品的維護模式,並沒有真正做太多 - 這不是修復,因爲產品已安裝。修復確實可以恢復受更換規則等因素影響的文件。從我所知道的情況來看,Windows Installer不太適合做你正在做的事情,除非修復日期和修復是你所需要的,所以寫一個程序來修復日期,然後修復已安裝的產品。 – PhilDW 2015-04-02 18:19:35