问题列表 - 第17231页

WiX:将安装路径传递给托管自定义操作

新的一天,新的问题;-)仍然需要与托管自定义操作斗争.我已经设法调用自定义操作并将一些测试数据传递给它.现在我想用我需要的真实数据替换testdata.这里问题就出现了:我想调用一个安装在我的安装子目录中的批处理文件.因此,我需要将安装路径传递给自定义操作.Afaik这可以使用customactiondata mechnism完成.但这不起作用.当我记录安装时,我可以看到习惯用户INSTALLLOCATION之外指向正确的路径,但是当我查看惯例时,customactiondata属性为空...

任何人都可以查看我的代码并给我一个提示我做错了什么?谢谢你的优点!

调用自定义操作的合并模块:

<Module Id="DflHelpInstaller" Language="1033" Version="1.0.0.0">
    <Package Id="f952de58-1dc6-46b3-872a-7a49e2d9ea0a" Manufacturer="DflHelpInstaller" InstallerVersion="200" />

<Binary Id='RegisterDflHelpDll' SourceFile="$(var.REGISTERHELP.TargetDir)RegisterDflHelp.CA.dll" />

    <CustomAction Id='RegisterDflHelp' BinaryKey='RegisterDflHelpDll'  DllEntry='RegisterDflHelp' Execute='deferred' />

    <CustomAction Id="RegisterDflHelp.SetProperty" Return="check" Property="RegisterDflHelp" Value='[INSTALLLOCATION]' Execute='immediate' />


    <InstallExecuteSequence>
      <Custom Action='RegisterDflHelp.SetProperty' After='CostFinalize' />
      <Custom Action='RegisterDflHelp' After='InstallFiles' />
    </InstallExecuteSequence>

    <Directory Id="TARGETDIR" Name="SourceDir">
        </Directory>
    <ComponentGroupRef Id="HelpGroup"/>

    </Module>
</Wix>
Run Code Online (Sandbox Code Playgroud)

使用MergeModule的安装程序项目概述:

....

<Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder" SourceName="PFFiles">
<Directory Id="Company" Name='$(var.COMPANY)'>
  <Directory Id="INSTALLLOCATION" SourceName='$var.v[SDK_VERSION]'>
    <Component Id="MyBanner" Guid="C8C28B92-9326-4991-BFB1-BBDFDF3653AB">
      <File Id ="Banner.bmp" Source="Banner.bmp" KeyPath="yes" DiskId="1"/>
    </Component>
    <Merge Id ="DflHelpInstaller" SourceFile="DflHelpInstaller.msm" Language="1033" DiskId="1" />
      </Directory> …
Run Code Online (Sandbox Code Playgroud)

installer windows-installer wix wix3

10
推荐指数
4
解决办法
2万
查看次数

是否存在使用catch all子句的情况:catch(...)是否合理?

每次我看到抓住所有声明:

try 
{
  // some code 
}
catch (...)
{

}
Run Code Online (Sandbox Code Playgroud)

一直是一种虐待.

反对使用缓存所有子句的论据是显而易见的.它会抓住 任何东西,包括操作系统产生的异常,如访问冲突.由于异常处理程序无法知道它正在处理什么,因此在大多数情况下,异常将表现为模糊的日志消息或一些不连贯的消息框.

所以catch(...)看起来本身就是邪恶的.

