我有適用於我的應用程序的Windows安裝程序。應用程序包還包含安裝程序類,其中執行的某些操作在「自定義操作」中執行。有關通過Windows安裝程序安裝應用程序的問題
安裝過程中,安裝程序會從自定義操作中安裝另一個應用程序。我想知道這個應用程序是否已經存在相同的版本,我不想安裝或提供Messagebox asknig來重新安裝Y/N。
如果我的應用程序已經安裝,並且再次點擊相同的安裝程序,我會得到「修復」和「刪除」選項。但是,如果安裝程序是新建的,我會看到一個對話框,指出「已安裝另一個版本...使用添加刪除程序刪除..」。所以我不能在不卸載它的情況下更新現有版本。我如何更新現有版本?
任何幫助或指導這兩個查詢,高度讚賞。我在網上看了這些,但不能得到apropriae答案。如果你能幫助我,那真是太好了。
CODE
prouct.xml
<?xml version="1.0" encoding="utf-8" ?>
<Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="My.Bootstrapper.ABC">
<!-- Create Package, Product Manifest http://msdn.microsoft.com/en-us/library/ee335702.aspx
Schema Reference : http://msdn.microsoft.com/en-us/library/ms229223.aspx
-->
<PackageFiles>
<PackageFile Name="XYZ.exe"/>
</PackageFiles>
<InstallChecks>
<!-- If its installed, it will be in Uninstall. DisplayName will be XYZ2.1_rc22
Can still get values of DisplayVersion (2.1_rc22) & UninstallString from this key
-->
<RegistryCheck
Property="IS_XYZ_INSTALLED"
Key="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XYZ"
Value="DisplayName"/>
</InstallChecks>
<Commands>
<Command PackageFile="XYZ.exe" Arguments="/Install">
<InstallConditions>
<BypassIf Property="IS_XYZ_INSTALLED"
Compare="ValueEqualTo" Value="XYZ2.1_rc22"/> // tHIS IS THE DISPLAYNAME, THAT I SEE IN REGISTY
<FailIf Property="AdminUser"
Compare="ValueNotEqualTo" Value="True"
String="NotAnAdmin"/>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<ExitCode Value="1641" Result="SuccessReboot"/>
<ExitCode Value="3010" Result="SuccessReboot"/>
<DefaultExitCode Result="Fail" String="GeneralFailure"/>
</ExitCodes>
</Command>
</Commands>
</Product>
package.xml中
<?xml version="1.0" encoding="utf-8" ?>
<Package xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
Name="DisplayName" Culture="Culture">
<!--Check for XYZversion 2.1_rc22 -->
<Strings>
<String Name="DisplayName">Install My XYZ</String>
<String Name="Culture">en</String>
<String Name="NotAnAdmin">Administrator permissions are required to install XYZ.Contact your
administrator.</String>
<String Name="GeneralFailure">A general error has occurred while installing this
package.</String>
</Strings>
</Package>
UPDATE: 我想安裝XYZ如果不alerady安裝PC。使用上面的代碼,它不會作爲先決條件安裝。在先決條件中,選擇我的應用程序(以及Windows Installer 3.1 & .NET3.5),並選擇「從與我的應用程序相同的位置下載prereq」。在安裝項目的構建中,我在Rel中獲得3個文件夾(對於winIns,我的應用程序是Net &,或者作爲preq安裝,即XYZ)。目前XYZ未安裝在我的電腦上 - 因此找不到密鑰。當我安裝安裝程序時,它會安裝應用程序,但不會安裝prereq,即XYZ.exe應用程序。我哪裏錯了?
謝謝。
它如何在自定義操作中安裝其他應用程序,它是另一個MSI嗎? – Jodrell 2011-06-06 08:32:51
@Jodrell,另一個應用程序是一個Windows安裝程序文件。在自定義操作中,我在安裝下添加了該場景。因此,它執行時,安裝過程和exe文件安裝其他應用程序 – Tvd 2011-06-06 13:25:22