Я создал приложение (C#, Windows Forms) на Visual Studio 2008, и теперь я хочу сделать установщик этого приложения. Как это может быть сделано?
Я хочу свой установщик к
Как я могу сделать это?
Необходимо найти самую длинную общую подстроку .
Если последовательности не очень длинные, я рекомендую использовать подход Тима. В противном случае это реализация Javascript алгоритма Longest common substring с динамическим программированием. Время выполнения равно O (mn), где m и n - длины 2 последовательностей соответственно.
Пример использования:
var first = "Here is a quick guide for the next time you reach for your favorite oil and some other topics";
var second = "favorite oil and some other topics can be based on something blah blah";
console.log(first.intersection(second)); // ["favorite oil and some other topic"]
Это реализация алгоритма. Он возвращает массив наиболее длинных общих подстрок. Расширен собственный класс String, поэтому метод пересечения доступен для всех последовательностей.
String.prototype.intersection = function(anotherString) {
var grid = createGrid(this.length, anotherString.length);
var longestSoFar = 0;
var matches = [];
for(var i = 0; i < this.length; i++) {
for(var j = 0; j < anotherString.length; j++) {
if(this.charAt(i) == anotherString.charAt(j)) {
if(i == 0 || j == 0) {
grid[i][j] = 1;
}
else {
grid[i][j] = grid[i-1][j-1] + 1;
}
if(grid[i][j] > longestSoFar) {
longestSoFar = grid[i][j];
matches = [];
}
if(grid[i][j] == longestSoFar) {
var match = this.substring(i - longestSoFar + 1, i);
matches.push(match);
}
}
}
}
return matches;
}
Эта вспомогательная функция также необходима для создания двумерного массива со всеми элементами, инициализируемыми для 0.
// create a 2d array
function createGrid(rows, columns) {
var grid = new Array(rows);
for(var i = 0; i < rows; i++) {
grid[i] = new Array(columns);
for(var j = 0; j < columns; j++) {
grid[i][j] = 0;
}
}
return grid;
}
-121--4268349- Если необходимо просто извлечь текстовое содержимое из pdf-файла, pdftohtml в sourceforge является эффективным. он не подходит для работы с изображениями.
-121--2064598-Вообще говоря, рекомендуется использовать установку на основе MSI в Windows. Таким образом, если вы готовы потратить немало времени, вам подойдет WiX .
Если вам нужно что-то более простое, воспользуйтесь InnoSetup .
Существует несколько методов, два из которых следующие. Предоставьте собственный установщик или проект установки.
Вот как создать собственный установщик
[RunInstaller(true)]
public class MyInstaller : Installer
{
public HelloInstaller()
: base()
{
}
public override void Commit(IDictionary mySavedState)
{
base.Commit(mySavedState);
System.IO.File.CreateText("Commit.txt");
}
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
System.IO.File.CreateText("Install.txt");
}
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
File.Delete("Commit.txt");
File.Delete("Install.txt");
}
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
File.Delete("Install.txt");
}
}
Чтобы добавить проект установки
Меню файл -> Новый -> Проект - > Другие типы проектов -> Настройка и развертывание
Задайте свойства проекта, используя окно свойств
Статья Как создать настройку пакет с использованием Visual Studio .NET предоставляет подробную информацию.