我正在使用几篇文章和其他问题来覆盖我在20多个其他安装程序中使用的二进制wixlib的横幅位图图像.该库提供了我们自己的自定义UI,一些自定义对话框,公共资源,二进制文件,自定义操作等.
这是我在wixlib中使用的代码来覆盖图像:
<Binary Id="WixUI_Bmp_Banner" SourceFile="Bitmaps\bnnrbmp.bmp/>
<Binary Id="WixUI_Bmp_Dialog" SourceFile="Bitmaps\dlgbmp.bmp/>
Run Code Online (Sandbox Code Playgroud)
但是当我在我的实际MSI项目中引用我的wixlib时,一切都有效,除了UI横幅图像覆盖(我的自定义对话框触发,进程工作,常见二进制文件安装等).在我的二进制wixlib项目中,我需要做些什么特别的事情来覆盖我自己的二进制wixlib中的UIExtension.wixlib默认图像?
我在这里看到了这个问题:WixUiBannerBmp可以设置为wixlib吗?但是,这个问题的答案没有回答这个问题,它与一个图标直接相关,我不确定这个人是否正在使用二进制wixlib(可重新分发).我在wixlib中嵌入的添加/删除程序图标已经可以正常工作了.
我需要使用自定义操作将项目加载到组合框中.
UI.wxs:
<Control Id="Server" Type="ComboBox" X="30" Y="65" Width="200" Height="18" Property="DATABASE_SERVER">
<ComboBox Property="DATABASE_SERVER">
<ListItem Text="[DATABASE_SERVER]" Value="[DATABASE_SERVER]" />
</ComboBox>
<Publish Property="LOGON_VALID" Value="0">1</Publish>
</Control>
Run Code Online (Sandbox Code Playgroud)
自定义操作
private static ActionResult EnumSqlServersIntoComboBox(Session session, IEnumerable<DataRow> rows)
{
try
{
Debugger.Break();
session.Log("EnumSQLServers: Begin");
// Grab the combo box but make sure I'm getting only the one
// from WebAppInstallDlg.
View view = session.Database.OpenView("SELECT * FROM ComboBox WHERE ComboBox.Property='DATABASE_SERVER'");
view.Execute();
Int32 index = 1;
session.Log("EnumSQLServers: Enumerating SQL servers");
foreach (DataRow row in rows)
{
String serverName = row["Name"].ToString();
// …
Run Code Online (Sandbox Code Playgroud) 我们在SomeDialog.wxs文件中有一个WiX片段,它会提示用户输入一些信息.它在InstallerUI.wxs文件中的另一个片段中引用,该文件控制对话框顺序.当然,Product.wxs是我们的主要文件.效果很好.
现在,我为另一个应用程序的.MSI安装了第二个Visual Studio 2008 Wix 3.0项目,它需要向用户询问相同的信息.我似乎无法找出共享文件的最佳方式,以便更改所请求的信息将导致两个.MSI获得新行为.
老实说,我不知道合并模块,.wsi(包含)或.wixlib是否是正确的解决方案.我希望找到一个有人这样做的简单例子,但到目前为止我都失败了.
编辑: 根据Rob Mensching的 wixlib 博客文章,wixlib可能就是答案,但我仍然在寻找如何做到这一点的例子.
我之前使用过Wix来构建安装程序,这太棒了!
我最近重新映像了我的机器,并且只安装了Visual Studio 2010,因为我已将所有项目更新到该版本.
当我下载并安装WiX 3.0时,它抱怨Votive将不会被安装,因为我没有安装visual studio 2005或2008"或更高版本".没关系,我还是不使用Votive(我不太明白VS 2008与它有什么关系,但无论如何......)
当我尝试使用light.exe链接我的Wix安装程序时,我收到链接错误,因为它无法找到UI wixlibs.搜索我的驱动器上的各个位置(常见文件,Wix安装目录等),我找不到任何wixlib文件.
是否需要为WiX UI库单独下载?如果是的话,在哪里?我在Wix网站上找不到任何有希望的链接.或者是UI库以某种方式链接到Votive安装的问题?如果是这样,我如何在只有Visual Studio 2010的系统上安装它们?
我需要安装一些文件C:\Documents and Settings\currentUser\SomeFolder
.我找不到一些buildin函数/变量.
有人可以帮我/告诉我<DirectoryRef Id="TARGETDIR">
我的问题的结构或解决方案吗?
谢谢.
是否可以在wixlib中包含"源"文件?
我有许多c ++解决方案,每个解决方案包含一个或多个项目,以及一个包含以下条目的片段的wixlib:
<File Id="MY_ID" KeyPath="yes" Source="$(var.my_path)\foo.exe" />
Run Code Online (Sandbox Code Playgroud)
我想收集"foo.exe"并将其包含在wixlib中,然后创建一个WiX项目,将几个这样的wixlib链接在一起并产生一个MSI.
我所做的阅读似乎建议WiX3以及后来支持这一点,并且该技术比使用合并模块更受欢迎.
目前,我使用一个环境变量来描述二进制文件的路径,在链接时light.exe使用它来查找文件.但是,它有以下缺点:
我创建了一个 WixLib 项目和解决方案,其中包含一个片段,该片段指向我想要包含在多个项目中的一组 DLL。
但是,当我从其他解决方案引用此 wixlib 时,dll 所在目录的预处理器值随 wixlib 一起提供。我想覆盖这个值或更新它。
我的 Wixlib 看起来像这样:
<Fragment>
<ComponentGroup Id="CG.FarPointComponents">
<Component Id="cmpBBC3777DD58F5E2AE4704D66EF87C105" Directory="INSTALLDIR"
Guid="6CB60019-D122-41F6-8009-C41B07BCE5C3">
<File Id="filC126C8C2BFE502E045C17A812B8A907D" KeyPath="yes"
Source="$(var.FarPointDir)\FarPoint.CalcEngine.dll" />
</Component>
</ComponentGroup>
</Fragment>
Run Code Online (Sandbox Code Playgroud)
我想在另一个解决方案中为 var.FarPointDir 指定另一个目录,我该怎么办?我用的是wix 3.6
目前我正在尝试将WixUIBannerBmp,WixUIDialogBmp和WixUILicenseRtf WixVariables及其相应的二进制文件移动到wixlib.不幸的是,在构建时忽略这些并使用默认值.
我的Library.wxs:
<Fragment>
<WixVariable Id="WixUILicenseRtf" Value="licence.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="binaries/bannrbmp.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="binaries/dlgbmp.bmp" />
</Fragment>
Run Code Online (Sandbox Code Playgroud)
其中rtf和bmp文件包含在wixlib项目中,路径相对于Library.wxs文件.
任何人都有任何想法为什么这不起作用?
谢谢
我是WiX的新手,我一直在尝试为我的应用程序创建一个安装程序.其余的东西工作正常,但我一度陷入困境.我需要在将文件复制到Program Files文件夹后解压缩.我不确定Windows是否可以直接执行,所以我从互联网上获得了一个unzip.exe,它可以解压缩.我已将该文件复制到我的Program Files文件夹中.但是如何在那里解压缩我的文件.我尝试了以下代码但没有结果: -
**
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='Test' Id='xxxxxx' UpgradeCode='xxxxxxx'
Language='1033' Codepage='1252' Version='0.1.3' Manufacturer=''>
<Package Id='*' Keywords='Installer' Description=""
Comments='' Manufacturer=''
InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />
<Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
<Property Id='DiskPrompt' Value="Designer Installation [1]" />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='Test' Name='Test'>
<Component Id='unzip' Guid='xxxxxxx'>
<File Id='unzipexe' Name='unzip.exe' DiskId='1' Source='unzip.exe' KeyPath='yes' />
</Component>
<Component Id='sdk' Guid='xxxxxxxx'>
<File Id='SDK' Name='sdk.zip' DiskId='1' Source='sdk.zip' KeyPath='yes' />
</Component>
<Component Id='testlogger' Guid='xxxxxxx'>
<File Id='TestLog' Name='Test.log' DiskId='1' …
Run Code Online (Sandbox Code Playgroud) 如何定义相对于我目前所在的"wix-library"项目的File/@ Source?
如果我使用:
<File Id="f1" Source=".\bla"/>
Run Code Online (Sandbox Code Playgroud)
然后 "." 是指调用"Windows Installer Package"项目的根目录,因此无法使用!