2010-05-21 4 views
0

Я создаю пакет установки с помощью InnoSetup и устанавливаю SQL Server 2005 Express. Вот код ниже, который появляется в моем RUN разделе:Автоматическая установка SQL Server 2005 Express с LOCAL Server InstanceName

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. Я должен иметь возможность поддерживать оба кода. Любые предложения приветствуются, но ясный и сжатый способ заставить установщика тихо установить, используя только имя машины, - моя главная цель. Спасибо за помощь и поддержку!

ответ

1

Вот пример для установки 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, если вы хотите, чтобы быть экземпляром по умолчанию на машине ,

+0

Я дам вам попытку и сообщит результат. Спасибо за информацию. – Jeff

+0

На самом деле этот код не делает ничего другого, чтобы сохранить имя экземпляра, но вместо этого определяет его кодом. Я ищу возможность иметь только имя Machine в качестве имени SQL Server в конце дня. Если я пройду через установщик GUI, это возможно. Но воспроизведение этих результатов при выполнении тихой установки из командной строки, похоже, является проблемой. – Jeff

+0

Где вы код не привел к истинному исправлению моего вопроса, метод опроса имени компьютера и добавление имени экземпляра исправил проблему, с которой я столкнулся позже. Я считаю, что окончательный ответ на этот вопрос заключается в том, что этого достичь невозможно. Спасибо за твою помощь! – Jeff

Смежные вопросы