Click here to Skip to main content
15,867,568 members
Please Sign up or sign in to vote.
1.33/5 (3 votes)
See more:
Well friends i created a commercial project with mdf files(Sql server 2008 files)
i installed two versions of vs (2010,2012). after installing vs 2012, i detached my mdf and added it to another project in vs 2010, but automatically (i don't know why!) my mdf file changed from sqlexpress to localdb\ version 11.0 and i had very big important data in it and now i can't use this mdf with SQL express 2008! what should i do? i don't know how to create install perquisite file for sql local db 2012. I don't know how to easily make a setup with vs 2012 but i knew how to do this with vs 2010, it was easy to install sql express with setup in vs 2010, but it is worst with instalshield!, can you please help me here, i'm stucked in the mud. i don't know what to do. should i remove my windows and install it again. cause i don't want sql server 2012!!!
Posted
Updated 15-Jan-13 11:22am
v3
Comments
Sergey Alexandrovich Kryukov 15-Jan-13 17:06pm    
Rude. You should not right in this style, no matter how frustrated you are. And I already warned you for self-accepting some "answers". Please, keep to civilized or at least professional ways of doing things.
—SA
F.moghaddampoor 15-Jan-13 17:11pm    
Hello Dear Sergey
I didn't know the rules here!
Well i don't know you so much, but you may be a VIP.
How ever i should tell you sorry if i annoyed you, But my questions are really professionally asked and it seems awkward to just be punished for something like this, and well i accepted those answers cause they were right, i don't know why you are angry with me, pal, take it easy dear <3
OriginalGriff 15-Jan-13 17:21pm    
I have to agree with SA your language was indeed unprofessional and unnecessary. I do not think his tone was angry, it seemed informative and polite - certainly more polite than your original subject line.
Would you use such language in a business letter?
So why would you assume it to be professional to use it when addressing people you do not know, but want help from?
F.moghaddampoor 15-Jan-13 17:24pm    
Dear Original i may need some lessons from you, but really are we living in 2013. I'm pretty shocked here. How old are you pals? I'm 23.
OriginalGriff 15-Jan-13 17:43pm    
We are indeed living in 2013, but that doesn't mean that inappropriate swearing is either helpful or necessary. I would suspect that you did it either because you didn't think about it, or you wanted to stand out. But if SHOUTING is rude on the net (and netiquette says it is) then surely swearing is even more rude and liable to offend?
And you will definitely find huge numbers of people who will take serious offence to you SHOUTING at them!

Would you start a conversation with your doctor by swearing at him?

1 solution

I find my answer:
first we create an exe file that installs sql server local db 2012. because its indeed small size rather than sql server 2008.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.IO;
using System.Configuration.Install;
using System.Diagnostics;
 
namespace EXE
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            bool instalResult = false;
            timer1.Enabled = true;
            string strResult = "n";
            strResult=fncCheckRegistry();
            bool is64 = CheckCpuArcitecture();
            string appPath = Path.GetDirectoryName(Application.ExecutablePath);
            string strMsix86FileName = appPath + @"\x86\SqlLocaLDB.msi";
            string strMsix64FileName = appPath + @"\x64\SqlLocalDB_64.msi";
            //

            if (strResult != "y")
            {
                if (is64 == false)
                {
                    instalResult=fncInstal32(strMsix86FileName);
                }
            }
            if (strResult != "y")
            {
                if (is64 == true)
                {
                    instalResult = fncInstal32(strMsix64FileName);
                }
            }
            if (instalResult) timer1.Enabled = false;
            this.Close();
        }
        //
        public bool fncInstal32(string sMSIPath)
        {
            try
            {
                Console.WriteLine("Starting to install application");
                Process process = new Process();
                process.StartInfo.FileName = "msiexec.exe";
                process.StartInfo.Arguments = string.Format(" /qf /i \"{0}\" ALLUSERS=1  IACCEPTSQLNCLILICENSETERMS=YES", sMSIPath);
                process.Start();
                process.WaitForExit();
                Console.WriteLine("Application installed successfully!");
                return true; //Return True if process ended successfully
            }
            catch
            {
                Console.WriteLine("There was a problem installing the application!");
                return false;  //Return False if process ended unsuccessfully
            }
        }
        public bool CheckCpuArcitecture()
        {
            bool is64 = System.Environment.Is64BitOperatingSystem;
            return is64;
        }
        //
        public string fncCheckRegistry()
        {
            string strResult = "n";
 
            using (RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server 2012 Redist\MSSQL11E.LOCALDB\1033\CurrentVersion"))
                if (Key != null)
                {
 
                    strResult= "y";
                }
                else
                {
                    strResult= "n";
                }
 
            return strResult;
        }
        bool x = false;
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (progressBar1.Value==100) x=true;
            if(!x) progressBar1.Value++;
            if (progressBar1.Value==0) x=false;
            if(x) progressBar1.Value--;
        }
    }
}

This checks cpu Arcitecture and if my msi is installed before.
the problem begins here.
I used this project as an exe in custom actions in a another setup project.
in the second setup project i install .net framework 4 and windows installer.
but i added custom action in the commit part of the setup.
So after the first installation finished(not completely the finish button is not clicked) the second setup that install sql server will begin, but how unlucky i am after two days of thinking on my problem it warns me about having two setup working together!!!
What should i do friends? do you have any suggestion?
How can i close the base uninstaller at the end of installation and open another process?
wow i find the answer her too:
I have find my answer:

Well we create an installer class and we write this in it:
C#
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;

namespace OpenWeb
{
    [RunInstaller(true)]
 
    public partial class Installer1 : System.Configuration.Install.Installer
    {
        [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);
        }
 
        [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);
            System.Diagnostics.Process.Start(Context.Parameters["TARGETDIR"].ToString() + "Exe.exe");
            // Very important! Removes all those nasty temp files.
            base.Dispose();
        }
 
        [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
        public override void Rollback(IDictionary savedState)
        {
            base.Rollback(savedState);
        }
 
        [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
        public override void Uninstall(IDictionary savedState)
        {
            base.Uninstall(savedState);
        }
 
        public Installer1()
        {
            InitializeComponent();
        }
    }
}

then we create our setup and we add our exe file and we add the installer class by adding primary output.
now we add custom action in commit and install by adding primary output there too.
now we build our setup.
Enjoy
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900