1

What I want is get the version that is on the primary output keyoutput properties and rename it from myapp.msi to myapp-v1.0.15.45.msi

enter image description here

in-vs-setup-project-output-filename I know how to query the msi by using the code I found in this link, here is the code. How can I do want I want using a similar code snippet?

 static string GetMsiProperty(string msiFile, string property)
    {
        string retVal = string.Empty;

        // Create an Installer instance  
        Type classType = Type.GetTypeFromProgID("WindowsInstaller.Installer");
        Object installerObj = Activator.CreateInstance(classType);
        Installer installer = installerObj as Installer;

        // Open the msi file for reading  
        // 0 - Read, 1 - Read/Write  
        Database database = installer.OpenDatabase(msiFile, 0);

        // Fetch the requested property  
        string sql = String.Format("SELECT Value FROM Property WHERE Property='{0}'", property);
        View view = database.OpenView(sql);
        view.Execute(null);

        // Read in the fetched record  
        Record record = view.Fetch();

        while (record != null)
        {
            Console.WriteLine(record.get_StringData(0) + '=' + record.get_StringData(1) + '=' + record.get_StringData(2) + '=' + record.get_StringData(3));
            record = view.Fetch();
        }
        view.Close();
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(view);
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(database);

        return retVal;
    }
Community
  • 1
  • 1
Victor A Chavez
  • 181
  • 1
  • 19

1 Answers1

0

It's not clear what you've tried and if you've run that code at all, but the shortest answer is that you call that code and ask for the ProductVersion property.

ProductVersion property

PhilDW
  • 20,260
  • 1
  • 18
  • 28