我试图构建一个WiX 3.6安装脚本的工作示例.我们目前使用WiX 3.5,现在我们想开始安装.NET 4 Client Profile框架作为我们的脚本创建的MSI文件的先决条件product.wxs.WiX 3.6似乎是最好的前进方式.
是否有一个如何使用WiX 3.6执行此操作的功能示例?
这是我们今天使用的3.5脚本:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<!-- Version change handling -->
<?define UpgradeCode="###############################"?>
<?ifdef env.BUILD_NUMBER ?>
<?define ProductVersion="2.6.$(env.BUILD_NUMBER).0"?>
<?else ?>
<?define ProductVersion="2.6.0.0"?>
<?endif ?>
<Product Id="*" Name="###############################" Language="1033" Version="$(var.ProductVersion)" Manufacturer="###############################" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="200" Compressed="yes" />
<!-- Custom actions for this installer -->
<Binary Id="###############################.dll" SourceFile="..\..\Libraries\###############################.CA.dll" />
<!-- Kill ##### before installation begins -->
<CustomAction Id="Kill#####ActionId" BinaryKey="###############################.dll" DllEntry="Kill#####Action" Execute="immediate" Impersonate="yes" Return="check" />
<InstallExecuteSequence>
<Custom Action="Kill#####ActionId" …Run Code Online (Sandbox Code Playgroud) 我在安装.Net Windows服务期间无法可靠地创建/删除事件源.
这是我的ProjectInstaller类的代码:
// Create Process Installer
ServiceProcessInstaller spi = new ServiceProcessInstaller();
spi.Account = ServiceAccount.LocalSystem;
// Create Service
ServiceInstaller si = new ServiceInstaller();
si.ServiceName = Facade.GetServiceName();
si.Description = "Processes ...";
si.DisplayName = "Auto Checkout";
si.StartType = ServiceStartMode.Automatic;
// Remove Event Source if already there
if (EventLog.SourceExists("AutoCheckout"))
EventLog.DeleteEventSource("AutoCheckout");
// Create Event Source and Event Log
EventLogInstaller log = new EventLogInstaller();
log.Source = "AutoCheckout";
log.Log = "AutoCheckoutLog";
Installers.AddRange(new Installer[] { spi, si, log });
Run Code Online (Sandbox Code Playgroud)
引用的facade方法只返回日志,服务等名称的字符串.
此代码大部分时间都有效,但最近安装后我开始在应用程序日志中显示日志条目而不是自定义日志.并且日志中也存在以下错误:
无法找到源(AutoCheckout)中事件ID(0)的说明.本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息.您可以使用/ AUXSOURCE =标志来检索此描述; 请参阅帮助和支持以获取详细信
由于某种原因,它在卸载期间没有正确删除源,或者在安装期间没有创建它.
任何有关最佳实践的帮助表示赞赏. …
我们正在开发WPF中的UI控件,以便在现有的Windows Forms/MFC应用程序引擎(Rhino 3D)中使用.
应用程序引擎公开了创建"Dockbar"的能力,它实际上允许您将Windows窗体控件放在可以停靠到Engines接口的子窗口中.
我试图将一个简单的WPF TextBox放在一个ElementHost控件中,该控件被添加到Dockbar中.乍一看似乎工作得很好; 但在尝试输入TextBox后,只有某些序列实际显示在TextBox中.该DELETE,BACKSPACE,COPY,PASTE,并选择文本的工作.如果您键入AZ,1-9等,则这些键不会显示.
我有SCOURED网,并听说过,ElementHost.EnableModelessKeyboardInterop()但这仅适用于从表单创建的WPF Windows.我只创建WPF UserControls并在ElementHost控件中托管它们.
我看到一篇关于Dispatcher.Run()的帖子,它有点工作但是打破了表单的其余部分:
System.Windows.Threading.Dispatcher.Run();
Run Code Online (Sandbox Code Playgroud)
该PreviewKeyUp,PreviewKeyDown,KEYUP和的KeyDown事件的所有火上的文本框,但很可惜没有文字在文本框中显示出来.
我对Windows消息了解不多,但是使用WinSpector我注意到没有WM_GETTEXT消息来自TextBox(如果它们甚至应该是我不知道的话).
我还创建了一个新的Windows窗体项目,并在那里做了同样的事情,它工作正常,所以它必须是如何在Rhino 3D引擎中创建和停靠窗口的问题.
以下是不起作用的示例代码:
ElementHost el = new ElementHost();
System.Windows.Controls.TextBox t = new System.Windows.Controls.TextBox();
t.Width = 100;
t.Text = "TEST";
el.Child = t;
panel1.Controls.Add(el);
Run Code Online (Sandbox Code Playgroud) 在开发没有Source Control的WPF应用程序之后,我决定将解决方案添加到TFS.
每当我打开设计视图中的主窗口.xaml文件时,Visual Studio将会消失,并在应用程序事件日志中记录以下事件:
.NET运行时版本2.0.50727.3053 - 致命执行引擎错误(7A035E00)(80131506)
有关详细信息,请参阅http://go.microsoft.com/fwlink/events.asp上的"帮助和支持中心" .
我们使用BigIP在两个IIS服务器之间进行负载平衡.我们最近将IIS 6托管的WCF服务部署到这两台Windows Server 2003R2服务器上.
每个服务器配置有两个主机头:一个用于负载平衡器地址,另一个主机头仅指向该服务器.这样我们就可以引用负载均衡组中的特定服务器进行调试.
所以当我们运行时我们立刻得到了错误:
此集合已包含方案http的地址.此集合中每个方案最多只能有一个地址.参数名称:item
我做了一些研究,我们可以实现一个过滤器来告诉它忽略其中一个主机,但是我们无法从该地址访问服务器.
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://domain.com:80"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,什么是最佳解决方案,允许我们通过http://domain.com/service.svc和http://server1.domain.com/service.svc访问 WCF服务?
如果我们应该像某些网站建议的那样创建我们自己的ServiceFactory,那么有没有人有任何示例代码?
任何帮助深表感谢.
编辑:如果可能的话,我们需要能够从两个地址中的任何一个访问WCF服务.
谢谢.
我试图找出如何修改在两个数据库之间进行比较后出现Colors/Fonts的Schema Compare" Object Definitions"窗口中使用的.
我有的配色方案是不可读的,但我似乎无法在Tools/Options/Environment/Fonts和Colors对话框中找到正确的设置.
谢谢你的帮助.
贾森
我在我的项目中使用来自 NuGet的Extended WPF Toolkit Community Edition v2.6,但我不知道我是否应该做更多的事情来允许我设置主题或自定义控件模板。
在要求 Designer/Blend 为 PropertyGrid 控件创建现有默认模板的副本后,UI 已损坏。模板看起来正确,但在设计时或运行时不再起作用。
选择将默认模板复制到新的样式后:
有没有一种简单的方法来编辑此控件的内置样式?我真的只是想覆盖 PropertyGrid 的编辑器/标签的前景色/背景色。
我在 XAML 中尝试了一些手动戳,但成功有限:
<Style TargetType="{x:Type xctk:DropDownButton}">
<Setter Property="Background" Value="Black"/>
<Setter Property="Foreground" Value="White"/>
</Style>
<Style TargetType="{x:Type xctk:CustomPropertyItem}">
<Setter Property="Background" Value="Black"/>
<Setter Property="Foreground" Value="White"/>
</Style>
<Style TargetType="{x:Type xctk:PropertyGridEditorCollectionControl}">
<Setter Property="Background" Value="Black"/>
<Setter Property="Foreground" Value="White"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
尝试创建属性容器样式时,通过复制默认值,我得到“复制样式失败”。VS Designer 或 Blend 中的错误。
结果如下:
我已经尝试手动包含 Xceed Toolkit 程序集中的 generic.xaml,但它没有解决问题。
我尝试了两种引用资源的方法:
<ResourceDictionary Source="/Xceed.Wpf.Toolkit;component/themes/generic.xaml" />
<ResourceDictionary Source="pack://application:,,,/Xceed.Wpf.Toolkit;component/Themes/generic.xaml">
Run Code Online (Sandbox Code Playgroud)
这是我尝试设置 PropertyContainerStyle 时来自设计器的堆栈跟踪:
我们最近将TFS 2010升级到TFS 2012 RC版本.除了我们的Build之外,所有东西都很容易升级.有谁知道在哪里可以找到显示构建控制器/代理运行原因的日志?
我们有单服务器配置,其中TFS,SharePoint,SQL2008 R2,构建控制器和构建代理都在同一个框中.
除了构建之外,所有新功能似乎都在使用.当构建组件启动时,它最初将Controller和Agent显示为"绿色箭头"状态,但在30秒后进入"Red Box"状态.

然后,如果您单击"详细信息"链接以查看错误是什么,我会收到一个500错误的弹出窗口:

任何有关如何诊断或查找错误日志等的帮助将不胜感激.
wpf ×3
.net ×1
build ×1
c# ×1
color-scheme ×1
colors ×1
elementhost ×1
event-log ×1
hostheaders ×1
iis-6 ×1
interop ×1
propertygrid ×1
textbox ×1
tfs ×1
tfs2012 ×1
wcf ×1
wix ×1
wix3.6 ×1