[virt-tools-list] [PATCH] Add desktop profile for Windows
Fabiano Fidêncio
fabiano at fidencio.org
Fri Aug 17 02:40:27 UTC 2012
To create an user and set their avatar, we need to create 2 new files,
that will be used in older Windows.
(http://bugzilla-attachments.gnome.org/attachment.cgi?id=214681)
Was discussed in the ML about don't create this files and put all
information in only one script, separating each file in one template, as
suggested in:
https://www.redhat.com/archives/virt-tools-list/2012-June/msg00078.html
In the implementation time, a limitation occurred, and I realized that
I was doing the things in the wrong way. (if there is 1 script for all
the files and _generate*() gives you 1 file as output, how we could
generate different files from the unique file?) So, I would like to go
back with the first implementation, creating different files for each
file used by windows xp (e. g.)
---
data/install-scripts/Makefile.am | 2 +
data/install-scripts/windows-cmd.xml | 28 ++++++++++++
data/install-scripts/windows-reg.xml | 27 ++++++++++++
data/install-scripts/windows-sif.xml | 82 +++++++++++++++++++++++++++++++++++-
data/oses/windows.xml | 20 +++++++--
tools/osinfo-install-script.c | 46 +++++++++-----------
6 files changed, 175 insertions(+), 30 deletions(-)
create mode 100644 data/install-scripts/windows-cmd.xml
create mode 100644 data/install-scripts/windows-reg.xml
diff --git a/data/install-scripts/Makefile.am b/data/install-scripts/Makefile.am
index 002a884..cb24e09 100644
--- a/data/install-scripts/Makefile.am
+++ b/data/install-scripts/Makefile.am
@@ -3,6 +3,8 @@ databasedir = $(pkgdatadir)/db/install-scripts/
database_DATA = \
fedora.xml \
windows-sif.xml \
+ windows-cmd.xml \
+ windows-reg.xml \
windows-unattend.xml \
$(NULL)
diff --git a/data/install-scripts/windows-cmd.xml b/data/install-scripts/windows-cmd.xml
new file mode 100644
index 0000000..28a9c0d
--- /dev/null
+++ b/data/install-scripts/windows-cmd.xml
@@ -0,0 +1,28 @@
+<libosinfo version="0.0.1">
+ <!-- DESKTOP PROFILE -->
+ <install-script id='http://microsoft.com/windows/cmd/desktop'>
+ <profile>desktop</profile>
+ <config>
+ <param name="admin-password" policy="optional"/>
+ <param name="user-realname" policy="required"/>
+ </config>
+ <template filename="windows.cmd">
+ <xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:output method="text"/>
+
+ <xsl:template match="/install-script-config">
+sc config TlntSvr start= auto
+net user <xsl:value-of select="config/user-realname"/> <xsl:value-of select="config/admin-password"/> /add /passwordreq:no
+net localgroup administrators <xsl:value-of select="config/user-realname"/> /add
+net accounts /maxpwage:unlimited
+copy a:\<xsl:value-of select="config/user-realname"/>.bmp "c:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures"
+REGEDIT /S a:\windows.reg
+EXIT
+ </xsl:template>
+ </xsl:stylesheet>
+ </template>
+ </install-script>
+</libosinfo>
diff --git a/data/install-scripts/windows-reg.xml b/data/install-scripts/windows-reg.xml
new file mode 100644
index 0000000..afc285d
--- /dev/null
+++ b/data/install-scripts/windows-reg.xml
@@ -0,0 +1,27 @@
+<libosinfo version="0.0.1">
+ <!-- DESKTOP PROFILE -->
+ <install-script id='http://microsoft.com/windows/reg/desktop'>
+ <profile>desktop</profile>
+ <config>
+ <param name="admin-password" policy="optional"/>
+ <param name="user-realname" policy="required"/>
+ </config>
+ <template filename="windows.reg">
+ <xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:output method="text"/>
+
+ <xsl:template match="/install-script-config">
+Windows Registry Editor Version 5.00.
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
+"DefaultUserName"="<xsl:value-of select="config/user-realname"/>"
+"DefaultPassword"="<xsl:value-of select="config/admin-password"/>"
+"AutoAdminLogon"="1"
+ </xsl:template>
+ </xsl:stylesheet>
+ </template>
+ </install-script>
+</libosinfo>
diff --git a/data/install-scripts/windows-sif.xml b/data/install-scripts/windows-sif.xml
index 77fc2c5..234bb8c 100644
--- a/data/install-scripts/windows-sif.xml
+++ b/data/install-scripts/windows-sif.xml
@@ -1,5 +1,6 @@
<libosinfo version="0.0.1">
- <install-script id='http://microsoft.com/windows/sif'>
+ <!-- JEOS PROFILE -->
+ <install-script id='http://microsoft.com/windows/sif/jeos'>
<profile>jeos</profile>
<config>
<param name="admin-password" policy="optional"/>
@@ -61,4 +62,83 @@
</xsl:stylesheet>
</template>
</install-script>
+
+ <!-- DESKTOP PROFILE -->
+ <install-script id='http://microsoft.com/windows/sif/desktop'>
+ <profile>desktop</profile>
+ <config>
+ <param name="admin-password" policy="optional"/>
+ <param name="reg-product-key" policy="required"/>
+ <param name="user-realname" policy="required"/>
+ </config>
+ <template filename="windows.sif">
+ <xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:output method="text"/>
+
+ <xsl:template match="/install-script-config">
+;SetupMgrTag
+[Data]
+ AutoPartition=1
+ MsDosInitiated="0"
+ UnattendedInstall="Yes"
+
+[Unattended]
+ UnattendMode=FullUnattended
+ OemSkipEula=Yes
+ OemPreinstall=No
+ TargetPath=\WINDOWS
+ Repartition=Yes
+ WaitForReboot="No"
+ UnattendSwitch="Yes"
+
+[GuiUnattended]
+ AdminPassword=<xsl:value-of select="config/admin-password"/>
+ EncryptedAdminPassword=NO
+ AutoLogon=Yes
+ AutoLogonCount=1
+ OEMSkipRegional=1
+ TimeZone=35
+ OemSkipWelcome=1
+
+[UserData]
+ ProductKey=<xsl:value-of select="config/reg-productkey"/>
+ FullName="<xsl:value-of select="config/user-realname"/>"
+ OrgName=""
+ ComputerName="<xsl:value-of select="config/hostname"/>"
+
+[Display]
+ BitsPerPel=16
+ Xresolution=640
+ YResolution=480
+ Vrefresh=60
+
+[LicenseFilePrintData]
+ AutoMode=PerServer
+ AutoUsers=5
+
+[RegionalSettings]
+ LanguageGroup=1
+
+[Identification]
+ JoinWorkgroup=WORKGROUP
+
+[Networking]
+ InstallDefaultComponents=Yes
+
+[SetupParams]
+ UserExecute = "a:\windows.cmd"
+
+[WindowsFirewall]
+ Profiles = WindowsFirewall.TurnOffFirewall
+
+[WindowsFirewall.TurnOffFirewall]
+ Mode = 0
+ </xsl:template>
+ </xsl:stylesheet>
+ </template>
+ </install-script>
+
</libosinfo>
diff --git a/data/oses/windows.xml b/data/oses/windows.xml
index c06f8a2..f86d1c4 100644
--- a/data/oses/windows.xml
+++ b/data/oses/windows.xml
@@ -308,7 +308,10 @@
</resources>
<installer>
- <script id='http://microsoft.com/windows/sif'/>
+ <script id='http://microsoft.com/windows/sif/jeos'/>
+ <script id='http://microsoft.com/windows/sif/desktop'/>
+ <script id='http://microsoft.com/windows/reg/desktop'/>
+ <script id='http://microsoft.com/windows/cmd/desktop'/>
</installer>
</os>
@@ -365,7 +368,10 @@
</resources>
<installer>
- <script id='http://microsoft.com/windows/sif'/>
+ <script id='http://microsoft.com/windows/sif/jeos'/>
+ <script id='http://microsoft.com/windows/sif/desktop'/>
+ <script id='http://microsoft.com/windows/reg/desktop'/>
+ <script id='http://microsoft.com/windows/cmd/desktop'/>
</installer>
</os>
@@ -430,7 +436,10 @@
</resources>
<installer>
- <script id='http://microsoft.com/windows/sif'/>
+ <script id='http://microsoft.com/windows/sif/jeos'/>
+ <script id='http://microsoft.com/windows/sif/desktop'/>
+ <script id='http://microsoft.com/windows/reg/desktop'/>
+ <script id='http://microsoft.com/windows/cmd/desktop'/>
</installer>
</os>
@@ -489,7 +498,10 @@
</resources>
<installer>
- <script id='http://microsoft.com/windows/sif'/>
+ <script id='http://microsoft.com/windows/sif/jeos'/>
+ <script id='http://microsoft.com/windows/sif/desktop'/>
+ <script id='http://microsoft.com/windows/reg/desktop'/>
+ <script id='http://microsoft.com/windows/cmd/desktop'/>
</installer>
</os>
diff --git a/tools/osinfo-install-script.c b/tools/osinfo-install-script.c
index b536153..a1316c5 100644
--- a/tools/osinfo-install-script.c
+++ b/tools/osinfo-install-script.c
@@ -111,10 +111,9 @@ static gboolean generate_script(OsinfoOs *os)
OsinfoInstallScriptList *scripts = osinfo_os_get_install_script_list(os);
OsinfoInstallScriptList *profile_scripts;
OsinfoFilter *filter;
- OsinfoInstallScript *script;
+ GList *l, *tmp;
gboolean ret = FALSE;
GError *error = NULL;
- GFile *dir = g_file_new_for_commandline_arg(output_dir ? output_dir : ".");
filter = osinfo_filter_new();
osinfo_filter_add_constraint(filter,
@@ -123,33 +122,30 @@ static gboolean generate_script(OsinfoOs *os)
OSINFO_INSTALL_SCRIPT_PROFILE_JEOS);
profile_scripts = osinfo_install_scriptlist_new_filtered(scripts,
filter);
-
- if (osinfo_list_get_length(OSINFO_LIST(profile_scripts)) != 1) {
- g_printerr("Cannot find any install script for profile '%s'\n",
- profile ? profile :
- OSINFO_INSTALL_SCRIPT_PROFILE_JEOS);
- goto cleanup;
- }
-
- script = OSINFO_INSTALL_SCRIPT(osinfo_list_get_nth(OSINFO_LIST(profile_scripts), 0));
-
- if (prefix)
- osinfo_install_script_set_output_prefix(script, prefix);
-
- if (osinfo_install_script_generate_output(script,
- os,
- config,
- dir,
- NULL,
- &error) == NULL) {
- g_printerr("Unable to generate install script: %s\n",
- error ? error->message : "unknown");
- goto cleanup;
+ l = osinfo_list_get_elements(OSINFO_LIST(profile_scripts));
+ for (tmp = l; tmp != NULL; tmp = tmp->next) {
+ OsinfoInstallScript *script = tmp->data;
+ GFile *dir = g_file_new_for_commandline_arg(output_dir ?
+ output_dir : ".");
+
+ if (prefix)
+ osinfo_install_script_set_output_prefix(script, prefix);
+
+ if (osinfo_install_script_generate_output(script,
+ os,
+ config,
+ dir,
+ NULL,
+ &error) == NULL) {
+ g_printerr("Unable to generate install script: %s\n",
+ error ? error->message : "unknown");
+ goto cleanup;
+ }
}
-
ret = TRUE;
cleanup:
+ g_list_free(l);
g_object_unref(scripts);
g_object_unref(filter);
g_object_unref(profile_scripts);
--
1.7.11.2
More information about the virt-tools-list
mailing list