Tag: wix的

如何在Windows 7中查找已安装应用程序的UpgradeCode和ProductCode

我的机器上安装了一个应用程序。 我也有它的源代码,但不知怎的,这个应用程序的ProductCode和UpgradeCode被改变了。 现在我想获得这个安装的应用程序的UpgradeCode和ProductCode。 我觉得必须有一些工具。 任何人都可以让我知道如何获得安装的应用程序的UpgradeCode和ProductCode?

使用WiX安装程序复制Visual Studio COM注册

曾几何时,一位年轻的,天真的工程师认为将自己的应用程序的一些function分离成用C#编写的COM组件是个好主意。 Visual Studio拥有所有的工具,对吧? .NET实际上是为此而做出的,对吧? 哈! 他说,这将是容易的。 我将有组件的体面的分离,使业务逻辑远离前端,并与COM,我将能够在任何地方使用它! 他愉快地在项目属性中检查了register for COM interopcheckbox的register for COM interop ,暴露了他想要的分类,然后继续前进。 哦,这样的select做出的审判。 现在这位年轻的工程师,更有经验的人现在不会希望这样的人了。 然而,他肩上的负担却是沉重的, 他希望减轻负荷。 WiX是一个用于从XML生成Windows Installer文件的工具。 这吸引了他 – 它可以很简单地复制一些正确的Windows安装程序文件所需的大部分代码,只需从less量configuration文件中复制即可。 他的目光正在抬头。 使用WiX 2.0,他可以轻松生成注册C#COM对象所需的文件。 这涉及到使用工具tallow。 他会做如下的事情: tallow -c -nologo MyComExposedLibrary.dll > MyComExposedLibrary.wxs (最初这是手动完成的,但最终我将这些步骤logging到一个小工具中,设置最终目录ref ID,组件ID,文件ID,GUID和代码库)。 然后,随后的安装程序将安装,如果应用程序工作,将会有欢乐的庆祝。 它没有。 这位年轻的工程师多年来一直在研发PC和testing安装PC的差异。 “所有registry项都是一样的!” 他会惊呼。 “MyComExposedLibrary的一切都注册了,我发誓! 除此之外,事实并非如此。 在第三天的黎明之后,他意识到还有另一个Visual Studio注册的对象,他的安装程序不是:MyComExposedLibrary.tlb文件。 显然,Visual Studio一直在注册这个文件,在HKLM\Software\Classes\Interfaceregistry项中创build其他子项,并在HKLM\SOFTWARE\Classes\TypeLib注册typelib。 Tallow没有任何帮助,抱怨说.tlb不是一个文件夹。 也不是WiX 3.0testing版 – 这似乎有更多的问题让事情工作。 我也给了热火一个尝试。 这生成了registry元素和类元素。 […]

WiX未定义的预处理器variables

我开始使用WiX来执行自动构build来创build我的c#项目的msi,并且遇到错误“未定义的预处理器variables”$(var.MyProject.TargetDir)'“ 我正在使用最新的WiX v3.0.5419。 在我的wxs文件里,我试图使用这个网页上列出的预处理器variables( http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor- variables.aspx ) <Component Id="MyId" Guid="MyGuid"> <File Id="MyId" Name="MyName" KeyPath="yes" Source="$(var.MyProject.TargetDir)\MyName.dll" /> </Component> 我已经将MyProject的参考添加到.wixproj,如果我在记事本中打开它,我可以看到参考。 <ItemGroup> <ProjectReference Include="..\MyProject.csproj"> <Name>MyProject</Name> <Project>{guid}</Project> <Private>True</Private> </ProjectReference> </ItemGroup> 这是我用来创buildmsi的nant构build脚本。 也许是因为.wixproj知道在构build中没有使用的项目引用? <exec basedir="${tools.wix}" managed="true" program="candle.exe"> <arg line='-out "${tools.wix.objfile}"' /> <arg value="../MySetup.wxs" /> </exec> 任何人都可以启发我呢?

Wix:如何设置文件夹和所有子文件夹的权限

我知道如何设置文件夹的权限: <DirectoryRef Id="ProgramFilesFolder"> <Directory Id="PHPFolder" Name="PHP"> <Component Id="PHP_comp" DiskId="1" Guid="*"> <CreateFolder> <Permission User="Everyone" GenericAll="yes" /> </CreateFolder> 不过,我需要的权限也适用于所有子文件夹。 这可能与列出所有的文件夹?

为什么我的WiX安装程序需要一个空的CreateFolder来有条件地更新一个Xml文件?

