SharpDevelop Setup Build Server Rules
-------------------------------------
All new .msi files are treated as major upgrades on the build server:
http://msdn.microsoft.com/library/en-us/msi/setup/major_upgrades.asp
1) Package code always changes for a new revision.
2) Product version is updated with the revision number.
3) Product code changed for a new revision.
4) Msi filename changed on each build. It includes the SharpDevelop version and revision.
Guid generation
---------------
The Guid generation is done by WiX itself. Only the version number is generated by
the buildSetup.bat file. This file runs the UpdateSetupInfo tool.
The UpdateSetupInfo tool reads the current revision number and updates the installation.
This information is stored in the SharpDevelop.Setup.wixproj.user file which is
generated each time when run from the build server. The Wix setup documents
have preprocessor variables $(var) that map to MSBuild properties. These MSBuild
properties are stored in the SharpDevelop.Setup.wixproj.user file.
The SharpDevelop.Setup.wixproj.user file is in the repository since but it is not
committed on each build. Therefore the Product Code guid is not stored anywhere
apart from the .msi itself. This maybe a problem. The Upgrade Code is the
important guid and that is in the main Setup.wxs file and should not be changed.
It will be changed for SharpDevelop 3.0.
The UpdateSetupInfo tool is not used when building the SharpDevelop.Setup project.
The buildSetup.bat does use the tool. The build server also uses the tool.
The UpdateSetupInfo tool uses a template file SharpDevelop.Setup.wixproj.user.template
which is stored in the repository and has a placeholder for the revision
number.
If the build server generates two installer packages with the same revision number
but different Product code guids then the user can install two instances of
SharpDevelop 2.1 on their machine which we do not want. However the installer
is only generated on the build server if the revision has changed.
Why major instead of minor?
---------------------------
It allows us to make large changes to the installer, completely restructuring the
features, components, and renaming the .msi filename. Just renaming the .msi filename on
its own means the product code guid has to change. However the main reason is that
to use a minor upgrade so it upgrades the existing installation you have to use a command
line like:
msiexec /i SharpDevelop.msi REINSTALL=ALL REINSTALLMODE=vomus
Otherwise you just get a message informing you that there is an existing installation.
A major upgrade is more user friendly and will not need such a command line, it should
install just by double clicking the .msi.
SharpDevelop Setup Rules
------------------------
1) Each assembly (.exe, .dll) added gets its own Component. This includes any files that
logically belong to it (e.g. .config, .addin), but not any assemblies it uses (.exe, .dll).
For an added assembly the File element should look like:
<File Id="SharpDevelopExeId"
Name="SharpDev.exe"
LongName="SharpDevelop.exe"
Source="..\..\bin\SharpDevelop.exe"
Assembly=".net"
AssemblyApplication="SharpDevelopExeId"
AssemblyManifest="SharpDevelopExeId"
KeyPath="yes"/>
Note that the Id is typically just the filename, but the in the example I have
emphasised that AssemblyApplication and AssemblyManifest refer to the file id.
Windows Installer References
----------------------------
Windows Installer has a lot of rules that need to be followed when creating
setup packages. The main ones to look at the rules for adding/removing components.
The documentation is a bit confusing, some parts say that you need to generate
a new Component Guid when you add/remove a resource (file, registry, etc)
to/from a component. Other parts say that with Windows Installer v2 you can
add/remove resources without needing to regenerate a new guid.
SharpDevelop's installer will not allow side-by-side installations of
SharpDevelop 2.1. Each new installer will be able to upgrade all previous versions
from 2.1.0 upwards. Disallowing side-by-side installations should prevent any
problems if component Guids are not altered when they should be (see
What Happens if the Component Rules are Broken?)
SharpDevelop component rules:
1) Never the same resource into two different components.
2) All resources in a component must be installed into the same directory.
3) When adding a new file to an existing directory put it inside its own new
component. That is if a previous version of the installer has been released.
If you're adding a completely new addin this does not apply, each .exe and .dll
should be in its own component, but other files can be grouped.
4) Removing a file. According to the docs:
"you must also change the name or target location every resource in the component."
This is not a problem for .exe and .dlls since they should be in their own
component so you just remove the entire component. If you may remove
the resource at some point in the future, put it into its own component.
If you have to remove a file from an existing component change its guid and
hope nothing breaks.
Setup Package Validation
------------------------
Orca is no longer required as building the installer runs a post build task that
validates the generated installer. Do not ignore any errors. Warnings need to be understood
before being ignored. ICE33 warnings can be ignored - see the Setup.wxs
file for more details.
http://msdn.microsoft.com/library/en-us/msi/setup/organizing_applications_into_components.asp
http://msdn.microsoft.com/library/en-us/msi/setup/changing_the_component_code.asp
http://msdn.microsoft.com/library/en-us/msi/setup/what_happens_if_the_component_rules_are_broken.asp
http://msdn.microsoft.com/library/en-us/msi/setup/defining_installer_components.asp
http://msdn.microsoft.com/library/en-us/msi/setup/assemblies.asp
http://msdn.microsoft.com/library/en-us/msi/setup/patching_and_upgrades.asp
http://msdn.microsoft.com/library/en-us/msi/setup/changing_the_product_code.asp
http://msdn.microsoft.com/library/en-us/msi/setup/minor_upgrades.asp
Rob Mensching also has some information about the component rules on his blog:
Windows Installer Components Introduction
http://blogs.msdn.com/robmen/archive/2003/10/04/56479.aspx
Component Rules 101
http://blogs.msdn.com/robmen/archive/2003/10/18/56497.aspx
没有合适的资源?快使用搜索试试~ 我知道了~
C#中最强大的开源软件源代码
共5443个文件
cs:3848个
csproj:146个
png:117个
4星 · 超过85%的资源 需积分: 12 88 下载量 96 浏览量
2009-09-03
15:08:17
上传
评论 18
收藏 35.4MB ZIP 举报
温馨提示
C#中最强大的开源软件源代码 SharpDevelop源代码
资源详情
资源评论
资源推荐
收起资源包目录
C#中最强大的开源软件源代码 (5443个子文件)
ICSharpCode.SharpDevelop.addin 115KB
FormsDesigner.addin 19KB
XmlEditor.addin 13KB
WixBinding.addin 13KB
SdaBase.addin 12KB
ICSharpCode.Svn.addin 9KB
UnitTesting.addin 9KB
SharpSnippetCompiler.addin 8KB
PythonBinding.addin 8KB
Hornung.ResourceToolkit.addin 7KB
BooBinding.addin 7KB
Debugger.AddIn.addin 6KB
NAnt.addin 6KB
CodeCoverage.addin 5KB
VBNetBinding.addin 5KB
ClassDiagramAddin.addin 5KB
HtmlHelp2.addin 5KB
FSharpBinding.addin 5KB
CSharpBinding.addin 5KB
FiletypeRegisterer.addin 4KB
AddInManager.addin 3KB
ResourceEditor.addin 3KB
Base.addin 3KB
AddInManager.addin 3KB
ICSharpCode.Profiler.AddIn.addin 3KB
ComponentInspector.addin 3KB
SearchAndReplace.addin 3KB
ILAsmBinding.addin 3KB
Mono.addin 3KB
CodeAnalysis.addin 3KB
HexEditor.addin 2KB
SourceAnalysis.addin 2KB
CppBackendBinding.addin 2KB
PInvoke.addin 2KB
LineCounter.addin 2KB
XamlBinding.addin 1KB
ReflectorAddIn.addin 1KB
StartPage.addin 1KB
Debugger.BooInterpreter.addin 1KB
IconEditorAddIn.addin 1015B
CodonCreation.addin 925B
RichTextEditor.addin 875B
SharpRefactoring.addin 822B
HighlightingEditor.addin 809B
ImageViewer.addin 734B
StringResourceToolAddIn.addin 688B
RegExpTk.addin 627B
CustomView.addin 625B
AddInScout.addin 606B
AlternateEditor.addin 485B
HtmlPreview.addin 442B
CustomPad.addin 425B
Callback.x64.asm 15KB
CodeFormatService.asmx 105B
ConvertService.asmx 87B
SearchHelp.aspx 8KB
Index.aspx 6KB
LoadIndexKeywords.aspx 4KB
FillNode.aspx 3KB
Default.aspx 3KB
SnippetConverter.aspx 2KB
About.aspx 2KB
FormatCode.aspx 2KB
CodeFormatClient.aspx 1KB
DotNetClientApplication.aspx 957B
ConvertCSharp20ToVbNet80.aspx 473B
Convert.aspx 351B
VBNET.ATG 96KB
cs.ATG 91KB
Coco.atg 19KB
BuildReflectionData.bat 6KB
Build2xHelpFile.bat 1KB
TransformManifest.bat 1KB
Build1xHelpFile.bat 620B
build.bat 532B
GenerateRefInfo.bat 469B
releasebuild.bat 456B
debugbuild.bat 445B
GenerateIntermediateTOC.bat 396B
clean.bat 373B
gen.bat 373B
CreateMsHelpAssembly.bat 335B
buildnunitconsole.bat 311B
ExtractHtmlInfo.bat 276B
package.bat 270B
Generate2xTOC.bat 242B
import.bat 239B
buildwin32resource.bat 224B
buildSetup.bat 224B
BuildConceptualTopics.bat 161B
build.bat 157B
BuildReferenceTopics.bat 151B
GenerateInheritedDocs.bat 127B
unregister.bat 38B
register.bat 36B
packagerelease.bat 24B
dlgbmp.bmp 464KB
dlgbmp.bmp 152KB
default-dialog.bmp 36KB
bannrbmp.bmp 29KB
共 5443 条
- 1
- 2
- 3
- 4
- 5
- 6
- 55
无聊的一个人啊
- 粉丝: 385
- 资源: 47
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3