我需要将完整的.NET 3.5 sp1安装程序包含在我的安装程序中,该安装程序位于WiX中.
我需要将boostrapper完全自包含,完全没有Web访问权限.这个安装程序不允许要求Web; 我们有外地蒙古的客户(我很认真,不仅仅是使用地名,因为它很遥远)我们运送CD,因为他们根本没有互联网接入.
WiX教程指出:
<Target Name="AfterBuild">
<GenerateBootstrapper ApplicationFile="$(TargetFileName)"
ApplicationName="My Application Name"
BootstrapperItems="@(BootstrapperFile)"
ComponentsLocation="Relative"
CopyComponents="True"
OutputPath="$(OutputPath)"
Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
上述引导程序需要Web.如何制作不安装的安装程序?
我有一个WPF应用程序,它是一个全屏自助服务终端应用程序.它实际上是一个非常复杂的应用程序,但这里有一些显示基本概念的代码.基本上,每当用户从一个屏幕进入下一个屏幕时,就会出现一些严重的闪烁,从而打开新窗口.在严重的情况下,桌面会在新屏幕显示之前显示几秒钟.在这个示例代码中不会发生这种情况,因为它非常简单,但添加了一些按钮和样式,你会看到它.
App.xaml.cs:
public partial class App : Application {
Manager mManager;
public App() {
mManager = new Manager();
Window1 screen1 = new Window1(mManager);
mManager.Screen1 = screen1;
try {
this.Run(screen1);
} catch (Exception e) {
System.Console.WriteLine(e.ToString());
} finally {
Application.Current.Shutdown();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Window1.xaml.cs:
public partial class Window1 : Window {
Manager Manager{get; set;}
public Window1(Manager inManager) {
InitializeComponent();
Manager = inManager;
}
private void OnChangeScreen(object sender, RoutedEventArgs e) {
Manager.OpenScreen2();
}
}
Run Code Online (Sandbox Code Playgroud)
Window2.xaml.cs:
public partial class Window2 : Window { …
Run Code Online (Sandbox Code Playgroud) 这是来自WinForms的旧代码:
private void ValueChanged(double inValue1, double inValue2) {
//only manual mode for this driver, so that's easy.
if (ValueLabel.InvokeRequired) {
ValueLabel.Invoke(new MethodInvoker(delegate {
ValueLabel.Text = (inValue1* inValue2/ 1000).ToString("f1");
}
));
}
else {
ValueLabel.Text = (inValue1* inValue2/ 1000).ToString("f1");
}
}
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法将其转换为WPF友好?到目前为止,我有:
private void KVPValueChanged(double inValue1, double inValue2) {
if (ValueLabel.Dispatcher.Thread == Thread.CurrentThread){
ValueLabel.Content = (inValue1* inValue2/ 1000).ToString("f1");
} else {
ValueLabel.Dispatcher.BeginInvoke(delegate {
ValueLabel.Content = (inValue1* inValue2/ 1000).ToString("f1");
});
}
}
Run Code Online (Sandbox Code Playgroud)
但是第二个"代表"呼叫失败了.我该如何调用此委托?我想我可以完成整个制作委托方法,制作委托方法的实例,调用该特定实例等,但我认为这些匿名委托的重点是避免这种麻烦.另外,我的旧winforms代码在整个地方都有第一个实现,所以我真的想避免让我的所有代表去匿名化.
编辑:我可以像以前一样尝试使用MethodInvoker,但编译器会感到困惑.MethodInvoker是System.Windows.Forms的一部分,因此使用该方法不起作用.如:
private void ValueChanged(double inValue1, double inValue2) { …
Run Code Online (Sandbox Code Playgroud) 在使用visual studio 10(32位版本)构建gdcm时,我正在尝试修复一系列警告:
4>..\..\..\..\gdcm\Utilities\gdcmexpat\lib\xmlparse.c(647): warning C4273: 'XML_ParserCreate' : inconsistent dll linkage
4> d:\src\gdcm\gdcm\utilities\gdcmexpat\lib\expat.h(206) : see previous definition of 'XML_ParserCreate'
Run Code Online (Sandbox Code Playgroud)
函数调用本身看起来像:
XML_Parser XMLCALL
XML_ParserCreate(const XML_Char *encodingName)
{
return XML_ParserCreate_MM(encodingName, NULL, NULL);
}
Run Code Online (Sandbox Code Playgroud)
哪里
#define XMLCALL __cdecl
Run Code Online (Sandbox Code Playgroud)
和
XMLPARSEAPI(XML_Parser)
XML_ParserCreate(const XML_Char *encoding);
Run Code Online (Sandbox Code Playgroud)
哪里
#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
Run Code Online (Sandbox Code Playgroud)
和
#define XMLIMPORT __declspec(dllimport)
Run Code Online (Sandbox Code Playgroud)
如果我正确地阅读,那意味着链接始终是__cdecl通过XMLCALL--对吗?因为,如果是这样,那么警告是多余的,还是我误解了这个?
我有一个测试程序,它通过向rails服务器发送大块数据来模仿用户的iOS设备.该程序在测试之外工作正常.在测试中,程序立即超时,因为它找不到服务器.
我的配置,在env.rb中:
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
Capybara.server_port = 3123
Capybara.app_host = "http://0.0.0.0:3123"
Run Code Online (Sandbox Code Playgroud)
在测试中,我尝试过类似的东西
puts Capybara.current_session.current_host
puts Capybara.current_session.current_url
Run Code Online (Sandbox Code Playgroud)
等等,但这些都是空白的.这样做:
放下Capybara.current_session
产生一个内存地址,所以我知道当前的会话正在运行.
这是在宝石文件中像Capybara这样设置的:
gem 'capybara', '~> 2.0.2
Run Code Online (Sandbox Code Playgroud)
我已经看到了几个基于此的问题,但他们的答案对我不起作用.具体来说,Capybara似乎没有像我指定的那样设置当前主机或url,也不是实际允许我查看当前会话的内容.那么我该如何解决这个问题并指定一个特定的端口和网址呢?
我想在vista/windows 7中以编程方式杀死一个进程(我不确定两者之间的UAC实现是否存在重大问题以产生影响).
现在,我的代码看起来像:
if(killProcess){
System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("MyProcessName");
// Before starting the new process make sure no other MyProcessName is running.
foreach (System.Diagnostics.Process p in process)
{
p.Kill();
}
myProcess = System.Diagnostics.Process.Start(psi);
}
Run Code Online (Sandbox Code Playgroud)
我必须这样做,因为我需要确保如果用户崩溃程序或突然退出,则在重新启动应用程序时重新启动此辅助进程,或者如果用户想要更改此辅助进程的参数.
该代码在XP中运行良好,但在Windows 7(我假设在Vista中)失败时出现"访问被拒绝"消息.从全能的Google告诉我的内容来看,我需要以管理员的身份运行我的杀戮程序以解决这个问题,但这只是一个弱点.另一个可能的答案是使用LinkDemand,但我不理解LinkDemand的msdn页面,因为它与进程有关.
我可以将代码移动到一个线程中,但是它有许多固有的其他困难,我真的不想发现它.
我有一系列功能,都是为了做同样的事情而设计的.相同的输入产生相同的输出,但执行它们所需的时间因功能而异.我想确定哪一个是"最快的",我想确信我的测量结果是"具有统计意义".
仔细阅读维基百科和互联网告诉我,统计显着性意味着测量或测量组与零假设的p值阈值不同.这将如何适用?函数A比函数B快的假设是什么?
一旦我定义了整个设置,我该如何确定何时停止测量?我通常会看到基准测试运行三次,然后报告平均值; 为什么三次而不是五次或七次?根据统计意义的这一页(我自己承认我并不完全理解),费舍尔使用8作为他需要以98%的置信度测量某些东西的样本数量; 为什么8?
Windows 7有一个非常好的屏幕键盘程序/控制触摸屏.我有一个最初编写的触摸屏应用程序,将部署在XP上.是否可以将此键盘直接合并到我的应用程序中,而不是使用自定义控件?我找不到关于它的程序化信息,所以任何链接都会非常有用.具体来说,我需要:
这种原生键盘有两个吸引人的方面.首先,它会自动本地化为客户的语言(虽然应用程序的其余部分需要修改),其次,它似乎没有"触摸延迟",因为操作系统试图弄清楚我是否'做一个手势,因为我在键盘上打字.
该应用程序基于WPF,应该意味着轻松集成基于Windows 7的控件.
编辑:我真的很喜欢XP的东西,但这不是一个要求.但是,在Win7中使用键盘的能力似乎应该是可能的,甚至是正确的方法.
我有一个C++函数,它生成一个有趣的矩形列表.我希望能够从C++库中获取该列表并返回到调用它的C#应用程序.
到目前为止,我正在编码矩形,如下所示:
struct ImagePatch{
int xmin, xmax, ymin, ymax;
}
Run Code Online (Sandbox Code Playgroud)
然后编码一些向量:
void MyFunc(..., std::vector<int>& rectanglePoints){
std::vector<ImagePatch> patches; //this is filled with rectangles
for(i = 0; i < patches.size(); i++){
rectanglePoints.push_back(patches[i].xmin);
rectanglePoints.push_back(patches[i].xmax);
rectanglePoints.push_back(patches[i].ymin);
rectanglePoints.push_back(patches[i].ymax);
}
}
Run Code Online (Sandbox Code Playgroud)
用于与C#交互的标题看起来像(并且适用于许多其他函数):
extern "C" {
__declspec(dllexport) void __cdecl MyFunc(..., std::vector<int>& rectanglePoints);
}
Run Code Online (Sandbox Code Playgroud)
是否有一些关键字或其他我可以做的东西来取出那组矩形?我发现这篇文章用于在C#中编组对象,但它看起来太复杂了,太过于缺乏解释.整数向量是正确的方法,还是有其他技巧或方法?
这不是一个算法问题,而是一个实现问题.
我有一个看起来像这样的数据结构:
struct MyStruct {
float val;
float val2;
int idx;
}
Run Code Online (Sandbox Code Playgroud)
我浏览了大约4000万个元素的数组,并将'val'字段指定为元素,并将'idx'字段指定为索引.
我接着说:
MyStruct* theElements = new MyStruct[totalNum];
qsort(theElements, totalNum, sizeof(MyStruct), ValOrdering);
Run Code Online (Sandbox Code Playgroud)
然后,一旦我填写val2,逆转程序
qsort(theElements, totalNum, sizeof(MyStruct), IndexOrdering);
Run Code Online (Sandbox Code Playgroud)
哪里
static int ValOrdering(const void* const v1, const void* const v2)
{
if (((struct MyStruct*) v1)->val < ((struct MyStruct*) v2)->val)
return -1;
if (((struct MyStruct*) v1)->val> ((struct MyStruct*) v2)->val)
return 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和
static int IndexOrdering(const void* const v1, const void* const v2)
{
return ((struct MyStruct*) v1)->idx- ((struct MyStruct*) …
Run Code Online (Sandbox Code Playgroud) .net ×3
c++ ×3
wpf ×3
c# ×2
begininvoke ×1
benchmarking ×1
capybara ×1
delegates ×1
flicker ×1
fullscreen ×1
installer ×1
keyboard ×1
kill ×1
marshalling ×1
msbuild ×1
offline ×1
poltergeist ×1
process ×1
sorting ×1
statistics ×1
stl ×1
warnings ×1
windows-7 ×1
winforms ×1