我有一个安装程序,安装了一些组件,包括Windows服务,安装后它将启动使用CustomAction安装到系统上的服务.
卸载应用程序时出现问题,安装程序要求在继续之前关闭应用程序.

我创建了一个停止服务的自定义操作,我使用卸载操作安排了它.
但是在手动停止服务后按下确定错误对话框之前,它才会执行.
它在Win7上失败,但我在WinXP上测试了相同的MSI并且工作正常(在检查文件正在使用之前执行自定义操作)!
我正在使用VS2010安装项目来创建安装程序,但是在构建之后我没有修改它(例如使用Orca)的问题.
以下是InstallExecuteSequence表的内容:

我发现InstallValidate操作检查使用中的文件,但是我无法对我之前停止服务的自定义操作进行排序,因为它之前的InstallInitialize操作需要所有自定义操作都在它之后(ICE77 Evaluator)
如果在InstallInitialize操作之前或InstallFinalize操作之后对脚本内自定义操作进行了排序,则ICE77会发出错误.
我该怎么办,我应该使用MSIRESTARTMANAGERCONTROL属性来指定Windows Installer程序包是否使用FilesInUse对话框功能,但我需要通知用户其他正在使用的文件.
当我使用XAML设计器时,进入设计器并且很难进入它,视觉工作室在我这样做时会停留一段时间,有没有办法提升XAML设计师和编辑器?
Ant在保存XAML文件时非常慢!
我现在和过去已经深入阅读和讨论了以下问题和文章:
我将使本文成为组织中异常处理的编码标准!非常好但没有回答我:http: //www.codeproject.com/Articles/9538/Exception-Handling-Best-Practices-in-NET
Java或C#中的异常管理的最佳实践在 这里:我不喜欢这个声明:(你不应该试图捕捉每个可能的地方的每一个例外.
我有一个问题,当我需要决定用try-catch语句包含一些代码块时,我知道应该包含代码是错误的代码,我必须检查我可以检查的内容,但是例如:我需要在一些文本文件中写一行,我应该检查文件是否存在,如果我有权写入它,我应该检查磁盘上是否有空间,或者磁盘是否可写,如果我检查了如果我在编写文件时发生了什么事情(其他一些应用程序或线程使用了空间,或者可移动驱动器已被删除?),如果我检查了这些内容并处理了IOException和SecurityException以及其他可能的异常,这是最佳实践吗? ,或者我应该只检查没有try-catch?
另一个例子:我正在使用EntityFramework来访问数据库,当访问某些内容时可能会联系数据库,我知道我应该检查连接是否关闭并尝试打开它,但是有很多很多东西可能会导致这个语句失败,数据库可能位于可移动驱动器上,此驱动器可能在读取时被删除,DBMS的服务可能因任何原因停止,不会抛出空间异常,数据库的方案可能会在我尝试执行某些代码后发生变化****原因,我如何防止我的代码失败,我可以检查我可以检查的每件事,然后继续吗?或者我应该使用try catch作为例外我可以期待,即使我已经检查了它们?
请给我你的答案参考,而不是一般的答案!
编辑
请务必阅读:http: //msdn.microsoft.com/en-us/library/seyhszts.aspx
我在app.config中有这个配置:
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)
我想以编程方式从我的桌面应用程序公开此服务:
我定义了主机实例:
ServiceHost host = new ServiceHost(typeof(MyType), new Uri("http://" + hostName + ":" + port + "/MyName"));
Run Code Online (Sandbox Code Playgroud)
然后我用它的绑定添加端点:
var binding = new BasicHttpBinding("myBinding");
host.AddServiceEndpoint(typeof(IMyInterface), binding, "MyName");
Run Code Online (Sandbox Code Playgroud)
现在,我想用一些从配置文件中读取名为myBehavior的行为的代码替换下面的代码,而不是对行为选项进行硬编码.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior() { HttpGetEnabled = true };
host.Description.Behaviors.Add(smb);
// Enable exeption details
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
sdb.IncludeExceptionDetailInFaults = true;
Run Code Online (Sandbox Code Playgroud)
然后,我可以打开主机.
host.Open();
Run Code Online (Sandbox Code Playgroud)
*编辑*
使用配置文件配置服务
您不应该需要这种方式,您应该让主机从配置文件中自动获取其配置,而不是手动提供它们,阅读本文(使用配置文件配置服务),它将帮助您,我已经托管了我的服务C#中的单行和config中的少行.
这是关于(在代码中配置WCF服务)的第二篇文章,我的错是我试图混合两种方式!
我将添加此作为答案.
我们正在使用基本身份验证的Web服务.这一切都很好,直到Web服务的所有者实现了平衡服务.这只是将请求重定向到不同的Web服务实例.
问题是重定向后基本身份验证失败.有"请求身份验证凭据未通过"异常.
附加信息:
我们必须手动创建请求.
var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(Settings.Default.HpsmServiceAddress));
req.Headers.Add("Authorization", "Basic aaaaaaaaaaa");
req.PreAuthenticate = true;
req.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
req.UserAgent = "Apache-HttpClient/4.1.1 (java 1.5)";
req.KeepAlive = false;
ServicePointManager.Expect100Continue = false;
req.ContentType = "text/xml; charset=utf-8";
req.Method = "POST";
req.Accept = "gzip,deflate";
req.Headers.Add("SOAPAction", actionName);
byte[] buffer = Encoding.UTF8.GetBytes(envelop);
Stream stm = req.GetRequestStream();
stm.Write(buffer, 0, buffer.Length);
stm.Close();
WebResponse response = req.GetResponse();
string strResponse = new StreamReader(response.GetResponseStream()).ReadToEnd();
response.Dispose();
Run Code Online (Sandbox Code Playgroud)我们通过HTTP 307重定向重定向
是否有任何保证的方法来获取除执行应用程序之外的某些应用程序的".appref-ms"文件的位置?
我们已经研究了几个小时了,没有运气,有很多方法可以在 Python 中序列化和反序列化对象,但我们需要一个简单而标准的尊重类型的方法,例如:
from typings import List, NamedTuple
class Address(object):
city:str
postcode:str
class Person(NamedTuple):
name:str
addresses:List[Address]
Run Code Online (Sandbox Code Playgroud)
我的问题非常简单,我正在寻找一种标准的方式来转换为 JSON,而无需为每个类编写序列化/反序列化代码,例如:
json = '{ "name": "John", "addresses": [{ "postcode": "EC2 2FA", "city": "London" }, { "city": "Paris", "postcode": "545887", "extra_attribute": "" }]}'
Run Code Online (Sandbox Code Playgroud)
我需要一种方法:
p= magic(json, Person) # or something similar
print(type(p)) # should print Person
for a in p.addresses:
print(type(a)) # prints Address
print(a.city) # should print London then Paris
json2 = unmagic(p)
print(json2 == json) # prints true (probably there will be …Run Code Online (Sandbox Code Playgroud) 我们想要自动化应用程序的测试,主要功能涉及来自相机的视频流的图像处理。
使用 Appium 注入视频流并使其在应用程序中看起来就像来自设备的摄像头的最佳方法是什么?
我们正在寻找一种无需更改应用程序代码即可实现此目标的方法。
问题是关于 Android 的,但如果您知道如何在 iOS 中执行此操作,我们将不胜感激,这是针对 iOS 的问题:iOS:iOS Appium 相机测试:如何注入视频,就像来自相机一样,以使用 Appium 测试应用程序
automated-tests android-camera kotlin appium android-camerax
c# ×7
.net ×5
.net-core ×1
appium ×1
asp.net-core ×1
clickonce ×1
deployment ×1
exception ×1
http ×1
http-headers ×1
json ×1
kotlin ×1
orca ×1
python ×1
security ×1
self-hosting ×1
try-catch ×1
wcf ×1
web-services ×1
windows ×1
wpf ×1
xaml ×1