WiX非常棒,因为没有GUI,您只需编写您想要的安装程序即可.没有摆弄GUI向导!
但是,绘制GUI实际上是我更喜欢使用GUI的一件事.
那么,是否有出口WiX数据的对话绘图程序?
(我想其他方面也许我可以将Visual Studio的表单编辑器转换为WiX-XML.)
/ L
我试图提取InstallShield setup.exe文件的文件内容.(我的计划是在后台工具中使用它,因此必须以编程方式完成,而无需任何用户交互.)
这可能吗?
(初步研究似乎表明它会失败.)
如果可以使用通用解决方案,那么最适合所有最新版本的InstallShield.
否则,如果解决方案仅适用于某些版本的InstallShield,那么这将是一个步骤.(setup.exe通过查看exe文件的版本资源,可能会推断出哪个InstallShield版本是a .
我发现一些InstallShield版本支持/b 或/extract_all.然而,没有好的方法可以知道,只需启动exe并希望它将有序地提取和终止,而不是显示GUI对话框似乎不是一个好的解决方案.因此,我正在寻找一种更稳定的方式.
想法欢迎.
有没有办法从C#中的stdin读取二进制数据?
在我的问题中,我有一个程序,它启动并在stdin上接收二进制数据.基本上:
C:>myImageReader < someImage.jpg
我想写一个程序,如:
static class Program
{
static void Main()
{
Image img = new Bitmap(Console.In);
ShowImage(img);
}
}
Run Code Online (Sandbox Code Playgroud)
但是Console.In不是Stream,它是TextReader.(如果我尝试读取char [],TextReader会解释数据,不允许我访问原始字节.)
有人知道如何访问实际的二进制输入?
干杯,莱夫
在ListView中,您可以在每个项目上添加图标.
在详细信息模式下查看时,图标显示在最左侧的列中.
我可以在其他列中显示图标吗?
xml:mstns在以下xsd-header中表达了什么?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="config"
targetNamespace="http:/tempuri.org/config.xsd"
elementFormDefault="qualified"
xmlns=""
xmlns:mstns="http://tempuri.org/config.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="config">
...
Run Code Online (Sandbox Code Playgroud) 我已经决定要有一个带有"复杂上下文"的列表,即自定义控件.(目标看起来像一个好友列表,包括照片,状态图标,文本和"开始聊天按钮".)
但我喜欢它表现为列表:滚动条,选择多个项目的可能性等.
当我一直在查看ListView和ListBox时,我只看到我可以添加文本和图标,但不能添加任意控件.我不知道这是怎么做到的?
或者我应该使用ListView/ListBox以外的东西?
我有一个defines.wxi-file,其中包含我所有wxs文件中使用的一些好的定义.
当我尝试从其中一个文件引用定义的值时,<Fragment>我会Undefined preprocessor variable '$(var.IMAGE_FOLDER)'回到我的脸上.
我想这里有一些微不足道的东西......我有什么想法吗?
编辑19:4月.
发现仅在从Fragment文件引用时才会出现该问题.
重新编写样本以匹配该样本.
defines.wxi
<Include>
<?define IMAGE_FOLDER="Images" ?>
</Include>
Run Code Online (Sandbox Code Playgroud)
一些-Fragment.wxs
<Fragment>
<?Include defines.wxi ?>
<Component Id='c.Images' Guid=".." Directory='INSTALLDIR.Images' >
<File Id='f.sample.jpg' Source='$(var.IMAGE_FOLDER)sample.jpg' Name='sample.jpg' />
</Component>
Run Code Online (Sandbox Code Playgroud) 我继承了一个旧的 VB.net 项目。代码主要使用 try-catch 进行错误处理。但是在某些地方我发现If Err.Number <> 0 Then.
如果发生错误,是什么决定是Exception应该抛出an还是只设置Err?
我不想同时处理错误...
我正在为我们的产品写一个新的重大升级.在我的安装程序中,我首先查找以前版本的配置设置,然后我想卸载以前的版本.
我找到了几个指南,告诉我如何使MSI适合这种升级.
但是,之前的不是MSI.
这不符合最佳做法.
但是,它在注册表HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall {GUID}中指定了一个UninstallString.
使用RegistrySearch我可以很容易地找到下面的命令,我将其存储在UNINSTALL_CMD中.
RunDll32 C:\PROGRA~1\COMMON~1\INSTAL~1\PROFES~1\RunTime\10\01\Intel32\Ctor.dll,LaunchSetup
"C:\Program Files\InstallShield Installation Information\{GUID}\setup.exe"
-l0x9 -removeonly 4:
Run Code Online (Sandbox Code Playgroud)
我无法获得执行实际卸载所需的CustomAction.
<CustomAction Id="ca.UninstPrev" Property="UNINSTALL_CMD" ExeCommand="" />
Run Code Online (Sandbox Code Playgroud)
MSI日志显示:
Info 1721.此Windows Installer程序包存在问题.无法运行此安装所需的程序.请联系您的支持人员或包装供应商.操作:ca.UninstallPrevious,位置:RunDll32 C:\ PROGRA~1\COMMON~1\INSTAL~1\PROFES~1\RunTime\10\01\Intel32\Ctor.dll,LaunchSetup"C:\ Program Files\InstallShield安装信息{GUID}\setup.exe"-l0x9 -removeonly,命令:
有谁看到我在这里做错了什么?
关心
莱夫