aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
authorMcCabe Maxsted2011-07-13 21:35:31 -0700
committerMcCabe Maxsted2011-09-08 16:47:46 -0700
commit0e18be36d49140365ba1092bd965b645c4bf1eef (patch)
treed5820f876e9741be5be1540a3af807fdc505f678 /linden
parentRemoved packaging private assemblies since that's no longer how we distribute... (diff)
downloadmeta-impy-0e18be36d49140365ba1092bd965b645c4bf1eef.zip
meta-impy-0e18be36d49140365ba1092bd965b645c4bf1eef.tar.gz
meta-impy-0e18be36d49140365ba1092bd965b645c4bf1eef.tar.bz2
meta-impy-0e18be36d49140365ba1092bd965b645c4bf1eef.tar.xz
Added a new Windows installer script for ISS. Packaging now just generates a versioned script that must be compiled (currently) by hand. Leaving the NSIS files to be cleaned up as the installer work continues
Diffstat (limited to 'linden')
-rw-r--r--linden/indra/lib/python/indra/util/llmanifest.py26
-rw-r--r--linden/indra/newview/installers/windows/inworldz_installer_template.iss367
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py180
3 files changed, 418 insertions, 155 deletions
diff --git a/linden/indra/lib/python/indra/util/llmanifest.py b/linden/indra/lib/python/indra/util/llmanifest.py
index fc777b2..3cd8786 100644
--- a/linden/indra/lib/python/indra/util/llmanifest.py
+++ b/linden/indra/lib/python/indra/util/llmanifest.py
@@ -121,15 +121,16 @@ ARGUMENTS=[
121 default=""), 121 default=""),
122 dict(name='artwork', description='Artwork directory.', default=DEFAULT_SRCTREE), 122 dict(name='artwork', description='Artwork directory.', default=DEFAULT_SRCTREE),
123 dict(name='build', description='Build directory.', default=DEFAULT_SRCTREE), 123 dict(name='build', description='Build directory.', default=DEFAULT_SRCTREE),
124 dict(name='buildtype', 124 dict(name='buildtype', description="""The build type used. ('Debug', 'Release', 'ReleaseSSE2', or 'RelWithDebInfo')
125 description='Set to DEBUG if this is a debug build.', 125 Default is Release """,
126 default="RELEASE"), 126 default="Release"),
127 dict(name='channel', 127 dict(name='branding_id', description="""Identifier for the branding set to
128 description="""The channel to use for updates, packaging, settings name, etc.""", 128 use. Currently, 'imprudence')""",
129 default=get_channel), 129 default='inworldz'),
130 dict(name='configuration', 130 dict(name='configuration',
131 description="""The build configuration used. Only used on OS X for 131 description="""The build configuration used. On OSX this is
132 now, but it could be used for other platforms as well.""", 132 Universal, etc. On Windows it's the *actual* buildtype for
133 some weird reason.""",
133 default="Universal"), 134 default="Universal"),
134 dict(name='dest', description='Destination directory.', default=DEFAULT_SRCTREE), 135 dict(name='dest', description='Destination directory.', default=DEFAULT_SRCTREE),
135 dict(name='grid', 136 dict(name='grid',
@@ -137,13 +138,16 @@ ARGUMENTS=[
137 though it's not strictly a grid, 'firstlook' is also an acceptable 138 though it's not strictly a grid, 'firstlook' is also an acceptable
138 value for this parameter.""", 139 value for this parameter.""",
139 default=""), 140 default=""),
141 dict(name='channel',
142 description="""The channel to use for updates, packaging, settings name, etc.""",
143 default=get_channel),
144 dict(name='login_channel',
145 description="""The channel to use for login handshake/updates only.""",
146 default=None),
140 dict(name='installer_name', 147 dict(name='installer_name',
141 description=""" The name of the file that the installer should be 148 description=""" The name of the file that the installer should be
142 packaged up into. Only used on Linux at the moment.""", 149 packaged up into. Only used on Linux at the moment.""",
143 default=None), 150 default=None),
144 dict(name='login_channel',
145 description="""The channel to use for login handshake/updates only.""",
146 default=None),
147 dict(name='login_url', 151 dict(name='login_url',
148 description="""The url that the login screen displays in the client.""", 152 description="""The url that the login screen displays in the client.""",
149 default=None), 153 default=None),
diff --git a/linden/indra/newview/installers/windows/inworldz_installer_template.iss b/linden/indra/newview/installers/windows/inworldz_installer_template.iss
new file mode 100644
index 0000000..655ebc5
--- /dev/null
+++ b/linden/indra/newview/installers/windows/inworldz_installer_template.iss
@@ -0,0 +1,367 @@
1; InWorldz inno setup installer template by McCabe Maxsted
2
3[Setup]
4; NOTE: The value of AppId uniquely identifies this application.
5; Do not use the same AppId value in installers for other applications.
6; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
7
8; These will change
9AppId={{DC6CCE02-BC61-43B1-B4CA-292C6BCCCB34}
10AppName=%%APPNAME%%
11AppVerName=%%APPVERNAME%%
12DefaultDirName={pf}\InWorldz
13DefaultGroupName=InWorldz
14VersionInfoProductName=%%APPNAME%%
15OutputBaseFilename=%%INSTALLERFILENAME%%
16VersionInfoVersion=%%VERSION%%
17VersionInfoTextVersion=%%VERSION%%
18VersionInfoProductVersion=%%VERSION%%
19AppVersion=%%VERSION%%
20VersionInfoCopyright=2011
21
22; These won't change
23VersionInfoCompany=InWorldz, LLC
24AppPublisher=InWorldz, LLC
25AppPublisherURL=http://inworldz.com
26AppSupportURL=http://inworldz.com
27AllowNoIcons=true
28InfoAfterFile=..\..\..\..\..\..\README.txt
29OutputDir=.
30SetupIconFile=..\..\..\..\newview\installers\windows\install_icon.ico
31Compression=lzma2/ultra64
32InternalCompressLevel=ultra64
33SolidCompression=true
34PrivilegesRequired=poweruser
35AllowRootDirectory=true
36WizardImageFile=..\..\..\..\newview\installers\windows\installer_icon_left.bmp
37WizardSmallImageFile=..\..\..\..\newview\installers\windows\installer_icon_right.bmp
38SetupLogging=true
39RestartIfNeededByRun=false
40AlwaysRestart=false
41
42[Languages]
43Name: english; MessagesFile: compiler:Default.isl
44
45[Tasks]
46Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
47Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
48; TODO: use scripting for something like this on uninstall:
49; Name: uninstallsettings; Description: Remove user settings; Flags: checkablealone; Languages: ; GroupDescription: Uninstall:
50
51; NOTE VS2005 is currently the only version supported anywhere in the packaging system, so we can do this here
52[Files]
53Source: %%PACKAGEFILES%%\inworldz.exe; DestDir: {app}; Flags: ignoreversion
54Source: %%PACKAGEFILES%%\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs
55Source: %%PACKAGEFILES%%\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs
56Source: %%PACKAGEFILES%%\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs
57Source: %%PACKAGEFILES%%\skins\*; DestDir: {app}\skins; Flags: ignoreversion recursesubdirs createallsubdirs
58Source: %%PACKAGEFILES%%\llplugin\*; DestDir: {app}\llplugin; Flags: ignoreversion recursesubdirs createallsubdirs
59Source: %%PACKAGEFILES%%\doc\*; DestDir: {app}\doc; Flags: ignoreversion recursesubdirs createallsubdirs
60Source: %%PACKAGEFILES%%\alut.dll; DestDir: {app}; Flags: ignoreversion
61Source: %%PACKAGEFILES%%\dbghelp.dll; DestDir: {app}; Flags: ignoreversion
62Source: %%PACKAGEFILES%%\libapr-1.dll; DestDir: {app}; Flags: ignoreversion
63Source: %%PACKAGEFILES%%\libapriconv-1.dll; DestDir: {app}; Flags: ignoreversion
64Source: %%PACKAGEFILES%%\libaprutil-1.dll; DestDir: {app}; Flags: ignoreversion
65Source: %%PACKAGEFILES%%\llcommon.dll; DestDir: {app}; Flags: ignoreversion
66Source: %%PACKAGEFILES%%\featuretable.txt; DestDir: {app}; Flags: ignoreversion
67Source: %%PACKAGEFILES%%\gpu_table.txt; DestDir: {app}; Flags: ignoreversion
68Source: %%PACKAGEFILES%%\kdu_v64R.dll; DestDir: {app}; Flags: ignoreversion
69Source: %%PACKAGEFILES%%\kdu_v64R.dll.config; DestDir: {app}; Flags: ignoreversion
70Source: %%PACKAGEFILES%%\openal32.dll; DestDir: {app}; Flags: ignoreversion
71Source: %%PACKAGEFILES%%\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion
72Source: %%PACKAGEFILES%%\README.txt; DestDir: {app}; Flags: ignoreversion
73Source: %%PACKAGEFILES%%\SLPlugin.exe; DestDir: {app}; Flags: ignoreversion
74
75; Gstreamer-specific files below
76Source: %%PACKAGEFILES%%\lib\*; DestDir: {app}\lib; Flags: ignoreversion recursesubdirs createallsubdirs
77Source: %%PACKAGEFILES%%\avcodec-gpl-52.dll; DestDir: {app}; Flags: ignoreversion
78Source: %%PACKAGEFILES%%\avdevice-gpl-52.dll; DestDir: {app}; Flags: ignoreversion
79Source: %%PACKAGEFILES%%\avfilter-gpl-1.dll; DestDir: {app}; Flags: ignoreversion
80Source: %%PACKAGEFILES%%\avformat-gpl-52.dll; DestDir: {app}; Flags: ignoreversion
81Source: %%PACKAGEFILES%%\avutil-gpl-50.dll; DestDir: {app}; Flags: ignoreversion
82Source: %%PACKAGEFILES%%\iconv.dll; DestDir: {app}; Flags: ignoreversion
83Source: %%PACKAGEFILES%%\liba52-0.dll; DestDir: {app}; Flags: ignoreversion
84Source: %%PACKAGEFILES%%\libbz2.dll; DestDir: {app}; Flags: ignoreversion
85Source: %%PACKAGEFILES%%\libcelt-0.dll; DestDir: {app}; Flags: ignoreversion
86Source: %%PACKAGEFILES%%\libdca-0.dll; DestDir: {app}; Flags: ignoreversion
87Source: %%PACKAGEFILES%%\libexpat-1.dll; DestDir: {app}; Flags: ignoreversion
88Source: %%PACKAGEFILES%%\libfaad-2.dll; DestDir: {app}; Flags: ignoreversion
89Source: %%PACKAGEFILES%%\libFLAC-8.dll; DestDir: {app}; Flags: ignoreversion
90Source: %%PACKAGEFILES%%\libgcrypt-11.dll; DestDir: {app}; Flags: ignoreversion
91Source: %%PACKAGEFILES%%\libgio-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
92Source: %%PACKAGEFILES%%\libglib-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
93Source: %%PACKAGEFILES%%\libgmodule-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
94Source: %%PACKAGEFILES%%\libgnutls-26.dll; DestDir: {app}; Flags: ignoreversion
95Source: %%PACKAGEFILES%%\libgobject-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
96Source: %%PACKAGEFILES%%\libgpg-error-0.dll; DestDir: {app}; Flags: ignoreversion
97Source: %%PACKAGEFILES%%\libgstapp-0.10.dll; DestDir: {app}; Flags: ignoreversion
98Source: %%PACKAGEFILES%%\libgstaudio-0.10.dll; DestDir: {app}; Flags: ignoreversion
99Source: %%PACKAGEFILES%%\libgstbase-0.10.dll; DestDir: {app}; Flags: ignoreversion
100Source: %%PACKAGEFILES%%\libgstcontroller-0.10.dll; DestDir: {app}; Flags: ignoreversion
101Source: %%PACKAGEFILES%%\libgstdataprotocol-0.10.dll; DestDir: {app}; Flags: ignoreversion
102Source: %%PACKAGEFILES%%\libgstfft-0.10.dll; DestDir: {app}; Flags: ignoreversion
103Source: %%PACKAGEFILES%%\libgstinterfaces-0.10.dll; DestDir: {app}; Flags: ignoreversion
104Source: %%PACKAGEFILES%%\libgstnet-0.10.dll; DestDir: {app}; Flags: ignoreversion
105Source: %%PACKAGEFILES%%\libgstnetbuffer-0.10.dll; DestDir: {app}; Flags: ignoreversion
106Source: %%PACKAGEFILES%%\libgstpbutils-0.10.dll; DestDir: {app}; Flags: ignoreversion
107Source: %%PACKAGEFILES%%\libgstphotography-0.10.dll; DestDir: {app}; Flags: ignoreversion
108Source: %%PACKAGEFILES%%\libgstreamer-0.10.dll; DestDir: {app}; Flags: ignoreversion
109Source: %%PACKAGEFILES%%\libgstriff-0.10.dll; DestDir: {app}; Flags: ignoreversion
110Source: %%PACKAGEFILES%%\libgstrtp-0.10.dll; DestDir: {app}; Flags: ignoreversion
111Source: %%PACKAGEFILES%%\libgstrtsp-0.10.dll; DestDir: {app}; Flags: ignoreversion
112Source: %%PACKAGEFILES%%\libgstsdp-0.10.dll; DestDir: {app}; Flags: ignoreversion
113Source: %%PACKAGEFILES%%\libgstsignalprocessor-0.10.dll; DestDir: {app}; Flags: ignoreversion
114Source: %%PACKAGEFILES%%\libgsttag-0.10.dll; DestDir: {app}; Flags: ignoreversion
115Source: %%PACKAGEFILES%%\libgstvideo-0.10.dll; DestDir: {app}; Flags: ignoreversion
116Source: %%PACKAGEFILES%%\libgthread-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
117Source: %%PACKAGEFILES%%\libmms-0.dll; DestDir: {app}; Flags: ignoreversion
118Source: %%PACKAGEFILES%%\libmpeg2-0.dll; DestDir: {app}; Flags: ignoreversion
119Source: %%PACKAGEFILES%%\libneon-27.dll; DestDir: {app}; Flags: ignoreversion
120Source: %%PACKAGEFILES%%\libogg-0.dll; DestDir: {app}; Flags: ignoreversion
121Source: %%PACKAGEFILES%%\liboil-0.3-0.dll; DestDir: {app}; Flags: ignoreversion
122Source: %%PACKAGEFILES%%\libsoup-2.4-1.dll; DestDir: {app}; Flags: ignoreversion
123Source: %%PACKAGEFILES%%\libtasn1-3.dll; DestDir: {app}; Flags: ignoreversion
124Source: %%PACKAGEFILES%%\libtheora-0.dll; DestDir: {app}; Flags: ignoreversion
125Source: %%PACKAGEFILES%%\libtheoradec-1.dll; DestDir: {app}; Flags: ignoreversion
126Source: %%PACKAGEFILES%%\libvorbis-0.dll; DestDir: {app}; Flags: ignoreversion
127Source: %%PACKAGEFILES%%\libvorbisenc-2.dll; DestDir: {app}; Flags: ignoreversion
128Source: %%PACKAGEFILES%%\libvorbisfile-3.dll; DestDir: {app}; Flags: ignoreversion
129Source: %%PACKAGEFILES%%\libwavpack-1.dll; DestDir: {app}; Flags: ignoreversion
130Source: %%PACKAGEFILES%%\libx264-67.dll; DestDir: {app}; Flags: ignoreversion
131Source: %%PACKAGEFILES%%\libxml2-2.dll; DestDir: {app}; Flags: ignoreversion
132Source: %%PACKAGEFILES%%\libxml2.dll; DestDir: {app}; Flags: ignoreversion
133Source: %%PACKAGEFILES%%\SDL.dll; DestDir: {app}; Flags: ignoreversion
134Source: %%PACKAGEFILES%%\xvidcore.dll; DestDir: {app}; Flags: ignoreversion
135Source: %%PACKAGEFILES%%\z.dll; DestDir: {app}; Flags: ignoreversion
136
137; VC++ 2005 SP1 x86, VC++ 2008 SP1 x86, and VC++ 2010 SP1 x86 redist
138Source: ..\..\..\..\newview\installers\windows\vcredist_x86_VS2005_SP1_MFC_SEC.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2005_SP1_MFC_SEC.exe
139Source: ..\..\..\..\newview\installers\windows\vcredist_x86_VS2008_SP1_ATL_SEC.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2008_SP1_ATL_SEC.exe
140Source: ..\..\..\..\newview\installers\windows\vcredist_x86_VS2010_SP1.exe; DestDir: {app}\redist; DestName: vcredist_x86_VS2010_SP1.exe
141
142; Old files we don't use anymore:
143; Source: %%PACKAGEFILES%%\dronesettings.xml; DestDir: {app}; Flags: ignoreversion
144; Source: %%PACKAGEFILES%%\volume_settings.xml; DestDir: {app}; Flags: ignoreversion
145; Source: %%PACKAGEFILES%%\srtp.dll; DestDir: {app}; Flags: ignoreversion
146; Source: %%PACKAGEFILES%%\ssleay32.dll; DestDir: {app}; Flags: ignoreversion
147; Source: %%PACKAGEFILES%%\tntk.dll; DestDir: {app}; Flags: ignoreversion
148; Source: %%PACKAGEFILES%%\libeay32.dll; DestDir: {app}; Flags: ignoreversion
149; Source: %%PACKAGEFILES%%\lsl_guide.html; DestDir: {app}; Flags: ignoreversion
150
151; NOTE: Don't use "Flags: ignoreversion" on any shared system files
152;Source: %%PACKAGEFILES%%\msvcr71.dll; DestDir: {app}; Flags: ignoreversion; MinVersion: 0,6.01; Tasks: ; Languages:
153
154[Registry]
155Root: HKCR; Subkey: inworldz; ValueType: string; Flags: uninsdeletekey deletekey; ValueName: (default); ValueData: URL:InWorldz
156Root: HKCR; Subkey: inworldz; ValueType: string; Flags: uninsdeletekey deletekey; ValueName: URL Protocol
157Root: HKCR; Subkey: inworldz\DefaultIcon; Flags: uninsdeletekey deletekey; ValueType: string; ValueData: {app}\inworldz.exe
158Root: HKCR; Subkey: inworldz\shell\open\command; ValueType: expandsz; Flags: uninsdeletekey deletekey; ValueData: "{app}\inworldz.exe -url ""%1"""; Languages:
159; Root: HKCU; Subkey: Environment; ValueType: string; ValueName: GST_PLUGIN_PATH; Flags: deletevalue uninsdeletevalue; ValueData: {app}\lib
160; Root: HKCU; Subkey: Environment; ValueType: expandsz; ValueName: PATH; ValueData: {app}
161
162[Icons]
163Name: {group}\{cm:UninstallProgram,InWorldz}; Filename: {uninstallexe}
164Name: {commondesktop}\InWorldz; Filename: {app}\inworldz.exe; Tasks: desktopicon; WorkingDir: {app}; IconIndex: 0
165Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\InWorldz; Filename: {app}\inworldz.exe; Tasks: quicklaunchicon; WorkingDir: {app}
166Name: {group}\InWorldz; Filename: {app}\inworldz.exe; WorkingDir: {app}; Comment: inworldz; IconIndex: 0;
167
168[Run]
169; Install redistributables.
170;
171; !!!!BEWARE!!!!
172;
173; Command line parameters and filenames WILL change with each version. Blame Microsoft.
174
175; Always use /q for VS2005 rather than something quieter such as Parameters: "/q:a c:""msiexec /i vcredist.msi /qn"" ". The redist will fail sometimes if you do otherwise.
176Filename: {app}\redist\vcredist_x86_VS2005_SP1_MFC_SEC.exe; Parameters: "/q"; Check: Needs2005Redist; Flags: runhidden
177Filename: {app}\redist\vcredist_x86_VS2008_SP1_ATL_SEC.exe; Parameters: "/q"; Check: Needs2008Redist; Flags: runhidden
178Filename: {app}\redist\vcredist_x86_VS2010_SP1.exe; Parameters: "/q /norestart"; Check: Needs2010Redist; Flags: runhidden
179Filename: {app}\inworldz.exe; WorkingDir: {app}; Flags: nowait postinstall
180
181[UninstallDelete]
182Name: {userappdata}\InWorldz\user_settings\password.dat; Type: files; Languages:
183Name: {userappdata}\InWorldz\user_settings\settings.xml; Type: files; Languages:
184; 1.1 and lower cache location:
185Name: {userappdata}\InWorldz\cache; Type: filesandordirs
186; 1.2 and higher cache location:
187Name: {localappdata}\InWorldz\cache; Type: filesandordirs
188Name: {userappdata}\InWorldz\logs; Type: filesandordirs
189Name: {userappdata}\InWorldz\browser_profile; Type: filesandordirs
190Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs
191Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs
192
193[InstallDelete]
194; Name: {app}\*.dll; Type: files; Tasks: ; Languages:
195Name: {app}\licenses.txt; Type: files; Tasks: ; Languages:
196; ALWAYS delete the plugins! Beware if you don't
197Name: {app}\lib\gstreamer-plugins\*; Type: filesandordirs; Tasks: ; Languages:
198; Name: {app}\skins\default\xui\*; Type: filesandordirs; Tasks: ; Languages:
199; Old xui skin files can cause bugs, always kill them
200Name: {app}\skins\silver\xui\en-us\*; Type: filesandordirs; Tasks: ; Languages:
201Name: {app}\app_settings\mozilla; Type: filesandordirs; Tasks: ; Languages:
202Name: {app}\app_settings\mozilla_debug; Type: filesandordirs; Tasks: ; Languages:
203Name: {app}\app_settings\viewerversion.xml; Type: filesandordirs; Tasks: ; Languages:
204Name: C:\Documents and Settings\{username}\.gstreamer-0.10\*; Type: filesandordirs
205Name: C:\Users\{username}\.gstreamer-0.10\*; Type: filesandordirs
206; Breaks the browser if installing on top of 1.1:
207Name: {app}\gksvggdiplus.dll; Type: files; Tasks: ; Languages:
208; Breaks inworld audio if it's from an old version with a different GUID
209Name: {app}\alut.dll; Type: files; Tasks: ; Languages:
210
211; Old plugin files we want to kill:
212Name: {app}\charset.dll; Type: files; Tasks: ; Languages:
213Name: {app}\freebl3.dll; Type: files; Tasks: ; Languages:
214Name: {app}\glew32.dll; Type: files; Tasks: ; Languages:
215Name: {app}\iconv.dll; Type: files; Tasks: ; Languages:
216Name: {app}\intl.dll; Type: files; Tasks: ; Languages:
217Name: {app}\InWorldzViewer.exe; Type: files; Tasks: ; Languages:
218Name: {app}\js3250.dll; Type: files; Tasks: ; Languages:
219Name: {app}\libcairo-2.dll; Type: files; Tasks: ; Languages:
220Name: {app}\libfaad-2.dll; Type: files; Tasks: ; Languages:
221Name: {app}\libgcrypt-11.dll; Type: files; Tasks: ; Languages:
222Name: {app}\libgio-2.0-0.dll; Type: files; Tasks: ; Languages:
223Name: {app}\libglib-2.0-0.dll; Type: files; Tasks: ; Languages:
224Name: {app}\libgmodule-2.0-0.dll; Type: files; Tasks: ; Languages:
225Name: {app}\libgnutls-26.dll; Type: files; Tasks: ; Languages:
226Name: {app}\libgobject-2.0-0.dll; Type: files; Tasks: ; Languages:
227Name: {app}\libgpg-error-0.dll; Type: files; Tasks: ; Languages:
228Name: {app}\libgstapp.dll; Type: files; Tasks: ; Languages:
229Name: {app}\libgstaudio.dll; Type: files; Tasks: ; Languages:
230Name: {app}\libgstaudio-0.10.dll; Type: files; Tasks: ; Languages:
231Name: {app}\libgstbase-0.10.dll; Type: files; Tasks: ; Languages:
232Name: {app}\libgstcdda.dll; Type: files; Tasks: ; Languages:
233Name: {app}\libgstcontroller-0.10.dll; Type: files; Tasks: ; Languages:
234Name: {app}\libgstdataprotocol-0.10.dll; Type: files; Tasks: ; Languages:
235Name: {app}\libgstdshow.dll; Type: files; Tasks: ; Languages:
236Name: {app}\libgstfft.dll; Type: files; Tasks: ; Languages:
237Name: {app}\libgstinterfaces.dll; Type: files; Tasks: ; Languages:
238Name: {app}\libgstnet-0.10.dll; Type: files; Tasks: ; Languages:
239Name: {app}\libgstnetbuffer.dll; Type: files; Tasks: ; Languages:
240Name: {app}\libgstpbutils.dll; Type: files; Tasks: ; Languages:
241Name: {app}\libgstreamer-0.10.dll; Type: files; Tasks: ; Languages:
242Name: {app}\libgstriff.dll; Type: files; Tasks: ; Languages:
243Name: {app}\libgstrtp.dll; Type: files; Tasks: ; Languages:
244Name: {app}\libgstrtsp.dll; Type: files; Tasks: ; Languages:
245Name: {app}\libgstsdp.dll; Type: files; Tasks: ; Languages:
246Name: {app}\libgsttag.dll; Type: files; Tasks: ; Languages:
247Name: {app}\libgstvideo.dll; Type: files; Tasks: ; Languages:
248Name: {app}\libgthread-2.0-0.dll; Type: files; Tasks: ; Languages:
249Name: {app}\libjpeg.dll; Type: files; Tasks: ; Languages:
250Name: {app}\libmp3lame-0.dll; Type: files; Tasks: ; Languages:
251Name: {app}\libneon-27.dll; Type: files; Tasks: ; Languages:
252Name: {app}\libogg-0.dll; Type: files; Tasks: ; Languages:
253Name: {app}\liboil-0.3-0.dll; Type: files; Tasks: ; Languages:
254Name: {app}\libopenjpeg-2.dll; Type: files; Tasks: ; Languages:
255Name: {app}\libpng12-0.dll; Type: files; Tasks: ; Languages:
256Name: {app}\libschroedinger-1.0-0.dll; Type: files; Tasks: ; Languages:
257Name: {app}\libspeex-1.dll; Type: files; Tasks: ; Languages:
258Name: {app}\libtheora-0.dll; Type: files; Tasks: ; Languages:
259Name: {app}\libvorbis-0.dll; Type: files; Tasks: ; Languages:
260Name: {app}\libvorbisenc-2.dll; Type: files; Tasks: ; Languages:
261Name: {app}\libxml2-2.dll; Type: files; Tasks: ; Languages:
262Name: {app}\libxml2.dll; Type: files; Tasks: ; Languages:
263Name: {app}\nspr4.dll; Type: files; Tasks: ; Languages:
264Name: {app}\nss3.dll; Type: files; Tasks: ; Languages:
265Name: {app}\nssckbi.dll; Type: files; Tasks: ; Languages:
266Name: {app}\plc4.dll; Type: files; Tasks: ; Languages:
267Name: {app}\plds4.dll; Type: files; Tasks: ; Languages:
268Name: {app}\smime3.dll; Type: files; Tasks: ; Languages:
269Name: {app}\softokn3.dll; Type: files; Tasks: ; Languages:
270Name: {app}\ssl3.dll; Type: files; Tasks: ; Languages:
271Name: {app}\xpcom.dll; Type: files; Tasks: ; Languages:
272Name: {app}\xul.dll; Type: files; Tasks: ; Languages:
273Name: {app}\xvidcore.dll; Type: files; Tasks: ; Languages:
274Name: {app}\zlib1.dll; Type: files; Tasks: ; Languages:
275
276; We don't distribute the CRT like this anymore; murder death kill
277Name: {app}\SLPlugin.exe.config; Type: files; Tasks: ; Languages:
278Name: {app}\Microsoft.VC80.CRT.manifest; Type: files; Tasks: ; Languages:
279Name: {app}\msvcp80.dll; Type: files; Tasks: ; Languages:
280Name: {app}\msvcr80.dll; Type: files; Tasks: ; Languages:
281Name: {app}\msvcr71.dll; Type: files; Tasks: ; Languages:
282Name: {app}\inworldz.exe.config; Type: files; Tasks: ; Languages:
283
284
285[Code]
286// [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86]
287// Installed = 1 (REG_DWORD)
288function IsVS2010RedistInstalled(): Boolean;
289var
290 V: Cardinal;
291 Success: Boolean;
292begin
293 if IsWin64 then begin
294 Success := RegQueryDWordValue(HKLM64, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V);
295 end else begin
296 Success := RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V);
297 end
298
299 if Success = TRUE then begin
300 if V = 1 then begin
301 Result := TRUE;
302 end else begin
303 Result := FALSE;
304 end
305 end else begin
306 Result := FALSE;
307 end
308end;
309
310function Needs2010Redist(): Boolean;
311begin
312 Result := (IsVS2010RedistInstalled = FALSE);
313 if (Result = TRUE) then begin
314 Log('User system needs VS 2010 SP1 x86 Redistributable, installing.');
315 end else begin
316 Log('User already has VS 2010 SP1 x86 Redistributable installed, skipping.');
317 end
318end;
319
320// VS2008 and 2005 x86 redists. Always look for the latest version we know about. I wish there were a better way to check for these
321const
322 VS2005_X86 = '{A49F249F-0C91-497F-86DF-B2585E8E76B7}'; // http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE
323 VS2005_SP1_X86 = '{7299052B-02A4-4627-81F2-1818DA5D550D}'; // 8.0.50727.762: http://www.microsoft.com/downloads/details.aspx?FamilyID=200B2FD9-AE1A-4A14-984D-389C36F85647
324 VS2005_SP1_X86_ATL_SEC = '{837B34E3-7C30-493C-8F6A-2B0F04E2912C}'; // 8.0.50727.4053: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14431
325 VS2005_SP1_X86_MFC_SEC = '{710f4c1c-cc18-4c49-8cbf-51240c89a1a2}'; // 8.0.50727.6195: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26347
326
327 VS2008_X86 = '{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}'; // http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf
328 VS2008_SP1_X86 = '{9A25302D-30C0-39D9-BD6F-21E6EC160475}'; // 9.0.30729.17: http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2
329 VS2008_SP1_X86_ATL_SEC = '{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}'; // 9.0.30729.4148: http://www.microsoft.com/downloads/details.aspx?familyid=2051A0C1-C9B5-4B0A-A8F5-770A549FD78C
330 // These updates currently don't have redist links:
331 // 9.0.30729.5026:
332 // 9.0.30729.5570:
333 // 9.0.30729.6161: http://support.microsoft.com/kb/2538243
334
335 INSTALLSTATE_INVALIDARG = -2; // An invalid parameter was passed to the function
336 INSTALLSTATE_UNKNOWN = -1; // The product is not advertised or installed
337 INSTALLSTATE_ADVERTISED = 1; // The product is advertised but not installed
338 INSTALLSTATE_ABSENT = 2; // The product is installed for a different user
339 INSTALLSTATE_DEFAULT = 5; // The product is installed for the current user
340
341function MsiQueryProductState(ProductCode: String): Integer;
342 external 'MsiQueryProductStateA@msi.dll stdcall';
343
344function IsProductCodeInstalled(ProductUUID: String): Boolean;
345begin
346 Result := (MsiQueryProductState(ProductUUID) = INSTALLSTATE_DEFAULT);
347end;
348
349function Needs2005Redist(): Boolean;
350begin
351 Result:= (IsProductCodeInstalled(VS2005_SP1_X86_MFC_SEC) = FALSE);
352 if (Result = TRUE) then begin
353 Log('User system needs VS 2005 SP1 x86 Redistributable, installing.');
354 end else begin
355 Log('User already has VS 2005 SP1 x86 Redistributable installed, skipping.');
356 end
357end;
358
359function Needs2008Redist(): Boolean;
360begin
361 Result := (IsProductCodeInstalled(VS2008_SP1_X86_ATL_SEC) = FALSE);
362 if (Result = TRUE) then begin
363 Log('User system needs VS 2008 SP1 x86 Redistributable, installing.');
364 end else begin
365 Log('User already has VS 2008 SP1 x86 Redistributable installed, skipping.');
366 end
367end;
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index 19344d5..6bf9dc7 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -166,6 +166,10 @@ class ViewerManifest(LLManifest):
166 return self.args['standalone'] == "ON" 166 return self.args['standalone'] == "ON"
167 def debug(self): 167 def debug(self):
168 return self.args['buildtype'] == "DEBUG" 168 return self.args['buildtype'] == "DEBUG"
169 def buildtype(self):
170 return self.args['buildtype']
171 def configuration(self):
172 return self.args['configuration']
169 def grid(self): 173 def grid(self):
170 return self.args['grid'] 174 return self.args['grid']
171 def channel(self): 175 def channel(self):
@@ -176,6 +180,11 @@ class ViewerManifest(LLManifest):
176 return "".join(self.channel_unique().split()) 180 return "".join(self.channel_unique().split())
177 def channel_lowerword(self): 181 def channel_lowerword(self):
178 return self.channel_oneword().lower() 182 return self.channel_oneword().lower()
183 def viewer_branding_id(self):
184 return self.args['branding_id']
185 def installer_prefix(self):
186 mapping={"imprudence":'Imprudence-'}
187 return mapping[self.viewer_branding_id()]
179 188
180 def flags_list(self): 189 def flags_list(self):
181 """ Convenience function that returns the command-line flags 190 """ Convenience function that returns the command-line flags
@@ -443,145 +452,31 @@ class WindowsManifest(ViewerManifest):
443 # self.end_prefix() 452 # self.end_prefix()
444 453
445 454
446 def nsi_file_commands(self, install=True):
447 def wpath(path):
448 if path.endswith('/') or path.endswith(os.path.sep):
449 path = path[:-1]
450 path = path.replace('/', '\\')
451 return path
452
453 result = ""
454 dest_files = [pair[1] for pair in self.file_list if pair[0] and os.path.isfile(pair[1])]
455 # sort deepest hierarchy first
456 dest_files.sort(lambda a,b: cmp(a.count(os.path.sep),b.count(os.path.sep)) or cmp(a,b))
457 dest_files.reverse()
458 out_path = None
459 for pkg_file in dest_files:
460 rel_file = os.path.normpath(pkg_file.replace(self.get_dst_prefix()+os.path.sep,''))
461 installed_dir = wpath(os.path.join('$INSTDIR', os.path.dirname(rel_file)))
462 pkg_file = wpath(os.path.normpath(pkg_file))
463 if installed_dir != out_path:
464 if install:
465 out_path = installed_dir
466 result += 'SetOutPath ' + out_path + '\n'
467 if install:
468 result += 'File ' + pkg_file + '\n'
469 else:
470 result += 'Delete ' + wpath(os.path.join('$INSTDIR', rel_file)) + '\n'
471 # at the end of a delete, just rmdir all the directories
472 if not install:
473 deleted_file_dirs = [os.path.dirname(pair[1].replace(self.get_dst_prefix()+os.path.sep,'')) for pair in self.file_list]
474 # find all ancestors so that we don't skip any dirs that happened to have no non-dir children
475 deleted_dirs = []
476 for d in deleted_file_dirs:
477 deleted_dirs.extend(path_ancestors(d))
478 # sort deepest hierarchy first
479 deleted_dirs.sort(lambda a,b: cmp(a.count(os.path.sep),b.count(os.path.sep)) or cmp(a,b))
480 deleted_dirs.reverse()
481 prev = None
482 for d in deleted_dirs:
483 if d != prev: # skip duplicates
484 result += 'RMDir ' + wpath(os.path.join('$INSTDIR', os.path.normpath(d))) + '\n'
485 prev = d
486
487 return result
488
489 def package_finish(self): 455 def package_finish(self):
490 # a standard map of strings for replacing in the templates 456 # InWorldz uses Inno Setup to compile its installers. This process creates a new installer from a template
491 substitution_strings = { 457 # See http://www.jrsoftware.org/isinfo.php
492 'version' : '.'.join(self.args['version']).replace(' ', '_'), 458 sse_string = ''
493 'version_short' : '.'.join(self.args['version'][:-1]).replace(' ', '_'), 459 if self.configuration().lower() == "releasesse2":
494 'version_dashes' : '-'.join(self.args['version']).replace(' ', '_'), 460 sse_string = ".SSE2"
495 'final_exe' : self.final_exe(), 461
496 'grid':self.args['grid'], 462 version = '.'.join(self.args['version'])
497 'grid_caps':self.args['grid'].upper(), 463 base_filename = self.installer_prefix() + version + sse_string
498 # escape quotes becase NSIS doesn't handle them well 464 app_name = self.channel()
499 'flags':self.flags_list().replace('"', '$\\"'), 465 app_ver_name="%s %s" % (app_name, version)
500 'channel':self.channel(), 466
501 'channel_oneword':self.channel_oneword(), 467 new_script = base_filename + ".iss"
502 'channel_unique':self.channel_unique(), 468 self.replace_in("installers/windows/inworldz_installer_template.iss", new_script, {
503 } 469 "%%VERSION%%":version,
504 470 "%%INSTALLERFILENAME%%":base_filename,
505 version_vars = """ 471 "%%PACKAGEFILES%%":self.args['dest'],
506 !define INSTEXE "%(final_exe)s" 472 "%%APPNAME%%":app_name,
507 !define VERSION "%(version_short)s" 473 "%%APPVERNAME%%":app_ver_name,
508 !define VERSION_LONG "%(version)s" 474 })
509 !define VERSION_DASHES "%(version_dashes)s" 475
510 """ % substitution_strings 476 self.created_path(self.dst_path_of(new_script))
511 if self.default_channel(): 477 self.package_file = base_filename + ".exe"
512 if self.default_grid(): 478
513 # release viewer 479 print "New ISS script created at " + self.args['dest'] + "\\" + new_script
514 installer_file = "Imprudence_%(version_dashes)s_Setup.exe"
515 grid_vars_template = """
516 OutFile "%(installer_file)s"
517 !define INSTFLAGS "%(flags)s"
518 !define INSTNAME "Imprudence"
519 !define SHORTCUT "Imprudence"
520 !define URLNAME "imprudence"
521 Caption "Imprudence ${VERSION}"
522 """
523 else:
524 # beta grid viewer
525 installer_file = "Imprudence_%(version_dashes)s_(%(grid_caps)s)_Setup.exe"
526 grid_vars_template = """
527 OutFile "%(installer_file)s"
528 !define INSTFLAGS "%(flags)s"
529 !define INSTNAME "Imprudence%(grid_caps)s"
530 !define SHORTCUT "Imprudence (%(grid_caps)s)"
531 !define URLNAME "imprudence%(grid)s"
532 !define UNINSTALL_SETTINGS 1
533 Caption "Imprudence %(grid)s ${VERSION}"
534 """
535 else:
536 # some other channel on some grid
537 installer_file = "Imprudence_%(version_dashes)s_%(channel_oneword)s_Setup.exe"
538 grid_vars_template = """
539 OutFile "%(installer_file)s"
540 !define INSTFLAGS "%(flags)s"
541 !define INSTNAME "Imprudence%(channel_oneword)s"
542 !define SHORTCUT "%(channel)s"
543 !define URLNAME "imprudence"
544 !define UNINSTALL_SETTINGS 1
545 Caption "%(channel)s ${VERSION}"
546 """
547 if 'installer_name' in self.args:
548 installer_file = self.args['installer_name']
549 else:
550 installer_file = installer_file % substitution_strings
551 substitution_strings['installer_file'] = installer_file
552
553 tempfile = "imprudence_setup_tmp.nsi"
554 # the following replaces strings in the nsi template
555 # it also does python-style % substitution
556 self.replace_in("installers/windows/installer_template.nsi", tempfile, {
557 "%%VERSION%%":version_vars,
558 "%%SOURCE%%":self.get_src_prefix(),
559 "%%GRID_VARS%%":grid_vars_template % substitution_strings,
560 "%%INSTALL_FILES%%":self.nsi_file_commands(True),
561 "%%DELETE_FILES%%":self.nsi_file_commands(False)})
562
563 # We use the Unicode version of NSIS, available from
564 # http://www.scratchpaper.com/
565 try:
566 import _winreg as reg
567 NSIS_path = reg.QueryValue(reg.HKEY_LOCAL_MACHINE, r"SOFTWARE\NSIS\Unicode") + '\\makensis.exe'
568 self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile))
569 except:
570 try:
571 NSIS_path = os.environ['ProgramFiles'] + '\\NSIS\\Unicode\\makensis.exe'
572 self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile))
573 except:
574 NSIS_path = os.environ['ProgramFiles(X86)'] + '\\NSIS\\Unicode\\makensis.exe'
575 self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile))
576 # self.remove(self.dst_path_of(tempfile))
577 # If we're on a build machine, sign the code using our Authenticode certificate. JC
578 sign_py = 'C:\\buildscripts\\code-signing\\sign.py'
579 if os.path.exists(sign_py):
580 self.run_command(sign_py + ' ' + self.dst_path_of(installer_file))
581 else:
582 print "Skipping code signing,", sign_py, "does not exist"
583 self.created_path(self.dst_path_of(installer_file))
584 self.package_file = installer_file
585 480
586 481
587class DarwinManifest(ViewerManifest): 482class DarwinManifest(ViewerManifest):
@@ -832,20 +727,17 @@ class DarwinManifest(ViewerManifest):
832 if not self.default_channel(): 727 if not self.default_channel():
833 channel_standin = self.channel() 728 channel_standin = self.channel()
834 729
835 imagename="Imprudence_" + '_'.join(self.args['version']) 730 imagename=self.installer_prefix() + '-'.join(self.args['version'])
836
837 # MBW -- If the mounted volume name changes, it breaks the .DS_Store's background image and icon positioning.
838 # If we really need differently named volumes, we'll need to create multiple DS_Store file images, or use some other trick.
839 731
840 volname="Imprudence Installer" # DO NOT CHANGE without understanding comment above 732 volname="Imprudence Installer" # DO NOT CHANGE without understanding comment above
841 733
842 if self.default_channel(): 734 if self.default_channel():
843 if not self.default_grid(): 735 if not self.default_grid():
844 # beta case 736 # beta case
845 imagename = imagename + '_' + self.args['grid'].upper() 737 imagename = imagename + '-' + self.args['grid'].upper()
846 else: 738 else:
847 # first look, etc 739 # first look, etc
848 imagename = imagename + '_' + self.channel_oneword().upper() 740 imagename = imagename + '-' + self.channel_oneword().upper()
849 741
850 sparsename = imagename + ".sparseimage" 742 sparsename = imagename + ".sparseimage"
851 finalname = imagename + ".dmg" 743 finalname = imagename + ".dmg"