설치합니다, 그래서 좋은
Run exe after msi installation?열기 텍스트 파일 내가 설치된 제품을 여는 MSI 설치의 마지막에 체크 박스를 추가 할 수있는 솔루션을 다음 한
지금까지. 그러나 릴리스 노트가 들어있는 간단한 텍스트 파일을 여는 다른 checkBox를 추가하고 싶습니다. 이 파일은 기본 출력과 함께 설치 프로젝트에 이미 포함되어 있습니다. 새 checkBox를 추가 할 수 있습니다. 유일한 문제는 텍스트 파일을 여는 방법입니다 :
var sql
var view
var checkboxTextForReleaseNotes = "See release notes";
var fileReleaseNotes = "ReleaseNotes.txt";
try
{
var fileIdForReleaseNotes = FindFileIdentifier(database, fileReleaseNotes);
if (!fileIdForReleaseNotes)
throw "Unable to find '" + fileReleaseNotes + "' in File table";
[ ... some actions to include another control as seen in link above ... ]
// Insert the new CheckboxReleaseNotes control
sql = "INSERT INTO `Control` (`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, `Attributes`, `Property`, `Text`, `Control_Next`, `Help`) VALUES ('FinishedForm', 'CheckboxReleaseNotes', 'CheckBox', '18', '140', '343', '12', '3', 'LAUNCH_RN', '{\\VSI_MS_Sans_Serif13.0_0_0}" + checkboxTextForReleaseNotes + "', 'CloseButton', '|')";
view = database.OpenView(sql);
view.Execute();
view.Close();
// Modify the Order of the EndDialog event of the FinishedForm to 1
sql = "SELECT `Dialog_`, `Control_`, `Event`, `Argument`, `Condition`, `Ordering` FROM `ControlEvent` WHERE `Dialog_`='FinishedForm' AND `Event`='EndDialog'";
view = database.OpenView(sql);
view.Execute();
record = view.Fetch();
record.IntegerData(6) = 1;
view.Modify(msiViewModifyReplace, record);
view.Close();
// Insert the Event to launch the release notes
sql = "INSERT INTO `ControlEvent` (`Dialog_`, `Control_`, `Event`, `Argument`, `Condition`, `Ordering`) VALUES ('FinishedForm', 'CloseButton', 'DoAction', 'OPEN_RN', 'LAUNCH_RN=1', '0')";
view = database.OpenView(sql);
view.Execute();
view.Close();
// Insert the custom action to open the release notes when finished
sql = "INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`) VALUES ('OPEN_RN', '210', '" + fileIdForReleaseNotes + "', '')";
view = database.OpenView(sql);
view.Execute();
view.Close();
database.Commit();
}
catch (e)
{
WScript.StdErr.WriteLine(e);
WScript.Quit(1);
}
내가 그 유형을 알고 " 이
http://msdn.microsoft.com/en-us/library/windows/desktop/aa372048%28v=vs.85%29.aspx
여기에 내 현재 JS 코드입니다 : 어떤 사용자 지정 작업은 내가 여기에서 볼 수 있듯이 이러한 요구에 맞게 보인다210 "사용자 정의 작업에 대한 적절한 하나가 아니지만 ... 거기에 무엇입니까? 또는 실제로 Jscript 또는 VBScript를 시작하여 실제로 진행해야합니까?
편집 : 코드 완성이 완료되었습니다. "vdproj"속성을 통해 사용자 지정 작업을 추가하려고했지만 파일이 호환되지 않기 때문에 거부합니다.
사실 WiX는 훨씬 더 많은 가능성을 제공하지만, 스레드를 위해서이 비트를 끝내려고 노력할 것입니다. 올바르게 이해하면 SQL 쿼리는 다음과 같아야하지만 작동하지 않습니다. 오류가 발생하지 않습니다. 'sql = "INSERT INTO"'CustomAction'' (''Action'','' VALUES ('OPEN_RN', '226', '', '\ "[System] start.exe \"\ "[#"+ fileIdForReleaseNotes + " ] ")"; " 소스에 대해 잘 모르겠습니다. 비어있을 수 있습니까? – tjafaas
죄송합니다. [SystemFolder]가 [System]이 아닙니다. 나는 [여기] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa370905 (v = vs.85) .aspx)에서 그 값을 얻고있었습니다. 문서 도구는 소스를 무시한다고 말합니다. 어쩌면 거기에 [SystemFolder]를두고 상황이 바뀌는 지 확인하십시오. fileIdForReleaseNotes가 올바른지 확인하십시오. Orca에서 .MSI를 열고 File 테이블을 봅니다. 원하는 것은 파일 열의 값입니다. –
[#filekey]에 대한 문서의이 부분에 문제가 생길 수도 있습니다. "[#filekey] 값은 공백으로 남으며 설치 관리자가 CostInitialize 작업, FileCost 작업 및 CostFinalize 작업을 실행할 때까지 경로로 대체되지 않습니다 . " –