但它仍然用C++实现,其他语言(Java,C#)实现了类似的机制.那么有些情况下它的使用是否合理?

c++ exception-handling

5
推荐指数
3
解决办法
551
查看次数

Clojure:如何在运行时创建函数

我想在运行时完全生成一个fn(即名称和arg符号是在运行时决定的,而不是在代码中决定的)实现这一目标的最佳方法是什么?

例如,我该如何实现以下功能?

(defn gen-fn [name arg-symbols body]
...
...
Run Code Online (Sandbox Code Playgroud)

将使用这样:

(gen-fn "my-func-name" (symbol "x") (symbol "y") (println "this is body. x=" x))
Run Code Online (Sandbox Code Playgroud)

请注意,函数名称,args和body未编码,但可以在运行时决定

functional-programming clojure

7
推荐指数
1
解决办法
1582
查看次数

在ASP.NET Web应用程序中创建线程的正确方法

我正在创建asmx Web服务,并且必须创建线程来执行后台IO来刷新系统数据.什么是正确的方法?我对创建线程没有任何结果感兴趣.我只是希望ASP.NET工作线程创建一个执行它加载的线程,最后进行一次分配(我认为分配_alldata = newData是原子,我自己的大结构类SystemData的两个实例)所以创建的工作线程新线程可以立即传播.

我读了一篇文章http://msdn.microsoft.com/fi-fi/magazine/cc164128%28en-us%29.aspx#S2,建议使用非线程池线程.然而,文章是关于不同/更复杂的情况,并没有帮助我这么多.

谢谢:马蒂

PS.我也问过这个问题,在asmx web服务中为数据库IO生成线程的正确方法是什么?但这个问题太复杂了.

c# asp.net multithreading

23
推荐指数
2
解决办法
6万
查看次数

将这个foreach产量重写为linq产量?

假设我有以下代码(上下文缩小以保持问题范围有限)

public static IEnumerable<Color> GetThemColors(){
    var ids = GetThePrimaryIds();
    foreach (int id in ids){
        yield return GetColorById(id);
    }
    ids = GetTheOtherIds();
    foreach (int id in ids){
        yield return GetOtherColorsById(id);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想把它们改写成这样的东西(当然不会编译

public static IEnumerable<Color> GetThemColors(){
    GetThePrimaryIds().Select(id=>yield return GetColorById(id));
    GetTheOtherIds().Select(id=>yield return GetOtherColorsById(id));       
}
Run Code Online (Sandbox Code Playgroud)

关键点在于,在我的第一个片段中,我有两个foreach枚举器屈服,我不知道如何在linq中做什么而不会丢失我的延迟加载功能.

.net c# linq yield lazy-loading

6
推荐指数
1
解决办法
9202
查看次数

我可以用Ruby on Rails编写一个网站而没有Speghetti代码吗?

我放弃了php,因为这是一个噩梦.然后我在asp.net C#中重新编程了整个站点,这是更好的.维护是轻而易举的.我最近听到很多关于RoR的好故事,但我不想用这种语言开发软件,如果它像PHP speghetti代码.那么,我可以使用RoR制作Web应用程序而不必混淆与代码混合的HTML吗?

ruby-on-rails

0
推荐指数
1
解决办法
148
查看次数

mysqli查询,LIKE和AND在同一个查询中不会像它应该的那样工作

所以这是我的查询,如果批准设置为0或1无关紧要,无论如何它都会给我所有的行

SELECT * 
FROM `tutorials` 
WHERE tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php' 
AND approved=1
Run Code Online (Sandbox Code Playgroud)

我想这是因为OR,但我可能错了,如果有人可以帮我解决这个问题:)

mysqli

1
推荐指数
1
解决办法
4104
查看次数

如何使用 .NET 中的 RSA 密钥签署 XML 文件?

我正在尝试使用OpenSSL生成的私有RSA密钥在 C# .NET 3.5 中签署 XML 文件。

以下是我的操作方式:我使用 chilkat 框架 (www.example-code.com/csharp/cert_usePrivateKeyFromPEM.asp)将 RSA 密钥从PEM格式转换为 XML 格式

使用我的 XML 密钥,我现在可以使用我更喜欢的本机 .NET 函数。所以我使用了MSDN 上描述的方法。

所以,最后,我的源代码如下所示:

RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();

//Load the private key from xml file
XmlDocument xmlPrivateKey = new XmlDocument();
xmlPrivateKey.Load("PrivateKey.xml");
rsaProvider.FromXmlString(xmlPrivateKey.InnerXml);

 // Create a SignedXml object.
 SignedXml signedXml = new SignedXml(Doc);

 // Add the key to the SignedXml document.
 signedXml.SigningKey = Key;

 // Create a reference to be signed.
 Reference reference = …
Run Code Online (Sandbox Code Playgroud)

.net c# cryptography rsa signature

5
推荐指数
1
解决办法
2万
查看次数

如何在Visual Studio中撤消"为解决方案创建目录"

我有一个包含在解决方案中的ac #project.当我创建项目时,我错误地勾选了"为解决方案创建目录"复选框.我现在想将.sln文件重定位到与项目相同的文件夹中.问题是,如果我只是将其移入(并使用文本编辑器更改项目内部路径),打开解决方案时会出现各种构建错误.我也尝试过创建一个新的解决方案并"添加一个现有项目",但这也会导致类似的构建错误.

有什么建议如何处理这种情况?

谢谢!

projects-and-solutions visual-studio

2
推荐指数
1
解决办法
4207
查看次数

C++/CLI中的变量参数列表

如何在C++/CLI中创建接受变量参数列表的函数?我正在寻找创建一个函数来转发它的大部分参数String::Format.

.net syntax arguments c++-cli variadic-functions

8
推荐指数
1
解决办法
3221
查看次数