我有一个非常简单的WiX项目(版本3.7),它安装了一些文件(.NET程序版本6.0.0.0).我准备使用WiX中的MajorUpgrade功能发布新版本6.0.1.0.
我在Product元素中保持UpgradeCode相同,并将Version从6.0.0.0更改为6.0.1.0
<Product Id="*" Name="MyApp" Version="6.0.1.0" Manufacturer="Me"
UpgradeCode="$(var.TheUpgradeCodeGUID)">
Run Code Online (Sandbox Code Playgroud)
在安装了6.0.0.0的计算机上,运行新安装程序.
删除旧版本6.0.0.0运行正常(所有已安装的文件都被删除),但是当安装程序继续安装新版本时,缺少2个文件:第三方DLL和第三方EXE(没有已被更改)未重新安装.
<Component Id="AutomaticUpdaterWPF.dll" Guid="*">
<File Id="AutomaticUpdaterWPF.dll" Source="AutomaticUpdaterWPF.dll" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="wyUpdaterProgram" Guid="*">
<File Id="wyUpdaterProgram" Source="wyUpdate.exe" KeyPath="yes" Checksum="yes" />
</Component>
Run Code Online (Sandbox Code Playgroud)
在主要升级期间,<ComponentGroup>中的所有其他文件(一些已修改,一些未修改,包括其他第三方DLL)正在正确安装.
如果我在主要升级后单击"修复",则会重新显示2个丢失的文件.此外,如果我是第一次安装版本6.0.1.0(没有升级,但在干净的机器上首次安装),则直接和正常安装这两个文件.(在几台Windows机器上测试过(XP,7和8)
任何人有什么建议错误以及如何解决?
在C#(.net 4.0和4.5/vs2010和vs12)中,当我使用XMLSerializer序列化包含具有非法字符的字符串的对象时,不会引发错误.但是,当我反序列化该结果时,会抛出"无效字符"错误.
// add to XML
Items items = new Items();
items.Item = "\v hello world"; // contains "illegal" character \v
// variables
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Items));
string tmpFile = Path.GetTempFileName();
// serialize
using (FileStream tmpFileStream = new FileStream(tmpFile, FileMode.Open, FileAccess.ReadWrite))
{
serializer.Serialize(tmpFileStream, items);
}
Console.WriteLine("Success! XML serialized in file " + tmpFile);
// deserialize
Items result = null;
using (FileStream plainTextFile = new FileStream(tmpFile, FileMode.Open, FileAccess.Read))
{
result = (Items)serializer.Deserialize(plainTextFile); //FAILS here
}
Console.WriteLine(result.Item);
Run Code Online (Sandbox Code Playgroud)
"Items"只是由xsd/c Items.xsd自动生成的一个小类.Items.xsd只不过是一个包含一个子元素(Item)的根元素(Items):
<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 我正在尝试用代码(c#)中的第二个XAML文件中定义的另一个WPF网格替换WPF网格控件的内容.
(简化示例)Window1.xaml:
<Window x:Class="Demo1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_Set Grid" Click="MenuItem_Click" />
</Menu>
<StatusBar DockPanel.Dock="Bottom">
<StatusBarItem Name="statusItem">Status</StatusBarItem>
</StatusBar>
<Grid Name="header" DockPanel.Dock="Top">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Name="txtHi" Grid.Row="0" Grid.Column="0">Hi</TextBlock>
<TextBlock Name="txtName" Grid.Row="0" Grid.Column="1">X</TextBlock>
</Grid>
<Grid Name="gridContent">
</Grid>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
Windows2.xaml包含替换gridContent的网格
<Window x:Class="Demo1.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window2" Height="300" Width="300">
<Grid Name="grid2">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Column="1" Grid.Row="1">Hello !!!</Label>
</Grid>
Run Code Online (Sandbox Code Playgroud)
Windows1.xaml.cs后面的代码中的MenuItem_Click事件包含:
private void MenuItem_Click(object …Run Code Online (Sandbox Code Playgroud)