Sql server 2005 使用本地服务器InstanceName无人参与安装SQL Server 2005 Express

Sql server 2005 使用本地服务器InstanceName无人参与安装SQL Server 2005 Express,sql-server-2005,windows-installer,inno-setup,Sql Server 2005,Windows Installer,Inno Setup,我正在使用InnoSetup创建安装包并安装SQL Server 2005 Express。下面是出现在“我的跑步”部分的代码: Filename: "{app}\SQL Server 2005 Express\SQLEXPR.exe" ; Parameters: "-q /norebootchk /qn reboot=ReallySuppress addlocal=all INSTANCENAME=(LOCAL) SCCCHECKLEVEL=IncompatibleComponents:1;M

我正在使用InnoSetup创建安装包并安装SQL Server 2005 Express。下面是出现在“我的跑步”部分的代码:

Filename: "{app}\SQL Server 2005 Express\SQLEXPR.exe" ; Parameters: "-q /norebootchk /qn reboot=ReallySuppress addlocal=all INSTANCENAME=(LOCAL) SCCCHECKLEVEL=IncompatibleComponents:1;MDAC25Version:0 ERRORREPORTING=2 SQLAUTOSTART=1 SAPWD=passwordhere SECURITYMODE=SQL"; WorkingDir: {app}\SQL Server 2005 Express; StatusMsg: Installing Microsoft SQL Server 2005 Express... Please Wait...;Check:SQLVerifyInstall
我试图完成的是安装SQL Server包,但只让实例名称本身引用机器名称,而不做其他任何事情。我接收的是一个命名实例,而不是本地实例,如MachineName\SQLEXPRESS,这不是我想要接收的


我需要一个本地实例,而不是一个命名实例,因为我的代码的编写方式能够安装并与相关数据库通信。相信我,如果这个安装包不是以前使用MSDE安装程序的包的替代品,我会改变它。我必须能够支持这两个通过代码。欢迎您提出任何建议,但我的主要目标是提供一种清晰简洁的方法,让安装程序只使用机器名进行安静安装。谢谢你的帮助和支持

下面是在代码中设置InstanceName的示例:

    ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

    [setup]
    ; NOTE: The value of AppId uniquely identifies this application.
    ; Do not use the same AppId value in installers for other applications.
    ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
    AppId={{4D044938-6185-4729-8EB9-33CFA5D51993}
    AppName=My Program
    AppVerName=My Program 1.5
    AppPublisher=My Company, Inc.
    AppPublisherURL=http://www.example.com/
    AppSupportURL=http://www.example.com/
    AppUpdatesURL=http://www.example.com/
    DefaultDirName={pf}\My Program
    DefaultGroupName=My Program
    OutputBaseFilename = setup
    Compression = lzma
    SolidCompression = yes

    [Languages]
    Name: "english"; MessagesFile: "compiler:Default.isl"

    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

    [Files]
    Source: "SQLEXPR.exe"; DestDir: "{app}"; Flags: ignoreversion
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files

    [Run]
    Filename: "{app}\SQLEXPR.exe" ; Parameters: "INSTANCENAME={code:MyInstanceName|'SQLEXPRESS'}";


    [Code]
    function MyInstanceName(Param: String): String;
    begin
      //This sets the value to \MSSQLSERVER.
      Result := ExpandConstant('{computername}') + '\MSSQLSERVER';
    end;

但是,从我在网上看到的情况来看,如果希望它成为机器上的默认实例,那么实例名称应该是MSSQLSERVER

我将尝试一下,并报告结果。谢谢你提供的信息。实际上,这段代码没有做任何不同的事情来阻止实例名的输入,而是通过你的代码块来定义它。我正在寻找的是,在一天结束时,只使用机器名作为SQL Server名称的可能性。如果我浏览GUI安装程序,这是可能的。但是,从命令行运行静默安装来重现这些结果似乎是一个问题。如果您的代码没有对我的问题进行真正的修复,则轮询计算机名并添加实例名的方法确实纠正了我后来遇到的一个问题。我相信最终的答案是这是不可能实现的。谢谢你的帮助!