Articles of wix

使用WiX创build一个IIS虚拟目录

我会在WiX邮件列表上问这个问题,但似乎是失败了。 我有一个应用程序,这是一个桌面应用程序和本地运行的Web应用程序。 我创build了几个基本的WiX安装程序,但尚未使用IIS扩展在IIS下创build虚拟目录。 我一直没能find一个简单的例子来说明如何做到这一点。 我所需要做的就是创build虚拟目录,设置其端口,并将其指向我正在使用其他安装程序创build的实际目录。 如果还没有启用的话,在机器上启用IIS会带来一个好处,但是我猜这是不可能的,对我来说也不算什么。 如果重要的话,这个安装程序将只能在Vista机器上运行。

如何获得提升权限编辑registryCLSID,在一个WiX片段

我试图设置Windows桌面search使用不同的系统默认filter(nlhtml.dll)以外的HTMLfilter。 当我查找PersistentHandler( HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.html\PersistentHandler )时,它指向HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{eec97550-47a9-11cf-b952-00aa0051fe20} 。 我想改变上面的clsid的值。 以下是WiX片段 <?define PersistentHandler_HtmlIFilter="eec97550-47a9-11cf-b952-00aa0051fe20"?> <RegistryValue Action="write" Root="HKLM" Key="SOFTWARE\Classes\CLSID\{$(var.PersistentHandler_HtmlIFilter)}" Value="MY HTML Persistent Handler" Type="string" /> 但价值不变。 关于许可; 只有TrustedInstaller完全控制此条目。 pipe理员,系统和其他用户只有读取权限。 我怎样才能获得更高的权限,使用WiX来更改registry。 这是一个更大的项目的一部分,我只编辑了一个WiX脚本的片段( <Fragment>.. </Fragment> )。 谢谢。

wix补丁PYRO0103:系统找不到文件

我曾尝试为我的应用程序构build一个补丁。 我需要replace两个文件,仅此而已。 使用引导程序获得了文件,但是当卸载引导程序时,文件已经消失了,而不是被旧的(当然)取代。 我添加Keypath = yes“到我的应用程序包(旧的和新的),希望这会得到我的问题解决,但没有。 我一直在遵循这个教程: http : //wix.tramontana.co.hu/tutorial/upgrades-and-modularization/patchwork 这是我从我的命令行运行时得到的问题: C:\Program Files (x86)\WiX Toolset v3.8\bin>pyro.exe C:\Work\Dev\App\ Patch\Patch.wixmsp -out Patch.msp -t Sample C:\\Work\Dev\App\Patch\dif f.wixmst 结果是这样的: C:\Work\Dev\App\Installer_3.6.2\AppInstaller\Manager.wxs(181) : error PYRO0103 : The system cannot find the file '..\App\3.6.2\Manager\Image s\sort_down_small.png'. C:\Work\Dev\App\Installer_3.6.2\AppInstaller\Manager.wxs(182) : error PYRO0103 : The system cannot find the file '..\App\3.6.2\Manager\Image s\sort_up_small.png'. C:\Work\Dev\App\Installer_3.6.2\AppInstaller\Manager.wxs(182) : error PYRO0103 […]

在安装期间检测并要求安装Windows QFE /补丁程序

