是否可以创建一个只执行自定义操作的简单WIX安装程序,而不执行任何其他操作?我知道我可以通过使用以下WIX标记来使其工作,但是这仍然会在Program Files中创建一个文件夹,如果我删除CreateFolder行,它就不起作用。
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
<Product Id="*" Name="RegisterDotNetISS" Language="1033" Version="1.0.0.0" Manufacturer="MyCompanyhere" UpgradeCode="67825899-d511-4cd3-a8c1-b2dd448a74bd">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<PropertyRef Id="NETFRAMEWORK40FULLINSTALLROOTDIR"/>
<PropertyRef Id="NETFRAMEWORK40FULLINSTALLROOTDIR64"/>
<CustomAction Id='aspnetregiisi' ExeCommand='"[NETFRAMEWORK40FULLINSTALLROOTDIR]\aspnet_regiis.exe" -i -enable' Directory='TARGETDIR' />
<CustomAction Id='aspnetregiisix64' ExeCommand='"[NETFRAMEWORK40FULLINSTALLROOTDIR64]\aspnet_regiis.exe" -i -enable' Directory='TARGETDIR' />
<InstallExecuteSequence>
<Custom Action="aspnetregiisi" After="CostFinalize">NOT VersionNT64</Custom>
<Custom Action="aspnetregiisix64" After="CostFinalize">VersionNT64</Custom>
</InstallExecuteSequence>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="RegisterDotNetISS" >
<Component Id="Component1"
Guid="{78E22868-B750-47EB-9E4C-C19CCA939394}">
<CreateFolder />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="ProductFeature" Title="RegisterDotNetISS" Level="1">
<ComponentRef Id="Component1" />
</Feature>
</Product>
</Wix>
- EDIT-- 我正在寻找创建WIX安装程序而不是控制台应用程序,因为.net 3.5框架似乎在读取64位注册表时遇到问题。在4.0中添加了简单的功能,在IIS中注册asp.net的空安装程序似乎一致地工作。
答案 0 :(得分:1)
它被称为“特洛伊木马MSI”,因为它看起来像一个MSI,但不像一个人。一些people @Microsoft批评了这一点,但有些人(微软再次)发布了它们。 (阅读评论..)
如果你需要它们,它们可以很安静。看看微软发布的“Mr FixIt”。由MSI驱动的漂亮的向导UI可以对您的系统进行一些更改,但实际上并没有安装任何东西。
那怎么办?基本上你必须在执行序列中压制一堆标准动作,这样就不会创建目录,并且不会将特征/组件/产品发布到跟踪MSI已经完成的MSI元数据库。
您可以通过创建InstallExecuteSequence元素以及子元素(如PublishProduct,PublishFeatures,PublishComponents,InstallFiles,CreateFolders)并使用Suppres属性禁用它来完成此操作。