feat: implement Installer Studio MSIX authoring workflow

Add the shared Rust engine, Tauri UI and CLI, registry authoring, developer signing, branded start screen and .isproj persistence. Remove the unused project ID.

Validation: frontend build and tests, Rust workspace tests, native build and real Windows SDK package generation passed.

Closes #2
Closes #3
Closes #4
Closes #5
Closes #6
Closes #7
This commit is contained in:
jychoi4 committed 2026-11-02 15:12:00 +09:00
1 parent 24b624301c
commit 388e1e3327
103 files changed
+13328 -5

No files matched your search

+6
View File
@@ -0,0 +1,6 @@
{
"recommendations": [
"ms-vscode.cpptools",
"rust-lang.rust-analyzer"
]
}
+84
View File
@@ -0,0 +1,84 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "MSIX Studio: Desktop (Rust)",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/src/target/vscode/debug/msix-studio.exe",
"cwd": "${workspaceFolder}/src/apps/desktop/src-tauri",
"args": [],
"environment": [{ "name": "RUST_BACKTRACE", "value": "1" }],
"console": "integratedTerminal",
"stopAtEntry": false,
"preLaunchTask": "MSIX: build desktop (debug)"
},
{
"name": "MSIX CLI: Schema",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/src/target/vscode/debug/package-builder.exe",
"cwd": "${workspaceFolder}/src",
"args": ["schema"],
"environment": [{ "name": "RUST_BACKTRACE", "value": "1" }],
"console": "integratedTerminal",
"stopAtEntry": false,
"preLaunchTask": "MSIX: build CLI (debug)"
},
{
"name": "MSIX CLI: Validate project",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/src/target/vscode/debug/package-builder.exe",
"cwd": "${workspaceFolder}/src",
"args": ["validate", "--project", "${input:projectPath}"],
"environment": [{ "name": "RUST_BACKTRACE", "value": "1" }],
"console": "integratedTerminal",
"stopAtEntry": false,
"preLaunchTask": "MSIX: build CLI (debug)"
},
{
"name": "MSIX CLI: Plan release",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/src/target/vscode/debug/package-builder.exe",
"cwd": "${workspaceFolder}/src",
"args": ["plan", "release", "--project", "${input:projectPath}", "--target", "${input:targetId}"],
"environment": [{ "name": "RUST_BACKTRACE", "value": "1" }],
"console": "integratedTerminal",
"stopAtEntry": false,
"preLaunchTask": "MSIX: build CLI (debug)"
},
{
"name": "MSIX CLI: Build plan",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/src/target/vscode/debug/package-builder.exe",
"cwd": "${workspaceFolder}/src",
"args": ["build", "--project", "${input:projectPath}", "--plan-id", "${input:planId}"],
"environment": [{ "name": "RUST_BACKTRACE", "value": "1" }],
"console": "integratedTerminal",
"stopAtEntry": false,
"preLaunchTask": "MSIX: build CLI (debug)"
}
],
"inputs": [
{
"id": "projectPath",
"type": "promptString",
"description": "프로젝트 JSON 경로 (절대 경로 또는 src 기준 상대 경로, 따옴표 없이 입력)",
"default": "fixtures/InstallerProject.isproj"
},
{
"id": "targetId",
"type": "promptString",
"description": "프로젝트에 정의된 출력 대상 ID",
"default": "msix-direct"
},
{
"id": "planId",
"type": "promptString",
"description": "Plan release 결과의 id (실행하지 않은 새 계획의 UUID)"
}
]
}
+8
View File
@@ -0,0 +1,8 @@
{
"rust-analyzer.linkedProjects": ["src/Cargo.toml"],
"files.watcherExclude": {
"**/target/**": true,
"**/node_modules/**": true,
"**/.work/**": true
}
}
+58
View File
@@ -0,0 +1,58 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "MSIX: install frontend dependencies",
"type": "shell",
"command": "npm.cmd",
"args": ["ci", "--no-audit", "--no-fund"],
"options": {
"cwd": "${workspaceFolder}/src/apps/desktop",
"shell": { "executable": "cmd.exe", "args": ["/d", "/c"] }
},
"problemMatcher": []
},
{
"label": "MSIX: build frontend",
"type": "shell",
"command": "npm.cmd",
"args": ["run", "build"],
"options": {
"cwd": "${workspaceFolder}/src/apps/desktop",
"shell": { "executable": "cmd.exe", "args": ["/d", "/c"] }
},
"dependsOn": "MSIX: install frontend dependencies",
"dependsOrder": "sequence",
"problemMatcher": []
},
{
"label": "MSIX: build desktop (debug)",
"type": "process",
"command": "cargo",
"args": ["build", "--locked", "-p", "msix-studio", "--features", "custom-protocol", "--target-dir", "target/vscode"],
"options": { "cwd": "${workspaceFolder}/src" },
"dependsOn": "MSIX: build frontend",
"dependsOrder": "sequence",
"problemMatcher": [],
"group": { "kind": "build", "isDefault": true }
},
{
"label": "MSIX: build CLI (debug)",
"type": "process",
"command": "cargo",
"args": ["build", "--locked", "-p", "package-builder", "--target-dir", "target/vscode"],
"options": { "cwd": "${workspaceFolder}/src" },
"problemMatcher": [],
"group": "build"
},
{
"label": "MSIX: test Rust",
"type": "process",
"command": "cargo",
"args": ["test", "--locked", "--workspace", "--target-dir", "target/vscode"],
"options": { "cwd": "${workspaceFolder}/src" },
"problemMatcher": [],
"group": { "kind": "test", "isDefault": true }
}
]
}