WIX Updater不使用先前版本的安装程序参数

时间:2019-04-05 15:14:11

标签: wix windows-installer

我有wix项目安装程序。 我要使用产品的更新新版本。 它工作正常,但仍显示所有对话框,并且需要输入参数(例如安装路径,用户凭据等)。 我该如何跳过所有对话框,并使用旧(上)安装程序版本中的所有这些参数。

<Product Id="*" Name="$(var.ProductName) $(var.ProductVersion)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="301" Compressed="yes" InstallScope="perMachine" Platform="x64" />

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." AllowSameVersionUpgrades="yes" />
<MediaTemplate EmbedCab="yes" />

<Feature Id="ProductFeature" Title="COMPANY.Product.Installers.Server" Level="1">
  <ComponentGroupRef Id="ProductComponents" />
  <ComponentGroupRef Id="ServerInstallerFiles" />
</Feature>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" ></Property>
<UIRef Id="WixUI_MinimalCustom"/>
<InstallExecuteSequence>
  <Custom Action="DoAfterInstallJobParams" Before="DoAfterInstallJob">Not Installed or REINSTALL</Custom>
  <Custom Action="DoAfterInstallJob" After="InstallFiles">Not Installed or REINSTALL</Custom>
  <Custom Action="DoBeforeUnstallJob" After="InstallInitialize">REMOVE="ALL"</Custom>
</InstallExecuteSequence>
</Product>

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFiles64Folder">
    <Directory Id="INSTALLFOLDER" Name="COMPANY" />
  </Directory>
</Directory>
</Fragment>

<Fragment>
<Property Id="DoBeforeUninstallJob" Value="[INSTALLFOLDER]" />
<Binary Id="CustomActionBinary" SourceFile="$(var.SolutionDir)Output\Installers\Actions\COMPANY.Product.Installers.Server.Actions.CA.dll" />
<CustomAction Id="DoAfterInstallJob" BinaryKey="CustomActionBinary" DllEntry="AfterInstall" Execute="deferred" Return="check" Impersonate="no" />
<CustomAction Id="DoAfterInstallJobParams" Property="DoAfterInstallJob" Value="HOSTING_URL=[HOSTING_URL];DB_CONNECTION=[DB_CONNECTION];INSTALLPATH=[INSTALLFOLDER];LOGIN=[LOGIN];PASSWORD=[PASSWORD]" />
<CustomAction Id="DoBeforeUnstallJob" BinaryKey="CustomActionBinary" DllEntry="BeforeUninstall" Execute="deferred" Return="check" Impersonate="no" />
</Fragment>

<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
  <ComponentRef Id="cmpServerHost"/>
</ComponentGroup>
</Fragment>

<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
  <Directory Id="ServerHost" Name="ServerHost">
    <Component Win64="yes" Id="cmpServerHost" Guid="a4a81104-1e30-463d-87e1-e8a79b4c6829">
      <File Id="ServerLog4netConfig" Source="$(var.SolutionDir)..\Logging\log4net.config" />
      <RegistryValue Root="HKLM" Key="Software\[Manufacturer]\$(var.ProductName)" Type="string" Value="[INSTALLFOLDER]" KeyPath="yes" Name="COMPANYInstallPath"/>
      <File Id="AppVersion" Source="$(var.SolutionDir)Output\Installers\Actions\COMPANY.Product.Installers.Server.Actions.CA.dll" />
    </Component>
  </Directory>
</DirectoryRef>
</Fragment>

2 个答案:

答案 0 :(得分:0)

Windows Installer不会保留属性。你必须自己做。这是一个例子。

http://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/

答案 1 :(得分:0)

  

记住属性 Persisting properties允许您从第一个版本中读取设置。

     

对话框控制和命令 :如果要跳过对话框,则需要检测是否正在进行重大升级(如果您使用的是主要升级)   升级(您将基于该源文件进行升级),然后进行控制   对话框将相应地使用条件和属性值。这需要大量的工作,   测试。如果可以的话,我会避免的。

     

简易模式 :可能只是禁用(写保护)或隐藏包含在第一个设置中编写的设置的对话框字段   最好(而不是更改对话框顺序)。您可以同时使用条件和条件。


维护GUI :对于次要升级,修复和卸载对话框集将与原始安装不同。您将看到一个 "maintenance dialog set" 而不是 "installation dialog set"

主要升级 :当您通过Windows Installer的 major upgrade mechanism 安装升级时,会出现一些问题。由于这在技术上是如何工作的,因此您也会获得新版本的安装对话框集。这是因为从技术上讲,它是该新产品代码的全新安装。重点还在于,较旧的版本会在此过程中被卸载。您不是要安装新的次要版本,而是要有效地进行卸载和重新安装。

WIX_UPGRADE_DETECTED :在标准WiX软件包中设置了一个属性。它是 WIX_UPGRADE_DETECTED 。它可用于检测何时进行重大升级,因此可在某些情况下用于调整主要升级安装的对话框顺序。 Here are more details on this property以及 UPGRADINGPRODUCTCODE 的描述-这是在正在卸载的设置中设置的另一属性(不是在正在安装的新设置中设置的属性)。

没时间了。坚持下去,将在以后更新。


某些链接

相关问题