Skip to content

Commit 82f4f07

Browse files
committed
Merge bug21707 into default
2 parents 2e141fa + c5d72ee commit 82f4f07

File tree

2 files changed

+53
-131
lines changed

2 files changed

+53
-131
lines changed

dist-msi.sh

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,9 @@ RELEASE_DIR=releases/$NAME/v$RABBIT_VSN
7878
function main {
7979
get-sources
8080
gen-license-rtf
81-
gen-wxs
8281

8382
build-msm-msi
8483

85-
rm -f wix/dotnet-client-merge-module.wxs
86-
rm -f wix/dotnet-client-product.wxs
87-
rm -f wix/License.rtf
88-
8984
safe-rm-deep-dir tmp
9085

9186
echo "SUCCESS!"
@@ -98,10 +93,12 @@ function build-msm-msi {
9893

9994
cd wix
10095

96+
gen-wxs dotnet-client-merge-module.wxs
10197
candle -out ../tmp/wix/rabbitmq-dotnet-client-msm.wixobj dotnet-client-merge-module.wxs
10298
light -out ../tmp/wix/rabbitmq-dotnet-client.msm ../tmp/wix/rabbitmq-dotnet-client-msm.wixobj
10399
test "$SKIP_MSIVAL2" || MsiVal2.exe ../tmp/wix/rabbitmq-dotnet-client.msm ../lib/wix/mergemod.cub -f
104-
100+
101+
gen-wxs dotnet-client-product.wxs
105102
candle -out ../tmp/wix/rabbitmq-dotnet-client-msi.wixobj dotnet-client-product.wxs
106103
light -out ../tmp/wix/rabbitmq-dotnet-client.msi \
107104
../tmp/wix/rabbitmq-dotnet-client-msi.wixobj \
@@ -129,13 +126,50 @@ function get-sources {
129126

130127

131128
function gen-wxs {
132-
sed -e "s:@VERSION@:$RABBIT_VSN:g" \
133-
< wix/dotnet-client-merge-module.wxs.in \
134-
> wix/dotnet-client-merge-module.wxs
135-
136-
sed -e "s:@VERSION@:$RABBIT_VSN:g" \
137-
< wix/dotnet-client-product.wxs.in \
138-
> wix/dotnet-client-product.wxs
129+
set +x
130+
f=$1
131+
local IFS=''
132+
sed -e "s:@VERSION@:$RABBIT_VSN:g" <${f}.in | while read -r l ; do
133+
if [ -z "$l" -o -n "${l##@FILES *}" ] ; then
134+
echo "$l"
135+
else
136+
# This is fairly hairy, due to the fact that .wxs file
137+
# lists are quite far from being simple lists of
138+
# filenames. Wix comes with a tool (tallow) for creating
139+
# these lists, but it seems to be principally intended for
140+
# creating an initial .wxs file, which you then hand-edit.
141+
# So it's not a good fit for our needs here. Instead, we
142+
# use find+awk to generate the File elements.
143+
echo "$l" | (
144+
IFS=' '
145+
read -r intro args
146+
# Windows has its own find command. Make sure we get
147+
# the cygwin one.
148+
/bin/find $args -printf "%h %f\n" | awk '
149+
{
150+
path = $1 "/" $2;
151+
gsub("/", "\\", path);
152+
153+
id = $2;
154+
gsub("[^a-zA-Z0-9]", "", id);
155+
156+
split($2, shorta, "\\.");
157+
short = substr(shorta[1], 0, 8);
158+
ext = substr(shorta[2], 0, 3);
159+
count = 0;
160+
while (short in shorts) {
161+
count++;
162+
short = substr(short, 0, 7-length(count)) "_" count;
163+
}
164+
shorts[short] = 1;
165+
short = toupper(short) "." toupper(ext);
166+
167+
print "<File Id=\"" id "\" Name=\"" short "\" LongName=\"" $2 "\" Source=\"" path "\" Vital=\"yes\"/>"
168+
}'
169+
)
170+
fi
171+
done >$f
172+
set -x
139173
}
140174

141175

wix/dotnet-client-merge-module.wxs.in

Lines changed: 6 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -25,31 +25,15 @@
2525
</Directory>
2626

2727
<Directory Id='ExamplesFolder' Name='examples'>
28-
<Directory Id='BinExamplesFolder' Name='bin' FileSource='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\bin\'>
28+
<Directory Id='BinExamplesFolder' Name='bin'>
2929
<Component Id='ExampleBinaries' Guid='1C270D1C-CD79-49D8-9413-E6211F52B5A8'>
30-
<File Id='AddClientExe' Name='AddClnt.exe' LongName='AddClient.exe' Vital='yes' />
31-
<File Id='AddServerExe' Name='AddServ.exe' LongName='AddServer.exe' Vital='yes' />
32-
<File Id='DeclareQueueExe' Name='DecQueue.exe' LongName='DeclareQueue.exe' Vital='yes' />
33-
<File Id='ExceptionTestExe' Name='ExcnTest.exe' LongName='ExceptionTest.exe' Vital='yes' />
34-
<File Id='LogTailExe' Name='LogTail.exe' LongName='LogTail.exe' Vital='yes' />
35-
<File Id='LowlevelLogTailExe' Name='LLogTail.exe' LongName='LowlevelLogTail.exe' Vital='yes' />
36-
<File Id='SendMapExe' Name='SendMap.exe' LongName='SendMap.exe' Vital='yes' />
37-
<File Id='SendStringExe' Name='SendStr.exe' LongName='SendString.exe' Vital='yes' />
38-
<File Id='SingleGetExe' Name='SnglGet.exe' LongName='SingleGet.exe' Vital='yes' />
30+
@FILES ../tmp/unzip/rabbitmq-dotnet-client-@[email protected]/bin -name *.exe
3931
</Component>
4032
</Directory>
4133

4234
<Directory Id='SrcExamplesFolder' Name='src'>
4335
<Component Id='ExampleSources' Guid='962896C3-D476-4C8E-B5F3-BE963D566A49'>
44-
<File Id='AddClientCs' Name='AddClnt.cs' LongName='AddClient.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\AddClient\src\examples\AddClient.cs' Vital='yes' />
45-
<File Id='AddServerCs' Name='AddServ.cs' LongName='AddServer.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\AddServer\src\examples\AddServer.cs' Vital='yes' />
46-
<File Id='DeclareQueueCs' Name='DecQueue.cs' LongName='DeclareQueue.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\DeclareQueue\src\examples\DeclareQueue.cs' Vital='yes' />
47-
<File Id='ExceptionTestCs' Name='ExcnTest.cs' LongName='ExceptionTest.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\ExceptionTest\src\examples\ExceptionTest.cs' Vital='yes' />
48-
<File Id='LogTailCs' Name='LogTail.cs' LongName='LogTail.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\LogTail\src\examples\LogTail.cs' Vital='yes' />
49-
<File Id='LowlevelLogTailCs' Name='LLogTail.cs' LongName='LowlevelLogTail.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\LowlevelLogTail\src\examples\LowlevelLogTail.cs' Vital='yes' />
50-
<File Id='SendMapCs' Name='SendMap.cs' LongName='SendMap.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\SendMap\src\examples\SendMap.cs' Vital='yes' />
51-
<File Id='SendStringCs' Name='SendStr.cs' LongName='SendString.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\SendString\src\examples\SendString.cs' Vital='yes' />
52-
<File Id='SingleGetCs' Name='SnglGet.cs' LongName='SingleGet.cs' Source='..\tmp\unzip\rabbitmq-dotnet-client-@[email protected]\projects\examples\client\SingleGet\src\examples\SingleGet.cs' Vital='yes' />
36+
@FILES ../tmp/unzip/rabbitmq-dotnet-client-@[email protected]/projects/examples/client -name *.cs -not -name AssemblyInfo.cs
5337
</Component>
5438
</Directory>
5539

@@ -61,106 +45,10 @@
6145
</Directory>
6246

6347
<Directory Id='DocFolder' Name='doc'>
64-
<Directory Id='HtmlFolder' Name='html' FileSource='..\tmp\unzip\rabbitmq-dotnet-client-@VERSION@-client-htmldoc\html\'>
48+
<Directory Id='HtmlFolder' Name='html'>
6549
<Component Id='HtmlApiDocumentation' Guid='7B03679B-9677-4679-AE2B-1F70E7D92B45'>
66-
<!--
67-
The following was generated using
68-
> tallow -d build\doc\html -dav
69-
70-
Source attributes were removed with a regex replace of:
71-
Source[=]["][^"]*?["]
72-
with a space.
73-
74-
file0's shortcut was manually included afterwards.
75-
-->
76-
<File Id="file0" Name="INDEX_1.HTM" LongName="index.html" Vital="yes">
77-
<Shortcut Id='HtmlApiDocShortcut' Directory='DOTNET_CLIENT_MENU_DIR' Name='HtmlDoc' LongName='Autogenerated API documentation (HTML)' />
78-
</File>
79-
<File Id="file1" Name="NAMESP_1.HTM" LongName="namespace-RabbitMQ.Client.Content.html" Vital="yes" />
80-
<File Id="file2" Name="NAMESP_2.HTM" LongName="namespace-RabbitMQ.Client.Events.html" Vital="yes" />
81-
<File Id="file3" Name="NAMESP_3.HTM" LongName="namespace-RabbitMQ.Client.Exceptions.html" Vital="yes" />
82-
<File Id="file4" Name="NA19D7_1.HTM" LongName="namespace-RabbitMQ.Client.html" Vital="yes" />
83-
<File Id="file5" Name="NAMESP_4.HTM" LongName="namespace-RabbitMQ.Client.MessagePatterns.html" Vital="yes" />
84-
<File Id="file6" Name="NA712C_1.HTM" LongName="namespace-RabbitMQ.Util.html" Vital="yes" />
85-
<File Id="file7" Name="style.css" Vital="yes" />
86-
<File Id="file8" Name="TYPE-R_1.HTM" LongName="type-RabbitMQ.Client.AmqpTcpEndpoint.html" Vital="yes" />
87-
<File Id="file9" Name="TYPE-R_2.HTM" LongName="type-RabbitMQ.Client.AmqpTimestamp.html" Vital="yes" />
88-
<File Id="file10" Name="TYPE-R_3.HTM" LongName="type-RabbitMQ.Client.AmqpVersion.html" Vital="yes" />
89-
<File Id="file11" Name="TYPE-R_4.HTM" LongName="type-RabbitMQ.Client.BasicGetResult.html" Vital="yes" />
90-
<File Id="file12" Name="TY8B2A_1.HTM" LongName="type-RabbitMQ.Client.BinaryTableValue.html" Vital="yes" />
91-
<File Id="file13" Name="TY4CC6_1.HTM" LongName="type-RabbitMQ.Client.ConnectionFactory.html" Vital="yes" />
92-
<File Id="file14" Name="TY1373_1.HTM" LongName="type-RabbitMQ.Client.ConnectionParameters.html" Vital="yes" />
93-
<File Id="file15" Name="TYA577_1.HTM" LongName="type-RabbitMQ.Client.Content.BasicMessageBuilder.html" Vital="yes" />
94-
<File Id="file16" Name="TY8ED0_1.HTM" LongName="type-RabbitMQ.Client.Content.BasicMessageReader.html" Vital="yes" />
95-
<File Id="file17" Name="TYC537_1.HTM" LongName="type-RabbitMQ.Client.Content.BytesMessageBuilder.html" Vital="yes" />
96-
<File Id="file18" Name="TYCE50_1.HTM" LongName="type-RabbitMQ.Client.Content.BytesMessageReader.html" Vital="yes" />
97-
<File Id="file19" Name="TYE5C7_1.HTM" LongName="type-RabbitMQ.Client.Content.BytesWireFormatting.html" Vital="yes" />
98-
<File Id="file20" Name="TY23C6_1.HTM" LongName="type-RabbitMQ.Client.Content.IBytesMessageBuilder.html" Vital="yes" />
99-
<File Id="file21" Name="TY2FF3_1.HTM" LongName="type-RabbitMQ.Client.Content.IBytesMessageReader.html" Vital="yes" />
100-
<File Id="file22" Name="TY0A1F_1.HTM" LongName="type-RabbitMQ.Client.Content.IMapMessageBuilder.html" Vital="yes" />
101-
<File Id="file23" Name="TY0654_1.HTM" LongName="type-RabbitMQ.Client.Content.IMapMessageReader.html" Vital="yes" />
102-
<File Id="file24" Name="TY8ED6_1.HTM" LongName="type-RabbitMQ.Client.Content.IMessageBuilder.html" Vital="yes" />
103-
<File Id="file25" Name="TY40BF_1.HTM" LongName="type-RabbitMQ.Client.Content.IMessageReader.html" Vital="yes" />
104-
<File Id="file26" Name="TYE566_1.HTM" LongName="type-RabbitMQ.Client.Content.IStreamMessageBuilder.html" Vital="yes" />
105-
<File Id="file27" Name="TY1FB6_1.HTM" LongName="type-RabbitMQ.Client.Content.IStreamMessageReader.html" Vital="yes" />
106-
<File Id="file28" Name="TYDB65_1.HTM" LongName="type-RabbitMQ.Client.Content.MapMessageBuilder.html" Vital="yes" />
107-
<File Id="file29" Name="TYFAC4_1.HTM" LongName="type-RabbitMQ.Client.Content.MapMessageReader.html" Vital="yes" />
108-
<File Id="file30" Name="TYFBF5_1.HTM" LongName="type-RabbitMQ.Client.Content.MapWireFormatting.html" Vital="yes" />
109-
<File Id="file31" Name="TY85CA_1.HTM" LongName="type-RabbitMQ.Client.Content.PrimitiveParser.html" Vital="yes" />
110-
<File Id="file32" Name="TY27D6_1.HTM" LongName="type-RabbitMQ.Client.Content.StreamMessageBuilder.html" Vital="yes" />
111-
<File Id="file33" Name="TY231C_1.HTM" LongName="type-RabbitMQ.Client.Content.StreamMessageReader.html" Vital="yes" />
112-
<File Id="file34" Name="TY36BE_1.HTM" LongName="type-RabbitMQ.Client.Content.StreamWireFormatting.html" Vital="yes" />
113-
<File Id="file35" Name="TYF60D_1.HTM" LongName="type-RabbitMQ.Client.Content.StreamWireFormattingTag.html" Vital="yes" />
114-
<File Id="file36" Name="TYA185_1.HTM" LongName="type-RabbitMQ.Client.DefaultBasicConsumer.html" Vital="yes" />
115-
<File Id="file37" Name="TY893F_1.HTM" LongName="type-RabbitMQ.Client.Events.BasicDeliverEventArgs.html" Vital="yes" />
116-
<File Id="file38" Name="TY78D2_1.HTM" LongName="type-RabbitMQ.Client.Events.BasicDeliverEventHandler.html" Vital="yes" />
117-
<File Id="file39" Name="TY618B_1.HTM" LongName="type-RabbitMQ.Client.Events.BasicReturnEventArgs.html" Vital="yes" />
118-
<File Id="file40" Name="TY787E_1.HTM" LongName="type-RabbitMQ.Client.Events.BasicReturnEventHandler.html" Vital="yes" />
119-
<File Id="file41" Name="TY2300_1.HTM" LongName="type-RabbitMQ.Client.Events.CallbackExceptionEventArgs.html" Vital="yes" />
120-
<File Id="file42" Name="TY59B1_1.HTM" LongName="type-RabbitMQ.Client.Events.CallbackExceptionEventHandler.html" Vital="yes" />
121-
<File Id="file43" Name="TY15CF_1.HTM" LongName="type-RabbitMQ.Client.Events.ConnectionShutdownEventHandler.html" Vital="yes" />
122-
<File Id="file44" Name="TY75BB_1.HTM" LongName="type-RabbitMQ.Client.Events.ConsumerEventArgs.html" Vital="yes" />
123-
<File Id="file45" Name="TY77FA_1.HTM" LongName="type-RabbitMQ.Client.Events.ConsumerEventHandler.html" Vital="yes" />
124-
<File Id="file46" Name="TY7EBE_1.HTM" LongName="type-RabbitMQ.Client.Events.ConsumerShutdownEventHandler.html" Vital="yes" />
125-
<File Id="file47" Name="TYF3AA_1.HTM" LongName="type-RabbitMQ.Client.Events.EventingBasicConsumer.html" Vital="yes" />
126-
<File Id="file48" Name="TY1FF1_1.HTM" LongName="type-RabbitMQ.Client.Events.ModelShutdownEventHandler.html" Vital="yes" />
127-
<File Id="file49" Name="TY4CBD_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.AlreadyClosedException.html" Vital="yes" />
128-
<File Id="file50" Name="TY3804_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.BrokerUnreachableException.html" Vital="yes" />
129-
<File Id="file51" Name="TYD747_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.ChannelAllocationException.html" Vital="yes" />
130-
<File Id="file52" Name="TY37F2_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.OperationInterruptedException.html" Vital="yes" />
131-
<File Id="file53" Name="TY1629_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.PacketNotRecognizedException.html" Vital="yes" />
132-
<File Id="file54" Name="TYFABA_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.ProtocolVersionMismatchException.html" Vital="yes" />
133-
<File Id="file55" Name="TY9FCD_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.UnexpectedMethodException.html" Vital="yes" />
134-
<File Id="file56" Name="TY9BB8_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.UnsupportedMethodException.html" Vital="yes" />
135-
<File Id="file57" Name="TY34C2_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.UnsupportedMethodFieldException.html" Vital="yes" />
136-
<File Id="file58" Name="TYD827_1.HTM" LongName="type-RabbitMQ.Client.Exceptions.WireFormattingException.html" Vital="yes" />
137-
<File Id="file59" Name="TYCFA8_1.HTM" LongName="type-RabbitMQ.Client.ExchangeType.html" Vital="yes" />
138-
<File Id="file60" Name="TY883B_1.HTM" LongName="type-RabbitMQ.Client.IBasicConsumer.html" Vital="yes" />
139-
<File Id="file61" Name="TYE88D_1.HTM" LongName="type-RabbitMQ.Client.IBasicProperties.html" Vital="yes" />
140-
<File Id="file62" Name="TY2F04_1.HTM" LongName="type-RabbitMQ.Client.IConnection.html" Vital="yes" />
141-
<File Id="file63" Name="TYDA15_1.HTM" LongName="type-RabbitMQ.Client.IContentHeader.html" Vital="yes" />
142-
<File Id="file64" Name="TYFFA0_1.HTM" LongName="type-RabbitMQ.Client.IFileProperties.html" Vital="yes" />
143-
<File Id="file65" Name="TY67B6_1.HTM" LongName="type-RabbitMQ.Client.IMethod.html" Vital="yes" />
144-
<File Id="file66" Name="TY5225_1.HTM" LongName="type-RabbitMQ.Client.IModel.html" Vital="yes" />
145-
<File Id="file67" Name="TY5785_1.HTM" LongName="type-RabbitMQ.Client.IProtocol.html" Vital="yes" />
146-
<File Id="file68" Name="TYFC9E_1.HTM" LongName="type-RabbitMQ.Client.IStreamProperties.html" Vital="yes" />
147-
<File Id="file69" Name="TYB6CD_1.HTM" LongName="type-RabbitMQ.Client.MessagePatterns.SimpleRpcClient.html" Vital="yes" />
148-
<File Id="file70" Name="TYB540_1.HTM" LongName="type-RabbitMQ.Client.MessagePatterns.SimpleRpcServer.html" Vital="yes" />
149-
<File Id="file71" Name="TY75DC_1.HTM" LongName="type-RabbitMQ.Client.MessagePatterns.Subscription.html" Vital="yes" />
150-
<File Id="file72" Name="TY70EA_1.HTM" LongName="type-RabbitMQ.Client.Protocols.html" Vital="yes" />
151-
<File Id="file73" Name="TYF3C1_1.HTM" LongName="type-RabbitMQ.Client.PublicationAddress.html" Vital="yes" />
152-
<File Id="file74" Name="TY3DED_1.HTM" LongName="type-RabbitMQ.Client.QueueingBasicConsumer.html" Vital="yes" />
153-
<File Id="file75" Name="TY39A0_1.HTM" LongName="type-RabbitMQ.Client.ShutdownEventArgs.html" Vital="yes" />
154-
<File Id="file76" Name="TY3AD4_1.HTM" LongName="type-RabbitMQ.Client.ShutdownInitiator.html" Vital="yes" />
155-
<File Id="file77" Name="TYA67C_1.HTM" LongName="type-RabbitMQ.Client.ShutdownReportEntry.html" Vital="yes" />
156-
<File Id="file78" Name="TY177D_1.HTM" LongName="type-RabbitMQ.Util.BlockingCell.html" Vital="yes" />
157-
<File Id="file79" Name="TYD6D5_1.HTM" LongName="type-RabbitMQ.Util.DebugUtil.html" Vital="yes" />
158-
<File Id="file80" Name="TY4397_1.HTM" LongName="type-RabbitMQ.Util.Either.html" Vital="yes" />
159-
<File Id="file81" Name="TY32A5_1.HTM" LongName="type-RabbitMQ.Util.EitherAlternative.html" Vital="yes" />
160-
<File Id="file82" Name="TY3355_1.HTM" LongName="type-RabbitMQ.Util.NetworkBinaryReader.html" Vital="yes" />
161-
<File Id="file83" Name="TYDDDB_1.HTM" LongName="type-RabbitMQ.Util.NetworkBinaryWriter.html" Vital="yes" />
162-
<File Id="file85" Name="TYC72D_1.HTM" LongName="type-RabbitMQ.Util.SharedQueue.html" Vital="yes" />
163-
<File Id="file86" Name="TY07F9_1.HTM" LongName="type-RabbitMQ.Util.XmlUtil.html" Vital="yes" />
50+
@FILES ../tmp/unzip/rabbitmq-dotnet-client-@VERSION@-client-htmldoc/html ( -name *.html -o -name *.css )
51+
<Shortcut Id='HtmlApiDocShortcut' Target="[#indexhtml]" Directory='DOTNET_CLIENT_MENU_DIR' Name='HtmlDoc' LongName='Autogenerated API documentation (HTML)' />
16452
</Component>
16553
</Directory>
16654

0 commit comments

Comments
 (0)