我可以使用Wix创建一个包含不同目录/子目录中的文件的组件吗?或者组件的所有文件应该在同一目录中?
如何为此设置XML?
是否有一种简单的方法可以在其中一个标准UI对话框中更改font colour和(最好)font type其中一个字符串Wix?
我不想将整个对话框源代码复制并粘贴到我的文件中.
例如,在欢迎对话框中,我想保持WelcomeDlgTitle和WelcomeDlgDescription相同,只是改变font colour为白色.
我写了一个自定义操作来安装后创建一个计划任务.当用户不想创建计划任务时,我不希望自定义操作运行.在安装过程中,即使我选择"功能将无法使用",也会创建schtask.如何阻止自定义操作执行?
我在这里和那里看到了一些关于使用WiX创建事件日志源的问题.令我困惑的是为什么util:EventSource/@EventMessageFile需要.当您不需要消息文件来编写事件日志条目时,必须指定它是令人讨厌的,并且.NET提供的抽象System.Diagnostics.Trace不会暴露使用它的能力.
标准建议似乎是使用目录搜索将属性设置为框架 EventLogMessages.dll,但没有人重复这个咒语给它任何理由.
如果没有使用随WiX提供的(经过测试的,强大的)自定义操作,有没有办法解决这个问题?
为什么不使用事件日志这方面的托管应用程序的作者会(显然)毫无意义地引用Framework DLL而不是他们自己的可执行文件?
这是我在FeatureTree/SelectionTree中的应用程序安装程序的结构
应用程序核心
| _ _特征1
| _ _特征2
| _ _特征3
我想确保当用户选择Application Core时,他必须选择Feature 1,Feature 2或Feature 3中的至少一个.
我知道功能下的条件元素可能会有所帮助,但无法让它工作,任何人都在救援?
我刚刚开始使用WiX 3,无法弄清楚为什么它无法理解我的.wsx文件中的Icon属性.我收到错误消息:
错误2"产品:{95DB18C7-24DC-474D-B58C-DC91AFD912F3}"部分中未解决的符号'Icon:Sample.exe'的引用.
它抱怨的部分是:
<Shortcut Id="startmenuSample" Directory="ProgramMenuFolder" Name="Sample 1.0"
WorkingDirectory='INSTALLDIR' Icon="Sample.exe" IconIndex="0" Advertise="yes" />
Run Code Online (Sandbox Code Playgroud)
如果我评论该部分,安装程序工作正常.
我正在使用Wix版本3.0.5419.0.我有两个.wxs文件,一个是片段,另一个是使用片段创建.msi文件.
这是使用片段的文件(DaisyFarmer.wxs):
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>
<Product Name='Daisy Web Site 1.0'
Id='BB7FBBE4-0A25-4cc7-A39C-AC916B665220'
UpgradeCode='8A5311DE-A125-418f-B0E1-5A30B9C667BD'
Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='the man'>
<Package Id='5F341544-4F95-4e01-A2F8-EF74448C0D6D' Keywords='Installer'
Description="desc" Manufacturer='the man' InstallerVersion='100'
Languages='1033' Compressed='yes' SummaryCodepage='1252' />
<Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
<Property Id='DiskPrompt' Value="the man" />
<PropertyRef Id="NETFRAMEWORK35"/>
<Condition Message='This setup requires the .NET Framework 3.5.'>
<![CDATA[Installed OR (NETFRAMEWORK35)]]>
</Condition>
<Feature Id='DaisyFarmer' Title='DaisyFarmer' Level='1'>
<ComponentRef Id='SchedulerComponent' />
</Feature>
</Product>
</Wix>
Run Code Online (Sandbox Code Playgroud)
我引用的片段是(Scheduler.wxs):
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Directory Id="dir2787390E4B7313EB8005DE08108EFEA4" Name="scheduler">
<Component …Run Code Online (Sandbox Code Playgroud) 我有一个产品,包含可以安装到不同位置的多个功能,例如,功能1是安装在程序文件中的可执行文件,功能2是安装在wwwroot中的网站.但是,功能1和功能2都依赖于许多相同的dll,因此需要将包含这些dll的组件安装在2个不同的位置,具体取决于安装的功能.
有没有办法在不定义每个组件两次的情况下实现这一目标?
为了提供我想要实现的更完整的示例,可以使用以下代码编译以下完整的wxs文件:
> candle.exe Foobar.wxs
> light.exe -ext WixUIExtension Foobar.wixobj
> msiexec/i Foobar.msi
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='Foobar 1.0'
Id='E578DF12-DDE7-4BC2-82CD-FF11862862D5'
UpgradeCode='90F09DD5-E01B-4652-8971-515997730195'
Language='1033'
Codepage='1252'
Version='1.0.0'
Manufacturer='Acme Ltd.'>
<Package Id='*'
Keywords='Installer'
Description="Acme 1.0 Installer"
InstallerVersion='100'
Languages='1033'
Compressed='yes'
SummaryCodepage='1252' />
<Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
<Property Id='DiskPrompt' Value="Acme 1.0 Installation" />
<Directory Id='TARGETDIR' Name='SourceDir'>
<!-- Directory 1 (Program Files) -->
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="PROGRAM_INSTALLDIR" Name="Acme" />
</Directory>
<!-- Directory 2 (wwwroot) -->
<Directory Id="Inetpub" Name="Inetpub">
<Directory Id="wwwroot" …Run Code Online (Sandbox Code Playgroud) 当产品A和B各自安装多个MSI并且某些MSI相同时,卸载A或B会影响另一个吗?安装位置是否重要?
此外,当安装时产品B和B升级C中的常见MSI C版本较高时会发生什么?现在卸载B将删除打破产品A的常见MSI C.如何在不使用永久标志的情况下优雅地处理此问题?