我们的WiX安装程序将.NET 4.0 WinForms应用程序部署到Windows Vista和7个桌面。 该应用程序包括一个需要.NET补丁的可移植类库 (KB2468871)。 我们需要安装补丁作为先决条件。 修补程序有多种应用方式: 下载KB2468871补丁并安装它 安装便携式库工具 作为使用ClickOnce的先决条件(可能是#1的变体) 使用类似问题的build议,我创build了一个CustomAction来检查我发现的QFE(#1)是否返回true。 private static bool IsPatchAlreadyInstalled() { // If the patch is installed, we can find it using WMI var query = new SelectQuery("SELECT HotFixID FROM Win32_QuickFixEngineering WHERE HotFixID = 'Q2468871' OR HotFixID = 'KB2468871'"); var results = new ManagementObjectSearcher(query).Get(); return results.Count > 0; } […]

似乎无法得到Wix安装驱动程序

我遵循这里的教程: http : //www.codeproject.com/KB/library/driver-install-with-wix.aspx,但它似乎并不想工作 – 的DPInst exe文件实际上似乎运行? 所有的文件都正确地放下 – 我甚至注意到在教程中他们错过了一个报价。 我的自定义操作如下所示: <CustomAction Id='Install_M2_Driver' Execute='deferred' Directory='DRIVER_ROOT' ExeCommand='"[dirDpInst]DPInst.exe" /SA /PATH "[dirM2]"' Return='ignore' /> 我甚至尝试用一个简单的exe文件replaceDPInst.exe ,这个exe文件回传给我,一切看起来不错,如果我实际上从命令行运行命令,而回显消息框启动,它会调出DPInst安装GUI 。

在C#中为新用户创build环境variables

我们正在尝试在Wix中为一个产品构build一个安装程序。 本产品的一部分需要安装elasticsearch作为服务,并将其作为服务运行。 该服务应该在一个单独的用户帐户下运行。 获取用户帐户的第一步已经成功。 但是,为了使elasticsearch正确运行,我们需要设置一些环境variables。 为了减less意外用户错误的机会,我们必须在elasticsearch用户下设置这些variables,而不是像机器范围那样。 为此,我们需要一种只在指定用户下创buildvariables的方法。 但是,我们还没有能够解决这个问题,无论是使用Wix还是C#扩展。 我们来的最接近的是查询C#中的ManagementObject并发现ELASTICUSER的SID。 理论上,我们应该能够在registry中的"HKEY_USERS\<SID>\Environment"下编写另一个环境variables,如图所示。 var query = new SelectQuery("Win32_UserAccount"); var manObjSearch = new ManagementObjectSearcher(query); var stringToWrite = string.Empty; foreach (var envVar in manObjSearch.Get()) { if (envVar["Name"].ToString().ToUpperInvariant() == "ELASTICUSER") { elasticUserSid = envVar["SID"].ToString(); } } using (var key = Registry.Users.OpenSubKey(elasticUserSid + "\\Environment")) { if (key == null) { return; } […]

在WIX中立即执行自定义操作

一旦出现第一个对话框(欢迎),是否有任何方法可以在WIX​​中执行自定义操作? 要求是检查先决条件,其中一些需要自定义操作。 自定义操作可以在我们点击下一个对话框时执行,但是标准的WIX prereqs是由我们自定义的prereq决定的。 (我们需要的自定义操作是检查IIS 6元数据库兼容性是否已打开,而registrysearch在装有32位安装程序的x64计算机上无效)

Wix – 卸载不同的产品

我们的主要安装者调用另一个产品(产品B)安装程序 这将在“”添加删除程序“窗口中创build两个条目。 当我卸载主要产品时,产品B未从机器上移除。 卸载主产品时,是否可以卸载产品B?

我想检测是否已经在用户的系统上使用WIX安装了特定的Microsoft修补程序。 什么是最简单的方法来实现呢?

我一直在读这个,但我开始怀疑这是越来越多的工作。 我以为我将能够简单地扫描registry中的问题的修补程序。 在尝试这样做的过程中,我了解到修补程序ID不再存储在registry中。 相反,MSFT鼓励人们通过他们的Windows Update API。 显然,WIX并不支持Windows Update API。 这是否意味着我需要使用自定义操作,与Windows Update API交互,将结果返回给WIX,然后使用该结果控制代码stream?

在WiX中使用防火墙扩展

我试图写一个使用防火墙扩展到WiX的WiX脚本,它似乎没有find扩展DLL(我认为)。 我看到的错误是这样的: File元素包含一个未处理的扩展元素“fire:FirewallException”。 请确保提供了“http://schemas.microsoft.com/wix/FirenetExtension”命名空间中元素的扩展名。 而我的WiX源码的相关部分是这样的: <?xml version =“1.0”encoding =“windows-1252”?> <Wix xmlns =“http://schemas.microsoft.com/wix/2006/wi” 的xmlns:火= “http://schemas.microsoft.com/wix/FirewallExtension”> <Component Id =“Firewall”Guid =“7278f07d-de6f-497f-9267-d5feb5216a5c”Directory =“NotUsed”> <File KeyPath =“yes”Source =“C:\ Program Files \ Java \ jdk1.6.0_32 \ bin \ java.exe”> <fire:FirewallException Id =“FWX1”Name =“My Program”Port =“80”Protocol =“tcp”/> 如果我尝试注册与regsrv32 WixFirewallExtension.dll文件我得到此错误: 加载了C:\ Program Files(x86)\ Windows Installer XML v3.5 \ bin \ WixFirewallExtension.dll模块,但未find入口点DllRegisterServer。 确保C:\ Program […]