2017-08-31 157 views
0

我正在使用wix中的自定義託管引導程序應用程序。我的安裝程序會安裝我的應用程序的.Netframework461(如果需要),redist_x86和msipackage。如何靜默卸載捆綁在wix捆綁包中的InstallShield.exe?

我的新要求,是我需要安裝一個InstallShied EXE以上的部件。我可以靜靜地安裝installshield exe,但卸載installshield不會發生在我的安裝程序中。

我在威克斯束文件添加的代碼在下面給出:

<PackageGroup Id ="InstallShield"> 
    <ExePackage Id="InstallShield" DisplayName="InstallShield" InstallCommand="/s /v/qn" UninstallCommand="/x /s /v/qn" PerMachine="yes" Vital="yes" Permanent="no" SourceFile="setup.exe" Compressed="yes"/> 
</PackageGroup> 

另一interestting部分是,我可以安裝和靜默使用在命令提示中的代碼中使用的相同的命令uinstall相同的InstallShield的exe 。

我的安裝程序和命令提示符都以管理員模式運行。

而且更多的研究,我瞭解後靜默安裝它刪除EXE的細節,因此沒有得到的InstallShield的EXE進行卸載。我不知道這是對的觀察與否。下面顯示了我的日誌文件中顯示的錯誤。

enter image description here

我得到了一個解決方案爲其生成安裝響應文件。我發現的命令如下。

的Setup.exe/s的/f1"[SETUPSUPPORTDIR]\Setup.iss」

但我的問題是我怎麼能悄無聲息相對於上述響應文件卸載。什麼是正確的卸載命令呢?

+0

不同類型的InstallShield白手起家的需要不同的命令行來安靜地執行。你知道它是從什麼樣的項目構建而來的,或者是否有文檔來告訴你調用它的參數? –

回答

1

你有你的ExePackage沒有DetectCondition所以沒有辦法引導程序來確定安裝或卸載時可執行文件是否被安裝。

確定軟件包是否存在於目標系統上的條件。這種情況可以使用搜索返回的內置變量和變量。這種情況是必需的,因爲Windows不提供檢測ExePackage存在的方法。 Burn使用此條件來確定如何在捆綁操作期間處理該包;例如,如果這個條件是錯誤的或者被忽略,並且軟件包正在被安裝,Burn會安裝這個軟件包。

通常情況下,您通過使RegistrySearch查找產品安裝時存在的特定註冊表項或位置,並將變量設置爲其值或true或false,以確定它是否存在,從而執行檢測條件。然後,可以根據變量的值輕鬆評估您的檢測條件,並且您的引導程序會知道嘗試卸載或安裝產品。

+0

非常感謝。這真的很有幫助。我添加了一個檢測條件,它工作正常。 – SHK

0

更改 '永久性= 「是」' 到 '永久= 「不」'。目前,您的安裝程序甚至不會嘗試卸載卸載時的.exe軟件包,因爲它被列爲永久性文件。

+0

我已經試過這個,但沒用。 – SHK

0

我不知道,但你可能需要創建執行的InstallShield SETUP.EXE卸載過程中響應文件(這將是在安裝過程中創建的一個不同的響應文件)。看到這個答案:Installshield Silent Uninstall not working at Command Line

設置。EXE開關:

和投擲這個好措施:http://unattended.sourceforge.net/installers.php

+0

謝謝你的時間。我得到了檢測條件的結果。 – SHK