2012-01-12 4 views
0

설치 프로그램을 만들 필요가있는 2006 시대 애플리케이션이 있습니다. 응용 프로그램이 제대로 작동하려면 SQL Server 인스턴스와 데이터베이스 이름을 바로 가기의 인수에 추가해야합니다.변수가 작동하지 않는 변수의 바로 가기에 인수 추가

문제점은 내 변수 값이 바로 가기의 인수를 채우지 않는다는 것입니다.

설치 로그에서 변수 값이 사용자 정의 대화 상자에서 채워지는 것을 볼 수 있습니다. 생성 된 바로 가기는 볼 수 있지만 arguements는 추가되지 않습니다.

<?define SqlServerInstance="SqlServerInstance" ?> 
<?define DatabaseName="DatabaseName" ?> 

<Component Id="LWS" Guid="0FB32FAD-83B2-4C0B-B929-C93220E4681A"> 
    <File Id='LwsEXE' Name='Lws.exe' DiskId='1' Source='..\files\lws\Lws.exe' KeyPath='yes'> 
     <Shortcut Id="startmenuLWS" Directory="ProgramMenuFolder" Name="LWS" WorkingDirectory='INSTALLDIR' Icon="LWS.ico" IconIndex="0" Advertise="yes" Arguments="[SqlServerInstance] [DatabaseName]" /> 
     <Shortcut Id="desktopLWS" Directory="DesktopFolder" Name="LWS" WorkingDirectory='INSTALLDIR' Icon="LWS.ico" IconIndex="0" Advertise="yes" Arguments="[SqlServerInstance] [DatabaseName]" /> 
    </File> 
</Component> 

<Dialog Id="DatabaseLocationDlg" Width="370" Height="270" Title="[ProductName] Database Connection [Setup]" NoMinimize="yes"> 
    <Control Id="ServerNameLabel" Type="Text" X="45" Y="73" Width="100" Height="15" TabSkip="no" Text="&amp;SQL Server Name:" /> 
    <Control Id="ServerNameEdit" Type="Edit" X="45" Y="85" Width="220" Height="18" Property="$(var.SqlServerInstance)" Text="[SqlServerInstance]" /> 
    <Control Id="DataBaseLabel" Type="Text" X="45" Y="110" Width="100" Height="15" TabSkip="no" Text="&amp;Database Name:" /> 
    <Control Id="DatabaseEdit" Type="Edit" X="45" Y="122" Width="220" Height="18" Property="$(var.DatabaseName)" Text="[DatabaseName]" /> 
    <!-- more stuff here--> 
</Dialog> 

내가 잘못하고있는 아이디어가 있습니까?

답변

2

<?define?>은 빌드시 해결되는 선행 처리기 변수를 만듭니다. 런타임 개념 인 속성을 원합니다. <Property>을 사용하고 모두 대문자 인 ID를 사용하여 공개로 설정하고 보안 속성 값을 yes로 설정하여 UI에서 설치 런타임으로 전파하십시오.

+0

감사합니다. Bob,하지만 답변이 이해가되지 않습니다. 나는 마크 다운이 정보의 일부를 제거했다고 가정합니다. –

+0

그게 전부입니다. 감사. –

관련 문제