TL; DR :为什么在这个条件组件中需要一个空的 <CreateFolder/>元素才能使其工作? 我正在为一个内部应用程序组build一个简单的基于WiX的安装程序。 这个安装程序需要部署一个标准的configuration文件(一个普通的.NET .config文件),然后使用在命令行msiexec属性来定制它。 其中一种自定义是只有在定义了RUNTIME属性的情况下才创build特定的应用程序设置。 下面是这个WiX组件: <Component Id="C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime" Guid="*"> <Condition> <![CDATA[RUNTIME]]> </Condition> <CreateFolder/> <util:XmlFile Id="X.Runtime.1" Action="createElement" ElementPath="/configuration/appSettings" File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]" Name="add" Sequence="2"/> <util:XmlFile Id="X.Runtime.2" File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]" ElementPath="/configuration/appSettings/add[\[]not(@key)[\]]" Action="setValue" Name="key" Value="RunTime" Sequence="3"/> <util:XmlFile Id="X.Runtime.3" File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]" ElementPath="/configuration/appSettings/add[\[]@key='RunTime'[\]]" Action="setValue" Name="value" Value="[RUNTIME]" Sequence="4"/> </Component> 这就像我想要的那样工作 – 如果在msiexec的命令行中指定了RUNTIME,则会创build新元素; 如果没有,没有任何反应。 为什么我必须在这个组件中有空的<CreateFolder/> ? 当我试图得到这个工作,我发现“ WIX条件声明 ”,它显示了一个工作组件,但没有解释为什么<CreateFolder/>是必要的。 删除<CreateFolder/>给我这个错误: ICE18:组件的键path:“C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime”是目录:“INSTALLDIR”。 目录/组件对必须列在CreateFolders表中。 这是,我相信,一旦你知道这意味着什么,相当丰富。

安装程序:WIX或Inno安装程序?

我正在比较这两个工具。 我的印象是: Inno Setup不会产生MSI,但可以完成WIX所能做的一切 WIX确实产生了一个MSI,但有一个陡峭的学习曲线 你是否同意这种表征? 还有什么其他的区别? WIX#如何改变这个故事? 由于Inno安装程序不使用Windows安装程序,是否有卸载的困难? Can Inno Setup可以根据命令将安装降级到早期版本 – 或者只能安装/升级应用程序?

xml.LoadData – 根级别的数据无效。 1号线,位置1

我试图parsing一些WiX安装程序中的XML。 XML将成为从Web服务器返回的所有错误的对象。 我在这个代码中得到问题标题中的错误: XmlDocument xml = new XmlDocument(); try { xml.LoadXml(myString); } catch (Exception ex) { System.IO.File.WriteAllText(@"C:\text.txt", myString + "\r\n\r\n" + ex.Message); throw ex; } myString是这个(在text.txt的输出中看到) <?xml version="1.0" encoding="utf-8"?> <Errors></Errors> text.txt出来看起来像这样: <?xml version="1.0" encoding="utf-8"?> <Errors></Errors> Data at the root level is invalid. Line 1, position 1. 我需要这个XMLparsing,所以我可以看到,如果我有任何错误。 编辑 这个问题与标记不重复。 在这个问题中,提出问题的人使用LoadXml来parsingXML文件。 我正在parsing一个string,这是LoadXml的正确使用

如何在Visual Studio 2017中启用WiX项目

在Visual Studio 2017的新build项目对话框中,没有Windows Installer XML(WiX)的条目。 是否有可能在Visual Studio 2017中启用WiX项目?

如何使用WiX安装和启动Windows服务

我试图在Wix中使用下面的代码。 但是,安装时,安装程​​序冻结了3分钟的状态:启动服务,然后我得到这个消息“Service Jobservice启动失败,请确认您有足够的权限启动系统服务”。 我的代码有错吗? 我可以要求用户在安装过程中inputwindows系统的用户名和密码来获得“权限”吗? 非常感谢! <File Id='JobServiceEXE' Name='JobService.exe' DiskId='1' Source='JobService.exe' Vital='yes' KeyPath='yes'/> <ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Name="JobService" DisplayName="123 Co. JobService" Description="Monitoring and management Jobs" Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="no" /> <ServiceControl Id="StartService" Stop="both" Remove="uninstall" Name="JobService" Wait="yes" /> </Component>

使用WiX创build桌面快捷方式

所以我有Wix这个安装项目,并希望在桌面上有一个快捷方式。 这一定很容易,你可能会想。 但事实并非如此。 所有在互联网上find的代码片段都不起作用。 经过几个小时的努力和阅读文件,我终于明白了,所以我在这里与你分享。