整个故事: 我创建了一个花哨的.NET程序,它有一个由Visual Studio Installer(VSI)创建的安装程序.VSI创建2个文件(setup.exe和MyProgramSetup.msi).我理解需要两个文件的原因,但是,我只想向用户分发一个SINGLE可执行安装程序.我不希望他们看到2个文件,必须在它们之间进行选择.
为了做到这一点,我已经使用IExpress将2个文件合并到一个自解压存档中(如本答案所示:Merge msi和exe).这很好用,但是,创建的自解压存档有一个丑陋的图标和令人困惑的文件信息(文件描述是"Win32 Cabinet Self-Extractor",后面有43个空格).
我需要用我的自定义替换图标并更改一些文件属性,如"描述","公司"等.我希望自动完成这个作为构建步骤,所以有一个程序,这是一个命令行/控制台实用程序会很棒.
我已经搜索了一段时间,只能找到一个完全符合我想要的程序(ResourceTuner控制台:http://www.heaventools.com/command-line_resource_editor.htm),但它花费了一条胳膊和一条腿,我的预算是0美元.
有没有人知道更好的方法来实现我想要的,或者知道一个程序可以替换可执行文件的资源而无需使用GUI?
顺便说一句,我还尝试过SiComponents的Resource Builder 3,它甚至无法打开可执行文件,而ResEdit只是在执行命令时崩溃:
resedit.exe -convert "Modified Resources.rc" "MyProgramSetup.exe"
Run Code Online (Sandbox Code Playgroud) 我正在使用Visual Studio 2010.在我的解决方案资源管理器中,我喜欢将项目项目排序到文件夹(Forms的文件夹,Classes的文件夹,Misc文件夹等)
看来,如果我将"app.config"文件移动到名为"Config Files"的文件夹,一切都会有效,直到我更改Settings.settings文件中的设置.一旦我这样做,就会创建一个新的app.config,并且"Config Files"文件夹中的那个没有得到更新.
我搜索了整个解决方案的文本"app.config",但没有找到任何结果.如何移动此文件以使我的解决方案资源管理器看起来干净整洁?
我在表单上有一堆控件,所有"更改"事件都指向同一个事件处理程序.其中一些是txtInput1的TextChanged,chkOption1的CheckedChanged和cmbStuff1的SelectedIndexChanged.这是事件处理程序:
private void UpdatePreview(object sender, EventArgs e)
{
// TODO: Only proceed if event was fired due to a user's clicking/typing, not a programmatical set
if (sender.IsSomethingThatTheUserDid) // .IsSomethingThatTheUserDid doesn't work
{
txtPreview.Text = "The user has changed one of the options!";
}
}
Run Code Online (Sandbox Code Playgroud)
我希望if语句只在用户更改TextBox文本或单击复选框或其他任何内容时运行.如果文本或复选框被程序的其他部分更改,我不希望它发生.
我有以下XML结构:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root xmlns:xsi="My Program">
<NotRoot Text="Hello">
<SomeOption Text="Option 1" Centered="False">
<SomeOption Text="Option 1.1" Centered="False">
<SomeOption Text="Option 1.1.1" Centered="false">
<SomeOption Text="A" Centered="false">
<SpecialName Text="Blah blah" Centered="false">
<Number>1</Number>
</SpecialName>
</SomeOption>
<SomeOption Text="B" Centered="false">
<SpecialName Text="Hi" Centered="true">
<SomeStrangeName>42</SomeStrangeName>
</SpecialName>
</SomeOption>
<SomeOption Text="C" Centered="false">
<SpecialName Text="Some text here" Centered="false">
<Stuff>
<Thing1>10</Thing1>
<Thing2>20</Thing2>
<Thing3>30</Thing3>
</Stuff>
</SpecialName>
</SomeOption>
<SomeOption Text="D" Centered="false">
<SpecialName Text="Bye" Centered="false">
<Things>
<Random1>9846516981</Random1>
<Random2>8784749874</Random2>
</Things>
</SpecialName>
</SomeOption>
</SomeOption>
</SomeOption>
</SomeOption>
</NotRoot>
</Root>
Run Code Online (Sandbox Code Playgroud)
我想将元素"C"向上移动一个位置,以便输出如下所示:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root xmlns:xsi="My …Run Code Online (Sandbox Code Playgroud) .net ×3
c# ×2
deployment ×1
events ×1
iexpress ×1
linq-to-xml ×1
resources ×1
winforms ×1
xml ×1