如何将msiexec命令行选项传递给Wix

时间:2017-04-06 14:49:40

标签: wix msiexec

我有一个Wix安装程序Product.msi,它通过自定义操作启动setup.exe。当我通过命令提示符执行我的安装程序时,例如:
msiexec /i Product.msi /q  要么 msiexec /r Product.msi /q 要么 msiexec /x Product.msi

我想将/i /r /q /x个选项传递给setup.exe

是否可以通过Wix Toolset实现这一目标?

1 个答案:

答案 0 :(得分:1)

您提到的标志都设置了MSI的属性,您可以在自定义操作中引用它们,转换为setup.exe所需的任何格式。

例如:

public static class VersionExtensions { public static string GetFileVersion(this Assembly assembly) { var value = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false) .OfType<AssemblyFileVersionAttribute>() .SingleOrDefault(); return value != null ? value.Version : "?.?.?.?"; } public static string GetCommonFileVersion() { var assembly = Assembly.GetAssembly(typeof(Common.Web.VersionExtensions)); var value = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false) .OfType<AssemblyFileVersionAttribute>() .SingleOrDefault(); return value != null ? value.Version : "?.?.?.?"; } 对应/i的值为false(如果产品尚未安装)。

Installed对应/r属性中的“修复”值。

WixUIInstallMode对应/x属性中的“删除”值。

WixUIInstallMode(及其/q/qn等修饰符)对应/qb属性,该属性具有this link中的以下值。

UILEVEL

如果您不熟悉传递值并在自定义操作中引用它们,则可以看到this answer