我正在尝试为Windows服务创建WiX安装程序,并且我了解到我需要将所有文件的KeyPath设置为“否”,但我的WiX脚本中的.exe除外。我目前正在使用Heat.exe生成我的目录和文件结构,这是我的命令:"$(WIX)bin\heat.exe"dir$(SolutionDir)EmailGenerationService\bin\PROD-cgEmailGenFiles-gg-scom-sreg-sfrag-srd-suid-drINSTALLLOCATION-varvar.FileSource-t$(Projectdir)KeyPathTransform.xslt-out$(P
如何设计我的xsd以忽略元素的顺序?我需要使用extension出于代码生成的原因,所以我使用all尝试了以下操作:虽然此xsd无效,但在报告了以下错误:cos-all-limited.1.2:Anallmodelgroupmustappearinaparticlewith{minoccurs}={maxoccurs}=1,andthatparticlemustbepartofapairwhichconstitutesthe{contenttype}ofacomplextypedefinition.cos-all-limited.1.2的文档说:1.2the{term}property
在编写XML模式时,我正在尝试做这样的事情不幸的是,xs:attribute在xs:extension上是允许的,而xs:minInclusive和xs:maxInclusive在xs:restriction上是允许的,但不能一起使用。构建此结构的最佳方法是什么?我是否必须使用适当的单位定义扩展,然后使用我的最小值和最大值对其进行限制? 最佳答案 你需要定义对双分隔符的限制 关于xml-使用xs:extension&xs:restrictiontogether?,我们在StackOver
如何从WiX中的XML文件中删除/移除元素? 最佳答案 给定一个包含以下内容的.config文件:要删除类型属性设置为“值”的项目元素,这似乎可以解决问题:此XmlConfig元素由Wix“Utility”扩展定义。要使用该扩展,您必须像这样声明UtilExtension命名空间:您还必须将-extWixUtilExtension添加到light.exe命令选项,或者如果您正在编写wix项目,则添加对“WixUtilExtension.dll”的引用在visualstudio中使用votive。
来自VS安装项目,它自动将每个项目中的依赖项添加到生成的msi中,在WiX中也有办法做到这一点吗?例如,项目A引用了存在于GAC中的b.dll。似乎b.dll没有被添加到生成的msi中,然后当应用程序运行时它崩溃了。我是否必须手动将b.dll作为组件添加到.wxs文件中,还是可以像VS安装项目一样自动完成?谢谢 最佳答案 来自此链接here,我得出的结论是,目前无法在3.5版中自动执行此操作 关于windows-包括WiX安装程序的项目引用,我们在StackOverflow上找到一个
我有一个WIX安装程序脚本,我希望能够让生成的MSI文件的用户能够在该命令行调用期间设置默认语言、产品key和用户信息。如何在我的XML文件中使用命令行参数以便将其写入注册表? 最佳答案 您可以将属性值作为命令行参数传递给msiexec。如果我没记错的话,那些应该是公共(public)属性(名称全部大写)。例如:msiexec/imyproduct.msiLANG=enPRODUCTKEY=mycompanyUSER=admin在WiX代码中,您可以像往常一样引用这些属性,就像在代码中定义它们一样。请注意,您应该处理未传递属性值或传
有没有办法获取/枚举使用msiexec传递的属性?如果属性拼写错误,我需要显示错误。 最佳答案 出于某种原因,WindowsInstaller从未实现属性枚举功能。您可以查询属性表,但这只会在构建时获取表中定义的属性。我知道没有办法做你想做的事。我最好的解决方法是使用EXEBootstrap将MSI置于前端并在那里进行检查。然后,您可以将EXEDRIVEN=1之类的内容传递给您的MSI,然后让您的MSI门检查该属性。另一个想法是使用CLIENTPROCESSID在自定义操作中查询Win32_Process。
我有一个链接2个MSI文件的设置:安装我的产品的x86/x64MSI文件。部署第三方工具包的x86MSI文件我希望第二个MSI文件使用相同的安装目录,因此MSI文件1将用户选择的目录存储在注册表中,然后MSI文件2读取该目录并将其用作其目标。很好,花花公子-如果我将MSI文件1安装到C:\Test\没问题-MSI文件2选择它并将工具包放入该文件夹。但是,当我安装到C:\ProgramFiles时......然后MSI文件2变得有点聪明,并决定我一定是指C:\ProgramFiles(x86)并将工具放在那里-有点乱。它在执行时会记录此信息:Actionstart16:53:59:App
所以,基本上我拥有的是Wix安装程序,它经过修改,目前我遇到了注册表项问题。在安装过程中,安装程序有一个自定义对话框,用户必须在其中选择/插入第二个路径。这将存储在注册表中。但是它没有插入用户输入的内容,而是插入了“[INSTALLFOLDER]”,尽管它看起来应该类似于“C:\ProgramFiles...”。我做了一些研究,但没有找到任何可以帮助我的东西。所有代码都在同一个文件中。代码的主要部分在这里,首先是这个属性。稍后应将其写入注册表。稍后是自定义窗口。1下面是这个发布部分......1111这对我有用。我将guid替换为“原因”。注册表路径和其他一切似乎都很好,只有一件事不起
我在我的Bootstrapper(Wix3.9版本)中使用以下FileSearch,它总是返回false,即使文件存在:...日志文件包含以下行:Filesearch:*******(somerandomguid),didnotfindpath:%systemdrive%\SomeFile.txtSettingnumericvariable'FileExists'tovalue0我做错了什么吗? 最佳答案 不幸的是,以这种方式使用运行时环境变量并不是那么容易。您首先需要使用环境变量设置WiX属性,然后在Path属性中使用该WiX属性