我有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>
答案 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
的描述-这是在正在卸载的设置中设置的另一属性(不是在正在安装的新设置中设置的属性)。
没时间了。坚持下去,将在以后更新。
某些链接: