Asked  7 Months ago    Answers:  5   Viewed   35 times

I want to extract the MSI of an EXE setup to publish over a network.

For example, using Universal Extractor, but it doesn't work for Java Runtime Environment.

 Answers

44

7-Zip should do the trick.

With it, you can extract all the files inside the EXE (thus, also an MSI file).

Although you can do it with 7-Zip, the better way is the administrative installation as pointed out by Stein ├ůsmul.

Tuesday, June 1, 2021
 
Santi
answered 7 Months ago
59
    [CustomAction]   
    public static ActionResult FillServerInstances(Session xiSession)
    {         
        xiSession.Log("Begin CustomAction");

        xiSession.Log("Opening view");
        View lView = xiSession.Database.OpenView("DELETE FROM ComboBox WHERE ComboBox.Property='DBSRVR'");
        lView.Execute();

        lView = xiSession.Database.OpenView("SELECT * FROM ComboBox");
        lView.Execute();

        int Index = 1;
        bool flag = false;
        try
        {
            foreach (DataRow dr in Microsoft.SqlServer.Management.Smo.SmoApplication.EnumAvailableSqlServers(false).Rows)
            {
                String InstanceName = dr["Name"].ToString();

                if (InstanceName.Equals(xiSession["ComputerName"] + @"" + xiSession["SQLINSTANCENAME"], StringComparison.InvariantCultureIgnoreCase))
                { flag = true; }

                Record lRecord = xiSession.Database.CreateRecord(4);
                xiSession.Log("Setting record details");
                lRecord.SetString(1, "DBSRVR");
                lRecord.SetInteger(2, Index);
                lRecord.SetString(3, InstanceName);
                lRecord.SetString(4, InstanceName);

                xiSession.Log("Adding record");
                lView.Modify(ViewModifyMode.InsertTemporary, lRecord);

                ++Index;
            }
        }
        catch (Exception ex)
        {
            logException(xiSession, ex);              
        }
        if (flag)
        {
            xiSession["DBSRVR"] = xiSession["ComputerName"].ToString() + @"" + xiSession["SQLINSTANCENAME"].ToString();
        }

        lView.Close();

        xiSession.Log("Closing view");
        lView.Close();
        return ActionResult.Success;       
    }
Tuesday, August 10, 2021
 
Joel
answered 4 Months ago
89

You need to specify the schema and default namespace for the xml:-

with xmlnamespaces (default 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
SELECT StatementId = @myDoc.value('(/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/@StatementId)[1]', 'int');

with xmlnamespaces (default 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
SELECT StatementId = @myDoc.value('(/ShowPlanXML/@TEST)[1]', 'int');
Saturday, August 14, 2021
 
Andrei Urse
answered 4 Months ago
28

You are looking for the function substr or its close relative substring:

The leading characters are straight-forward:

substr(sample, 1, 3)
[1] "TRI" "TRI" "RHO" "EUG" "BYR"

So is extracting some characters at a defined position:

substr(sample, 2, 3)
[1] "RI" "RI" "HO" "UG" "YR"

To get the trailing characters, you have two options:

substr(sample, nchar(sample)-3, nchar(sample))
[1] "IBAL" "ISTO" "OSTO" "GFRI" "RRAT"

substring(sample, nchar(sample)-3)
[1] "IBAL" "ISTO" "OSTO" "GFRI" "RRAT"

And your final "complicated" question:

characters <- function(x, pos){
  sapply(x, function(x)
    paste(sapply(pos, function(i)substr(x, i, i)), collapse=""))
}
characters(sample, c(1,3,5))
TRIBAL TRISTO RHOSTO EUGFRI BYRRAT 
 "TIA"  "TIT"  "ROT"  "EGR"  "BRA" 
Thursday, August 19, 2021
 
christina
answered 4 Months ago
19

Feature selection dialog uses SelectionTree control, a built-in control of the Windows Installer.

You can control which installation options are displayed for a feature using Attributes column of the Feature Table.

Feature element of WiX has four properties which control how a feature can be installed:

  • Absent: allow / disallow
  • AllowAdvertise: no / system / yes
  • InstallDefault: followParent / local / source
  • TypicalDefault: advertise / install

Component table also controls whether the component can be run from source or not. The Component element has Location property:

  • local
    Prevents the component from running from the source or the network (this is the default behavior if this attribute is not set).
  • source
    Enforces that the component can only be run from the source (it cannot be run from the user's computer).
  • either
    Allows the component to run from source or locally.

So to remove the option to run from the network, set Location property of your components to local.

You cannot remove Entire feature will be installed on local hard drive from the options. It is displayed only when there are subfeatures and enables installation of the subfeatures as well as the feature itself as opposed from Will be installed on local hard drive which installs only the selected features and does not affect subfeatures.

If the subfeatures are always installed with the parent, you can try to set InstallDefault attribute of the subfeatures to followParent.

Thursday, September 16, 2021
 
Bart
answered 3 Months ago
Only authorized users can answer the question. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :
 
Share